Zum Inhalt springen

[php]: kartenspiel, kann fehler nicht finden


Empfohlene Beiträge

folgendes problem: habe ein kartenspiel, wo spieler gegen computer spielt.

ziel: möglichst alle karten ablegen, es kann immer nur eine höhere karte abgelegt werden.

das funktioniert schon alles so wie ich es will, problem ist nur, wenn man als spieler aussetzen will (im code: $nr=14), spielt der computer 2 Karten hintereinander ab, und ich weiß nicht warum!! (könnte an mysql liegen)

hat jmd nen plan, hier der code:

Code:


<? 

include("var.inc.php"); 

$id="1"; 

$abfrage = "SELECT * FROM pks WHERE id = $id"; 

$ergebnis = mysql_query($abfrage); 

while($daten = mysql_fetch_object($ergebnis)) 

{ 

  $sk[0] = $daten->sk1; //spielerkarten 

  $sk[1] = $daten->sk2; 

  $sk[2] = $daten->sk3; 

  $sk[3] = $daten->sk4; 

  $sk[4] = $daten->sk5; 

  $sk[5] = $daten->sk6; 

  $sk[6] = $daten->sk7; 

  $sk[7] = $daten->sk8; 

  $sk[8] = $daten->sk9; 

  $sk[9] = $daten->sk10; 

  $sk[10] = $daten->sk11; 

  $sk[11] = $daten->sk12; 

  $sk[12] = $daten->sk13; 

  $ck[0] = $daten->ck1; //computerkarten 

  $ck[1] = $daten->ck2; 

  $ck[2] = $daten->ck3; 

  $ck[3] = $daten->ck4; 

  $ck[4] = $daten->ck5; 

  $ck[5] = $daten->ck6; 

  $ck[6] = $daten->ck7; 

  $ck[7] = $daten->ck8; 

  $ck[8] = $daten->ck9; 

  $ck[9] = $daten->ck10; 

  $ck[10] = $daten->ck11; 

  $ck[11] = $daten->ck12; 

  $ck[12] = $daten->ck13; 

  $tk1 = $daten->tk1; //Tischkarte 

} 


//----------------------------------------------------- 

//Spielerkarte entfernen + Tischkarte aktualisieren --- 

//----------------------------------------------------- 


$nr2=$nr-1; 

if (($nr != 14) and (substr($sk[$nr2],0,2) > $tk1)) //Spielerkarte größer Tischkarte      

{ 

$aendern = "UPDATE pks Set tk1 = '$sk[$nr2]' WHERE id = $id"; 

$update = mysql_query($aendern); 

$tk1 = $sk[$nr2]; 

unset($sk); 


switch($nr2) 

{ 

case 0: 

$aendern2 = "UPDATE pks Set sk1 = 0 WHERE id = $id"; break; 

case 1: 

$aendern2 = "UPDATE pks Set sk2 = 0 WHERE id = $id"; break; 

case 2: 

$aendern2 = "UPDATE pks Set sk3 = 0 WHERE id = $id"; break; 

case 3: 

$aendern2 = "UPDATE pks Set sk4 = 0 WHERE id = $id"; break; 

case 4: 

$aendern2 = "UPDATE pks Set sk5 = 0 WHERE id = $id"; break; 

case 5: 

$aendern2 = "UPDATE pks Set sk6 = 0 WHERE id = $id"; break; 

case 6: 

$aendern2 = "UPDATE pks Set sk7 = 0 WHERE id = $id"; break; 

case 7: 

$aendern2 = "UPDATE pks Set sk8 = 0 WHERE id = $id"; break; 

case 8: 

$aendern2 = "UPDATE pks Set sk9 = 0 WHERE id = $id"; break; 

case 9: 

$aendern2 = "UPDATE pks Set sk10 = 0 WHERE id = $id"; break; 

case 10: 

$aendern2 = "UPDATE pks Set sk11 = 0 WHERE id = $id"; break; 

case 11: 

$aendern2 = "UPDATE pks Set sk12 = 0 WHERE id = $id"; break; 

case 12: 

$aendern2 = "UPDATE pks Set sk13 = 0 WHERE id = $id"; break; 

} 

$update2 = mysql_query($aendern2); 

} 

else 

{ 

unset($sk); 

if ($nr != 14) //karte kleiner Tischkarte 

{$falschk = 2;} 

if ($nr == 14) //spieler will keine karte legen 

{$tk1 = "0";} 

} 



//----------------------------------------------- 

// KI des Computers: Karte legen + Tischkarte --- 

//----------------------------------------------- 

if ($falschk != 2) //spielerkarte nicht falsch 

