Browsergame-Muster

te one

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.255
Hi,
hoff ich bin hier im richtigen unterforum!
Hab vor ca. eineinhalb jahren mal n bissl mit html, php und mysql angefangen, was auch recht interessant war.
Seit einigen Tagen hat mich jetz das Fieber wieder gepackt und ich möchte mal endlich (was ich damals auch schon machen wollte, aber mir einfach viel zu viel programmierkentnisse gefehlt haben) ein kleines Browsergame machen.
Es soll nichts großes werden (einfach nur um die Programmier-Skills n bissl zu verbessern)

Hab nur des Problem dass ich schon ideen hab und viele davon auch umsetzten könnte, allerdings bei manchem hab ich keine ahnung wie ich des machen soll!(zB: Man kann ein Gebäude ausbauen (des is noch kein problem) aber dann soll ein countdown kommen und solang der "ausbauen"-Button verschwinden)

Deshalb wollt ich mal fragen ob vllt einer von euch mal n Browsergame gemacht hat (vllt in seiner Ausbildung oda so in der Freizeit)und mir vllt mal die dateien/datenbankstruktur geben könnte, einfach um mir mal des zeugs weng anzuschauen.
Werd auch bestimmt nicht da euer game dann hochladen und als meines verkaufn^^

Hoff mir kann jemand helfen
mfg
to

Ps: hab auch mal google befragt, aber der wollt mir nix geben!!
 
Also deine konkrete Frage lässt sich sicherlich einfach mit JavaScript lösen, einfach die visibility von dem Button weg und den Text eines passenden Elements der Zeit entsprechend ändern. Vom Prinzip her etwa so:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <title>Countdown Beispiel</title>
      <script type="text/javascript">
      function hideAndStart(rest)
      {
         document.getElementById("start").style.visibility = "hidden";
         startCountdown(rest);
      }
      
      function startCountdown(rest)
      {
         if (rest > 0)
         {
            rest--;
            document.getElementById("countdown").innerHTML = rest;
            setTimeout("startCountdown("+rest+")", 1000);
         }
         else
         {
            document.getElementById("start").style.visibility = "visible";
            document.getElementById("countdown").innerHTML = "";
         }
      }
      </script>
   </head>
   <body>
      <span id="countdown"></span>
      <input id="start" type="submit" value="countdown starten" onclick="hideAndStart(10)" />
   </body>
</html>

/edit: und für späteres aufrufen bei noch aktivem countdown eben mit php verbinden
 
Zuletzt bearbeitet:
te one schrieb:
Deshalb wollt ich mal fragen ob vllt einer von euch mal n Browsergame gemacht hat (vllt in seiner Ausbildung oda so in der Freizeit)und mir vllt mal die dateien/datenbankstruktur geben könnte, einfach um mir mal des zeugs weng anzuschauen.
Ein versuch ist es natürlich wert, aber ich fürchte, da wird sich keiner melden :/ Aber viel Glück auf der Suche - vlt gibts ja ein "OpenSource Browsergame".

te one schrieb:
Hab nur des Problem dass ich schon ideen hab und viele davon auch umsetzten könnte, allerdings bei manchem hab ich keine ahnung wie ich des machen soll!
Du kannst gerne jederzeit fragen - die vielen + kompetenten User werden schon eine Lösung finden :)

Schau mal hier:
https://www.computerbase.de/forum/search/

Hier hat Kampfgnom einen Link im zweiten Post, der dich bestimmt interessiert:
https://www.computerbase.de/forum/threads/php-nach-einer-zeit-gold-gutschreiben.263174/

Die allgemeinere Browsergame-problematik hat den hier auch interessiert:
https://www.computerbase.de/forum/threads/online-game-hp-regenerieren.544309/


Viel Erfolg :)
 
Backslash schrieb:
Also deine konkrete Frage lässt sich sicherlich einfach mit JavaScript lösen, einfach die visibility von dem Button weg und den Text eines passenden Elements der Zeit entsprechend ändern. Vom Prinzip her etwa so:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <title>Countdown Beispiel</title>
  ...
</html>

/edit: und für späteres aufrufen bei noch aktivem countdown eben mit php verbinden

*staun*wow net schlecht! habs gleich mal ausprobiert! genau des hab ich für so ausbau-vorgänge gsucht.
Ich denk dann bekomm ich des auch hin dass es halt dann in der Datenbank den wert um 1 erhöht!

Weiß nur net genau wie ich des am besten noch mit dem anmelden mach (dass username immer auf den anderen seiten verwendet werdn kann...)


