ZZZ bei Crash: Unterschied zwischen den Versionen
Jody (Diskussion | Beiträge) (Jodys Beitrag: richtige Ausgabe) |
Zucker (Diskussion | Beiträge) |
||
Zeile 82: | Zeile 82: | ||
# ... | # ... | ||
+ | |||
+ | Zucker: | ||
+ | $query="select M_ID,x_pos,y_pos,crash from $movestable [..]"; | ||
+ | Liese sich das ganze nicht über EIN sql ziehen und dann einfach einen normalen Zug machen ? | ||
+ | |||
+ | [http://www.zuckerimnetz.de/karo/karopapier_singleplayer.zip karopapier_singleplayer.zip] | ||
+ | Da drinn ist auch irgendwo sowas versteckt | ||
[[Category:Bisschen OpenSource]] | [[Category:Bisschen OpenSource]] |
Version vom 23. April 2008, 06:44 Uhr
Da der (zugegebenermaßen evtl. etwas kompliziert programmierte) Algorithmus zur Bestimmung der Zurücksetzposition offenbar einen Bug hat, gibt's hier mal meinen "original"-Source code und danach eine korrektur bzw. Anmerkungen von Quabla.
Ich stell's hier jetzt mal zur Diskussion und möge sich die Community an diesem Stück Code beweisen :-D
if ($possibles==0) { $query="select M_ID,x_pos,y_pos,crash from $movestable [..]"; $res=do_query($query); $maxmoves=mysql_num_rows($res); if ($aussetzen>=$maxmoves) { $aussetzen=$maxmoves-1; } $walker=0; $i=$aussetzen; while ($i>=0) { $row=mysql_fetch_array($res); if ($row[crash]==1) { $sum=$aussetzen+$walker+$i; if (($sum)>=$maxmoves) $i=$maxmoves-$walker-1; else $i=$i+$aussetzen; } $i--; $walker++; } $sysmsg="-:KIch werde $aussetzen Züge zurückgesetztK:-"; echo "AUAAAA! Es quietscht und du knatterst ins Gras... Dafür wirst Du um $aussetzen Züge zurückgesetzt und startest wieder von 0."; }
Hier die Kommentierung und Vorschläge von Quabla
if ($possibles==0) { $query="select M_ID,x_pos,y_pos,crash from $movestable WHERE [..]"; $res=do_query($query); $maxmoves=mysql_num_rows($res); if ($aussetzen>=$maxmoves) { $aussetzen=$maxmoves-1; }
$walker kann wech
#$walker=0; $i=$aussetzen; while ($i>=0) { $row=mysql_fetch_array($res); if ($row[crash]==1) {
und den ganzen Kladderadatsch in diesem if-Zweig kann man dann ersetzen durch
$i = 0; # $sum=$aussetzen+$walker+$i; # if (($sum)>=$maxmoves) # $i=$maxmoves-$walker-1; # else # $i=$i+$aussetzen; } $i--; #$walker++; }
Jody fügt hinzu:
Damit die richtige Anzahl an Zügen ausgegeben wird, müsste man quabla's Vorschlag noch wie folgt ändern:
# ... if ($row[crash]==1) { $aussetzen -= $i; $i = 0; } # ...
Zucker:
$query="select M_ID,x_pos,y_pos,crash from $movestable [..]";
Liese sich das ganze nicht über EIN sql ziehen und dann einfach einen normalen Zug machen ?
karopapier_singleplayer.zip Da drinn ist auch irgendwo sowas versteckt