{ 


for ($i=0; $i<=13; $i++) 

{ 

  if (substr($ck[$i],0,2) > $tk1) //Karte größer als Tischkarte 

  { 

  $aendern = "UPDATE pks Set tk1 = '$ck[$i]' WHERE id = $id"; 

  $update = mysql_query($aendern); 

  break; 

  } 

} 


unset($ck); 


switch($i) 

{ 

case 0: 

$aendern2 = "UPDATE pks Set ck1 = '0' WHERE id = $id"; break; 

case 1: 

$aendern2 = "UPDATE pks Set ck2 = '0' WHERE id = $id"; break; 

case 2: 

$aendern2 = "UPDATE pks Set ck3 = '0' WHERE id = $id"; break; 

case 3: 

$aendern2 = "UPDATE pks Set ck4 = '0' WHERE id = $id"; break; 

case 4: 

$aendern2 = "UPDATE pks Set ck5 = '0' WHERE id = $id"; break; 

case 5: 

$aendern2 = "UPDATE pks Set ck6 = '0' WHERE id = $id"; break; 

case 6: 

$aendern2 = "UPDATE pks Set ck7 = '0' WHERE id = $id"; break; 

case 7: 

$aendern2 = "UPDATE pks Set ck8 = '0' WHERE id = $id"; break; 

case 8: 

$aendern2 = "UPDATE pks Set ck9 = '0' WHERE id = $id"; break; 

case 9: 

$aendern2 = "UPDATE pks Set ck10 = '0' WHERE id = $id"; break; 

case 10: 

$aendern2 = "UPDATE pks Set ck11 = '0' WHERE id = $id"; break; 

case 11: 

$aendern2 = "UPDATE pks Set ck12 = '0' WHERE id = $id"; break; 

case 12: 

$aendern2 = "UPDATE pks Set ck13 = '0' WHERE id = $id"; break; 

case 13: //=Computer setzt aus 

$aendern2 = "UPDATE pks Set tk1 = '0' WHERE id = $id"; 

} 

$update = mysql_query($aendern2); 


}//skfalsch 


mysql_close($verbindung); 

header ("Location:show.php"); 

?>  

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok, hab jetzt nochmal den fehler etwas eingrenzen können:

im fogenden code wird die datenbank in switch 2x upgedatet, sollte aber nur 1x sein. warum???

...$i hat doch immer nur einen wert, oder?

include("var.inc.php");

$id="1";

$abfrage = "SELECT * FROM pks WHERE id = $id";

$ergebnis = mysql_query($abfrage);

while($daten = mysql_fetch_object($ergebnis))

{

$ck[0] = $daten->ck1;

$ck[1] = $daten->ck2;

$ck[2] = $daten->ck3;

$ck[3] = $daten->ck4;

$ck[4] = $daten->ck5;

$ck[5] = $daten->ck6;

$ck[6] = $daten->ck7;

$ck[7] = $daten->ck8;

$ck[8] = $daten->ck9;

$ck[9] = $daten->ck10;

$ck[10] = $daten->ck11;

$ck[11] = $daten->ck12;

$ck[12] = $daten->ck13;

$tk1 = $daten->tk1;

}

for ($i=0; $i<=13; $i++)

{

if (substr($ck[$i],0,2) > $tk1)

{

$aendern = "UPDATE pks Set tk1 = '$ck[$i]' WHERE id = $id";

$update = mysql_query($aendern);

break;

}

}

switch($i)

{

case 0:

$aendern2 = "UPDATE pks Set ck1 = '0' WHERE id = $id"; break;

case 1:

$aendern2 = "UPDATE pks Set ck2 = '0' WHERE id = $id"; break;

case 2:

$aendern2 = "UPDATE pks Set ck3 = '0' WHERE id = $id"; break;

case 3:

$aendern2 = "UPDATE pks Set ck4 = '0' WHERE id = $id"; break;

case 4:

$aendern2 = "UPDATE pks Set ck5 = '0' WHERE id = $id"; break;

case 5:

$aendern2 = "UPDATE pks Set ck6 = '0' WHERE id = $id"; break;

case 6:

$aendern2 = "UPDATE pks Set ck7 = '0' WHERE id = $id"; break;

case 7:

$aendern2 = "UPDATE pks Set ck8 = '0' WHERE id = $id"; break;

case 8:

$aendern2 = "UPDATE pks Set ck9 = '0' WHERE id = $id"; break;

case 9:

$aendern2 = "UPDATE pks Set ck10 = '0' WHERE id = $id"; break;

case 10:

$aendern2 = "UPDATE pks Set ck11 = '0' WHERE id = $id"; break;

case 11:

$aendern2 = "UPDATE pks Set ck12 = '0' WHERE id = $id"; break;

case 12:

$aendern2 = "UPDATE pks Set ck13 = '0' WHERE id = $id"; break;

case 13: //alles < $tk1

$aendern2 = "UPDATE pks Set tk1 = '0' WHERE id = $id"; break;

}

unset($ck);

$update = mysql_query($aendern2);

mysql_close($verbindung);

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...