edit @P13RR3: naja vllt hat ja mal einer sowas während seiner ausbildung als fachinformatiker oda so mal sowas angefangen?? Links guck ich mir gleich mal an!

edit2: kann ich dann bei dem countdown auch die "Ausbauzeit" aus der datenbank auslesen lassn?? weils je nach stufe länger dauern soll!
 
Zuletzt bearbeitet:
Beachte, dass bei dem Beispiel der Nutzer immer auf der Seite mit dem Countdown sein müsste. Schließt er das Fenster, wird nicht mehr weiter runtergezählt. Auch könnte ein Nutzer JS nicht aktiviert haben.

<-- nein, ich bin kein Mießmacher ;)

edit2: kann ich dann bei dem countdown auch die "Ausbauzeit" aus der datenbank auslesen lassn?? weils je nach stufe länger dauern soll!
Naja, das könntest du ja mittels php aus der Datenbank auslesen lassen und dann der JS-Funktion mitgeben. Aber die sollte sowieso nur zum Anzeigen der verbliebenden Zeit da sein, nicht um wirklich runter zu zählen (Problem siehe oben).

So wenig Code wie möglich beim User ausführen lassen (also JavaScript) - sonst hat der nur mehr Möglichkeiten dich zu bescheissen ;)
 
Zuletzt bearbeitet:
Zum Beispiel Startzeit und Dauer in die DB schreiben und beim Aufruf prüfen.
Jedenfalls nichts von JS beeinflussbares in die DB zurückschreiben.
 
Backslash schrieb:
Zum Beispiel Startzeit und Dauer in die DB schreiben und beim Aufruf prüfen.

so in etwa hatte ich mir des auch gedacht!
nur womit bekomm ich die aktuelle Uhrzeit/Datum und kann da wie zB bei ner normalen Addition die Dauer dazuaddieren??? funktioniert ja normalerweiße net
 
In PHP gibts da passende Funktionen.
Z.B. die time()-Funktion gibt dir die genaue Zeit in Sekunden seit dem 1.1.1970 um 0:00 Uhr aus.
Da kann man dann einfach addieren und subtrahieren.
Z.B. für einen Bauauftrag, der eine Stunde dauert einfach plus 60 * 60.

Dann kann man ganz einfach mit größer/kleiner-als testen, ob die entsprechende Zeit schon abgelaufen ist.
 
Zuletzt bearbeitet:
Ack der III schrieb:
In PHP gibts da passende Funktionen.
Z.B. die time()-Funktion gibt dir die genaue Zeit in Sekunden seit dem 1.1.1970 um 0:00 Uhr aus.
Da kann man dann einfach addieren und subtrahieren.
Z.B. für einen Bauauftrag, der eine Stunde dauert einfach plus 60 * 60.

Dann kann man ganz einfach mit größer/kleiner-als testen, ob die entsprechende Zeit schon abgelaufen ist.

also wenn des wirklich funzt wärs net schlecht! aber glaub ehrlichgsacht nicht dass des geht! denn wenn man dann zb 20minuten dazuaddieren würde könnte es ja sein dass es grad zB 15:57 Uhr ist! wenn des dann damit ganz normal i-wie rechnet würde ja 15:77rauskommen! dann würde des größer/kleiner-als schon ab 16:00 sagen, dass die jetzige uhrzeit höher ist als die als ende angegebenen 15:77Uhr!

oda wird des wirklich wie ne "Uhrzeit" weiterberechnet (problem sehe ich auch darin dass zB manche monate mehr/weniger tage haben, was ja auch mitberechnet werden muss)


edit: LOL! hab jetz einfach mal time() in ein php-script geschrieben! wenn ichs mit dem IE öffnen will fragt er mich ob ichs speichern möchte?! ich lads mal auf meinen webspace hoch vllt geht ja dann
 
Zuletzt bearbeitet:
Backslash schrieb:
Schau mal hier: http://www.selfphp.de/funktionsreferenz/index.php
(hier besonders unter Datums- und Zeit-Funktionen)

In die DB würde ich den UNIX Timestamp speichern, damit kann man auch recht gut rechnen.

