cameeel
Erfahrenes Mitglied
Bin gerade dabei ein Online-Browser-Spiel zu programmieren (keine Sorge, nicht sowas wie Galaxy Wars ) und stehe nun vor einem Problem.
Jedes mal, wenn der User eine Figur (bzw. Blase) auf dem Spielfeld anklickt, muss das Spielfeld neu berechnet werden. Dazu hab ich mir die Funktion "gen_gamefield()" geschrieben. Dort wird das Array, das in einer Session gespeichert wurde, eingelesen und die Daten werden überprüft.
Um das neue Spielfeld zu errechnen, müssen nun einige Blasen entfernt werden. Da es sich hierbei um eine rekurisve Funktion handeln wird, hab ich mir gedacht, dass ich diese Rechenschritte wiederrum in eine extra Funktion packe.
Die Daten werden also der Funktion "delete_bubbles()" übergeben. Das funktioniert auch noch, aber die Daten, die dort berechnet werden, werden nicht mehr an "gen_gamefield()" zurückgeben. Das heißt, das Spielfeld wird nicht aktualisiert!
Nun noch ein bisschen vom Code. Ich hoffe, damit könnt ihr mir sagen, woran das liegt.
Hinweis: bei "$gamefield" handelt es sich um ein zweidimensionales, nummerisches Array, das die Farbwerte der Blasen des Spielfeldes enthält.
Ihr könnt euch das Spiel gerne schonmal anschauen.
Wie ihr seht, wird immer nur die Blase entfernt, die angeklickt wird (weil der Befehl nicht in der delete_bubbles()-Funktion steht sondern in der gen_gamefield()-Funktion).
So und in "return $gamefield;" liegt, glaub ich, der Fehler, weil die Daten eben nicht zurückgegeben werden ...
Was ich bereits getestet habe:
Sorry, dass das jetzt so lang wurde, aber ich glaub, die Erklärung war notwendig.
Danke,
cAm3eel.
Jedes mal, wenn der User eine Figur (bzw. Blase) auf dem Spielfeld anklickt, muss das Spielfeld neu berechnet werden. Dazu hab ich mir die Funktion "gen_gamefield()" geschrieben. Dort wird das Array, das in einer Session gespeichert wurde, eingelesen und die Daten werden überprüft.
Um das neue Spielfeld zu errechnen, müssen nun einige Blasen entfernt werden. Da es sich hierbei um eine rekurisve Funktion handeln wird, hab ich mir gedacht, dass ich diese Rechenschritte wiederrum in eine extra Funktion packe.
Die Daten werden also der Funktion "delete_bubbles()" übergeben. Das funktioniert auch noch, aber die Daten, die dort berechnet werden, werden nicht mehr an "gen_gamefield()" zurückgeben. Das heißt, das Spielfeld wird nicht aktualisiert!
Nun noch ein bisschen vom Code. Ich hoffe, damit könnt ihr mir sagen, woran das liegt.
Hinweis: bei "$gamefield" handelt es sich um ein zweidimensionales, nummerisches Array, das die Farbwerte der Blasen des Spielfeldes enthält.
Ihr könnt euch das Spiel gerne schonmal anschauen.
Wie ihr seht, wird immer nur die Blase entfernt, die angeklickt wird (weil der Befehl nicht in der delete_bubbles()-Funktion steht sondern in der gen_gamefield()-Funktion).
PHP:
<?php
function gen_gamefield() {
// Lade Array Daten
$gamefield = $_SESSION['Spieledaten'];
// Daten der angeklickten Blaße
$row = strip_tags($_GET['row']);
$col = strip_tags($_GET['col']);
$colour = strip_tags($_GET['colour']);
// ... es folgen weitere Befehle...
// Die Funktion die die umliegenen Blasen entfernen soll wird aufgerufen:
delete_bubbles($gamefield, $colour, $row, $col);
// ... es folgen weitere Befehle...
}
function delete_bubbles($gamefield, $colour, $row, $col) {
// ... es folgen Befehle um die umliegenen Blasen zu entfernen...
// Neu berechneten Daten (Spielfeld) werden zurückgegeben...
return $gamefield;
}
?>
So und in "return $gamefield;" liegt, glaub ich, der Fehler, weil die Daten eben nicht zurückgegeben werden ...
Was ich bereits getestet habe:
- Die Daten kommen korrekt bei der Funktion "delete_bubbles()" an.
- Die Funktion "delete_bubbles()", die das neue Spielfeld berechnen soll, funktioniert an sich ohne Fehler.
Sorry, dass das jetzt so lang wurde, aber ich glaub, die Erklärung war notwendig.
Danke,
cAm3eel.