Mam taki problem napisałem skrypt, który polega na tym, że komputer gra w grę wojnę karcianą z samym sobą baza mysql wygląda tak
Tabela karty
id nazwa_karty id_karty rozdana
1 2_serce 1 n
2 2_karo 1 n
3 2_krzyż 1 n
4 2_pik 1 n
5 3_serce 2 n
6 3_karo 2 n
7 3_krzyż 2 n
8 3_pik 2 n
9 4_serce 3 n
10 4_karo 3 n
tabela ilosc_punktow
id pierwsza druga
1
Ta wygląda klasa karty i klasa baza
class karty {
public function pobierz_karte() {
$pobierz_karte = mysql_query("select id,nazwa_karty,id_karty from karty where rozdana = 'n' order by rand() limit 1");
$pobierz_karte = mysql_fetch_array($pobierz_karte);
mysql_query("update karty set rozdana='t' where id = '$pobierz_karte[0]' ");
return $pobierz_karte;
}
public function porownaj_karty($karta1,$karta2) {
if ($karta1[2] < $karta2[2]) {
$pobierz_wynik = mysql_query("select druga from ilosc_punktow where id = '1' ");
$pobierz_wynik = mysql_fetch_array($pobierz_wynik);
if ($pobierz_wynik[0] == "") $punkty_drugiego = 1;
else $punkty_drugiego = $pobierz_wynik[0] + 1;
mysql_query("update ilosc_punktow set druga = '$punkty_drugiego' where id = '1' ");
return "druga";
}
else if ($karta1[2] > $karta2[2]) {
$pobierz_wynik = mysql_query("select pierwsza from ilosc_punktow where id = '1' ");
$pobierz_wynik = mysql_fetch_array($pobierz_wynik);
if ($pobierz_wynik[0] == "") $punkty_pierwszego = 1;
else $punkty_pierwszego = $pobierz_wynik[0] + 1;
mysql_query("update ilosc_punktow set pierwsza = '$punkty_pierwszego' where id = '1' ");
return "pierwsza";
}
else return "równe";
}
public function zapisz_wynik($druga_czy_pierwsza,$licznik) {
if ($druga_czy_pierwsza == "pierwsza") {
$pobierz_wynik = mysql_query("select pierwsza from ilosc_punktow where id = '1' ");
$pobierz_wynik = mysql_fetch_array($pobierz_wynik);
if ($pobierz_wynik[0] == "") $punkty_pierwszego = $licznik;
else $punkty_pierwszego = $pobierz_wynik[0] + $licznik;
mysql_query("update ilosc_punktow set pierwsza = '$punkty_pierwszego' where id = '1' ");
}
else {
$pobierz_wynik = mysql_query("select druga from ilosc_punktow where id = '1' ");
$pobierz_wynik = mysql_fetch_array($pobierz_wynik);
if ($pobierz_wynik[0] == "") $punkty_drugiego = $licznik;
else $punkty_drugiego = $pobierz_wynik[0] + $licznik;
mysql_query("update ilosc_punktow set druga = '$punkty_drugiego' where id = '1' ");
}
}
public function tasuj_karty() {
mysql_query("update karty set rozdana='n'");
}
}
class baza {
public function polacz_z_baza() {
mysql_connect("localhost","root","a1234");
mysql_select_db("makao");
}
}
Tutaj jest wszystko dobrze
Ale tutaj jest już gdzieś błąd
$karta = new baza;
$karta->polacz_z_baza();
$karta2 = new karty;
$licznik = 1;
while ($licznik <= 26) {
//print "d";
$jaka = $karta2->pobierz_karte();
$jaka2 = $karta2->pobierz_karte();
$czy_rowna = $karta2->porownaj_karty($jaka,$jaka2);
$licznik2 = 0;
print $jaka[2] . " na " . $jaka2[2] . "<br>";
while ($jaka[2] == $jaka2[2] or $licznik <= 26) {
$jaka = $karta2->pobierz_karte();
$jaka2 = $karta2->pobierz_karte();
print $jaka[2] . " na " . $jaka2[2] . "<br>";
$czy_rowna = $karta2->porownaj_karty($jaka,$jaka2);
$licznik++;
$licznik2++;
}
$karta2->zapisz_wynik($czy_rowna,$licznik2);
$licznik++;
}
print $czy_rowna;
$karta2->tasuj_karty();
//print $jaka[1];
No i teraz ten kod polega na tym, że jest pętla, która jest wykonywana 26 razy bo kart jest 52 i w każdym przejściu pętli są dwie karty rozdawane i teraz do bazy jest zapisywane kto w danym czasie wygrał np. jeżeli to był drugi to w bazie będzie 0 1 i jak następny będzie drugi brał kartę to uaktualni w bazie wpis i będzie 0 2 i teraz może się zdarzyć coś takiego, że wylosują równe karty i za to będzie odpowiadać pętla zagnieżdżona, która będzie wykonywana aż wylosowane karty będą różne od siebie i ta pętla mi się zapętla nie wiem dlaczego ?