ahja, sieht net schlecht aus!
Würde sagen ich versuchs mit dem array "getdate"! dann addier ich erst die sekunden
(Beispiel(hoff es ghörn net überall strichpunkte dahinter,mit denen hab ichs net so):)
PHP:
$seconds+$dauerinsekunden=$secondsfertig
//Hier der ganze Rest mit minuten etc.
if ($secondsfertig>60) {
$secondsfertig-60=$secondsende
$minutes++

else {
$secondsfertig=$secondsende
}
//Dann hier der gleiche Käse mit minuten...
echo 'Ihr Gebäude ist um '.$hoursende.' : '.$minutesende.' : '.$secondsende.' am '.$daysende.' . '.$monthsende.' . '.§ageende.' fertig!'

Würde des so funktionieren??Zurnot noch mit if den fall konstruiert, dass es gerade februar ist!
 
Das kannst du dir sparen, wenn du mit dem UNIX-Timestamp rechnest, das ist ein integer wo alles drin ist. --> Wikipedia
Aus dem fertigen Wert machst du dann mit date() wieder eine schön formatierte Ausgabe.
Das ist meiner Meinung nach flexibler und "schöner". Etwa so:
PHP:
$zeit_start = 1236157202; // bei dir aus DB holen
$zeit_dauer = 10368000; // auch aus DB holen
$zeit_fertig = $zeit_start + $zeit_dauer;
$zeit_jetzt = time();

if ($zeit_jetzt < $zeit_fertig)
{
   $zeit_verbleibend = $zeit_fertig - $zeit_jetzt;
   echo ("Ihr Gebäude ist in ". date("z", $zeit_verbleibend) ." Tagen, und ". date("G:i:s", $zeit_verbleibend) ." Stunden (am ". date("j.n.", $zeit_fertig) ." um ". date("G:i", $zeit_fertig) .") fertig");
}
else
{
   echo ("Ihr Gebäude ist fertig.");
}
 
Zuletzt bearbeitet:
Backslash schrieb:
Das kannst du dir sparen, wenn du mit dem UNIX-Timestamp rechnest, das ist ein integer wo alles drin ist. --> Wikipedia
Aus dem fertigen Wert machst du dann mit date() wieder eine schön formatierte Ausgabe.
Das ist meiner Meinung nach flexibler und "schöner". Etwa so:
PHP:
$zeit_start = 1236157202; // bei dir aus DB holen
$zeit_dauer = 10368000; // auch aus DB holen
$zeit_fertig = $zeit_start + $zeit_dauer;
...
   echo ("Ihr Gebäude ist fertig.");
}

*staun*:freak: genau sowas hab ich gesucht! funktioniert super!
Darf man fragen wie lang du schon programmierst dass du sowas hinbekommst??
(wär zB nie auf die idee gekommen dass man um dann die restzeit anzugeben bei date in klammern hinter des komma noch was reinschreibn kann)

Vielen Dank, jetzt weiß ich schonmal wie des funktioniert! Bin ich schon n ganzes Stück weiter jetz!:)
 
(wär zB nie auf die idee gekommen dass man um dann die restzeit anzugeben bei date in klammern hinter des komma noch was reinschreibn kann)
Das steht doch in der Doku drin: http://de.php.net/manual/de/function.date.php
Der Code ist jetzt auch nicht so übermäßig anspruchsvoll wenngleich er natürlich richtig ist ;)
Ich weiß ned ob bei deinen Vorkenntnissen vielleicht doch erstmal ein kleineres Tool (oder erstmal ein paar Tutorials) die bessere Wahl wäre als ein Browsergame.
 
BerniG schrieb:
Das steht doch in der Doku drin: http://de.php.net/manual/de/function.date.php
Der Code ist jetzt auch nicht so übermäßig anspruchsvoll wenngleich er natürlich richtig ist ;)
Ich weiß ned ob bei deinen Vorkenntnissen vielleicht doch erstmal ein kleineres Tool (oder erstmal ein paar Tutorials) die bessere Wahl wäre als ein Browsergame.

jop, hab ich nachdem ich die antwort bekommen hab auch gsehn dass es dahinter in klammern steht^^

naja mit php hab ich schon n paar kleinere sachen (halt n bissl mit for, if, ... )gemacht! tutorials hab ich auch schon n paar durchgelesen(wobei viele einfach nur schrott sind).
Tutorials sind eh weng komisch! du bekommst in jedem kapitel was total einfaches gelernt (zB wie man ne for-schleife macht) und sollst dann am ende i-was kleines mit ner for-schleife drinnen machen! was lern ich dabei (wenn ich eig schon weiß wie ne for-schleife aufgebaut ist)?? dann hau ich halt ihre aufgabe hin und kann genausoviel wie vorher!

weiß vllt einer n besseres tutorial wo n bissl interessantere/umfangreichere dinge beschrieben sind (würd ja einfach n script reichen des i-was bestimmtes macht und des dann erklärt wird) (sollte natürlich auch noch in einem übersichtlichen rahmen bleiben)
 
Zurück
Oben