Alles klar... Habe es... Lag an den Variablen innerhalb und ausserhalb der Schleifen.
Das AND oder && macht doch nicht so viel aus, oder???
Danke Dir trotzdem schon mal.
Hilfe bei Schleifen
Einklappen
X
-
Diese beiden Fehler kannst Du vermutlich selber finden.
Das heisst es hat noch einen dritten, der AND-Befehl heisst &&, siehe mein Beispiel.
viertens war das nicht die ganze Ausgabe, was sozusagen die" ..." nach kurios andeuten.....Zuletzt geändert von tcpip; 30.06.2006, 12:53.
Einen Kommentar schreiben:
-
Also ich raff es nicht... Die Ausgabe ist echt kurios...
SatzA:1,SatzB:01, 0
SatzA:2,SatzB:00, 1
SatzA:2,SatzB:11, 0
SatzA:3,SatzB:1
was soll das für eine Ausgabe sein? Wieso schreibt er mir hintendran nochmal 1,0 usw.
Hier mein jetztiger Code der zumindest schon mal zum Satzgewinn und Spielgewinn läuft aber nur einen Satz aufzeigt.
PHP-Code:<?php
$a= $_POST['a'] + 5;
$b= $_POST['b'];
$satza = 0;
$satzb = 0;
$i = 0;
$j = 0;
if ($satza <3 && $satzb <3)
do {
$punktb = 0;
$punkta = 0;
do {
srand((double)microtime()*1000000);
/*srand ((int)$a*100);*/
$werta = rand(1,100) + $a;
srand((double)microtime()*1000000);
$wertb = rand(1,100) + $b;
//echo "$werta, $wertb<br />\n";
if ($werta > $wertb)
$punkta = $punkta + 1;
else
$punktb = $punktb + 1;
$i++;
echo "$punkta, $punktb<br />\n";
} while ($punkta <11 and $punktb <11 and $i<20);
//bei Spielstand von 10:10 wird weitergespielt bis die Differenz 2 ist
if ($punkta == 10 and $punktb == 10)
do {
srand((double)microtime()*1000000);
$werta = rand(1,100) + $a;
srand((double)microtime()*1000000);
$wertb = rand(1,100) + $b;
//echo "$werta, $wertb<br />\n";
if ($werta > $wertb)
$punkta = $punkta + 1;
else
$punktb = $punktb + 1;
echo "$punkta, $punktb<br />\n";
} while (abs($punkta - $punktb) <2);
if ($punkta > $punktb)
$satza = $satza + 1;
else
$satzb = $satzb + 1;
echo "SatzA:$satza,SatzB:$satzb";
} while ($satza <3 && $satzb<3);
?>
Einen Kommentar schreiben:
-
Ah okay. Jetzt habe ich es gesehen... War mir nicht aufgefallen.
Muss ich denn nun die Spielschleife nach dem ersten Mal nochmal eingeben oder kann ich wieder zu Beginn des Satzes starten und er schreibt mir die nächsten Sätze noch drunter?
Einen Kommentar schreiben:
-
Wenn Du es in VB kannst, dann auch in php.. Die logik ist dieselbe.
Der Laufzeitfehler: if($Satza<=3), weil Variablennamen gross7kleinsensitiv sind.
[color=red]Korrektur übrigens, sehe ich erst jetzt aus deiner Ausgabe:[/color]
PHP-Code:while ($satza <3 && $satzb<3) {
do {
etc.
echo "SatzA:$satza,SatzB:$satzb";
}
Zuletzt geändert von tcpip; 30.06.2006, 09:49.
Einen Kommentar schreiben:
-
Also habe das mal getestet.
Initalisiere ich $punkta und $punktb in der Schleife fallen nur 0 oder 1 da ja die beiden Werte immer wieder auf 0 gesetzt werden. Ich will ja den Spielstand sehen.
Muss ich denn nach dem letzten while, welches Du mir angegeben hast meinen Code wiederholen? Du schreibst ja dann do {, etc.... Denn jetzt sieht mein Ergebnis schon etwas seltsam aus. Wo genau im Code soll ich die beiden initalisieren.
Hier mein Ergebnis bei der Initalisierung nach dem ersten do...
0, 1
1, 1
1, 2
1, 3
1, 4
1, 5
2, 5
3, 5
4, 5
5, 5
6, 5
7, 5
8, 5
8, 6
8, 7
8, 8
8, 9
9, 9
9, 10
10, 10
11, 10
12, 10 ////bis hierhin ist ja richtig
SatzA:1,SatzB:01, 0 /// aber was passiert dann hier???
SatzA:2,SatzB:01, 0 ///hier sollte der neue Satz wie oben beginnen
SatzA:3,SatzB:00, 1
SatzA:3,SatzB:10, 1
SatzA:3,SatzB:21, 0
SatzA:4,SatzB:2
Einen Kommentar schreiben:
-
danke Dir tcpip....
Aber welchen Fehler zur Ausführungszeit meinst Du???
Mein Code funktioniert aber doch.
Wie kriege ich den Fehler denn raus wenn das Script einwandfrei ausgeführt wird.
Ich mache das ganze leider erst seit zwei Tagen. ;-(((
Ist noch eine gehörige Umstellung zu VB da habe ich das ganze mit DoUntil und goto lösen können. Das steht mir hier nur leider nicht zur Verfügung.
Einen Kommentar schreiben:
-
Ja die Schleife fehlte, ich habe sie angegeben. Sie wird 3 vier oder fünf mal durchlaufen werden.
Ach ja übrigens, die Initialisierung von $punkta und $punktb muss INnerhalb der Schleife sein. Für $i und $j habe ich das gleiche nicht speziell überprüft, sollte der Frager aber bitte tun.Zuletzt geändert von tcpip; 30.06.2006, 01:30.
Einen Kommentar schreiben:
-
also ich mach das ganze auch erst 2 wochen ... aber ...
für mich macht er alles richtig ... es fehlt für mich eine schleife ganz aussen rum die entweder 2 oder 3 mal durch läuft je nachdem wie es steht ...
er arbeitet einen satz durch und sieht dann keinen grund das nochmal zu machen weil du ihm nichts sagst ...
Einen Kommentar schreiben:
-
PHP-Code:if ($satza <=3 and $Satzb <=3)
do {
etc.
echo "SatzA:$satza,SatzB:$satzb";
PHP-Code:while ($satza <=3 && $satzb<=3 {
do {
etc.
echo "SatzA:$satza,SatzB:$satzb";
}
Einen Kommentar schreiben:
-
Hilfe bei Schleifen
Hallo an Alle,
will ein kleines Spiel á la Tischtennis programmieren und habe noch ein kleines Problem mit der Schleife für die Satzgewinne.
Die Schleife soll so lange wiederholen bis der erste Spieler 3 Sätze gewonnen hat. Jeder Satz soll mir aber angezeigt werden und am Ende der Satzgewinn ausgegeben sein.
Einen Satz spielt er mir bereits aber wie kriege ich das mit den weiteren Sätzen hin?
Hier mein Code:
PHP-Code:<?php
$a= $_POST['a'] + 5;
$b= $_POST['b'];
$satza = 0;
$satzb = 0;
$punktb = 0;
$punkta = 0;
$i = 0;
$j = 0;
if ($satza <=3 and $Satzb <=3)
do {
srand((double)microtime()*1000000);
/*srand ((int)$a*100);*/
$werta = rand(1,100) + $a;
srand((double)microtime()*1000000);
$wertb = rand(1,100) + $b;
//echo "$werta, $wertb<br />\n";
if ($werta > $wertb)
$punkta = $punkta + 1;
else
$punktb = $punktb + 1;
$i++;
echo "$punkta, $punktb<br />\n";
} while ($punkta <11 and $punktb <11 and $i<20);
//bei Spielstand von 10:10 wird weitergespielt bis die Differenz 2 ist
if ($punkta == 10 and $punktb == 10)
do {
srand((double)microtime()*1000000);
$werta = rand(1,100) + $a;
srand((double)microtime()*1000000);
$wertb = rand(1,100) + $b;
//echo "$werta, $wertb<br />\n";
if ($werta > $wertb)
$punkta = $punkta + 1;
else
$punktb = $punktb + 1;
echo "$punkta, $punktb<br />\n";
} while (abs($punkta - $punktb) <2);
if ($punkta > $punktb)
$satza = $satza + 1;
else
$satzb = $satzb + 1;
echo "SatzA:$satza,SatzB:$satzb";
?>Stichworte: -
Einen Kommentar schreiben: