Autor | Zpráva | ||
---|---|---|---|
lukaspce Profil |
#1 · Zasláno: 18. 2. 2007, 09:21:24
Dělám kontrolu výhry/prohry v piškvorkách a bohužel jsem se zasekl už na vodorovné kontrole...
$pocetx=0; $poceto=0; $znak[1][1] = "krizek"; $znak[1][2] = "krizek"; $znak[1][3] = "krizek"; $znak[1][4] = "krizek"; $znak[1][5] = "krizek"; //vodorovná kontrola for($x=0; $x<16; $x++) { for($y=0; $y<16; $y++) { if ($znak[$x][$y]=="krizek") { $pocetx+1; $poceto=0; } if ($znak[$x][$y]=="kolecko") { $poceto+1; $pocetx=0; } if (($znak[$x][$y]!="krizek") && ($znak[$x][$y]!="kolecko")) { $pocetx=0; $poceto=0; } if ($pocetx==5) { echo "Vyhrál uživatel křížky... Hrát znovu"; exit; } if ($poceto==5) { echo "Vyhrál uživatel kolečka... Hrát znovu"; exit; } } } Mělo by to vypsat že vyhrál uživatel křížky.. Ale nevypíše to nic..Už si s tím nevím rady. |
||
lukaspce Profil |
#2 · Zasláno: 18. 2. 2007, 09:25:25
Ježiš já nad tím půl dne přemejšlím a když to sem napíšu hned mi to docvakne místo u proměnných $poceto+1 a $pocetx+1 má bejt $poceto++ a $pocetx++
|
||
Pavel Prochazka.zde.cz Profil * |
#3 · Zasláno: 18. 2. 2007, 09:27:11
$pocetx=0;
$poceto=0; $znak[1][1] = "krizek"; $znak[1][2] = "krizek"; $znak[1][3] = "krizek"; $znak[1][4] = "krizek"; $znak[1][5] = "krizek"; //vodorovná kontrola for($x=1; $x<16; $x++) { for($y=1; $y<16; $y++) { if ($znak[$x][$y]=="krizek") { $pocetx = $pocetx +1; $poceto = 0; } if ($znak[$x][$y]=="kolecko") { $poceto = $poceto +1; $pocetx = 0; } if (($znak[$x][$y]!="krizek") && ($znak[$x][$y]!="kolecko")) { $pocetx = 0; $poceto = 0; } if ($pocetx==5) { echo "Vyhrál uživatel křížky... Hrát znovu"; exit; } if ($poceto==5) { echo "Vyhrál uživatel kolečka... Hrát znovu"; exit; } } } |
||
Pavel Prochazka.zde.cz Profil * |
#4 · Zasláno: 18. 2. 2007, 09:28:53
lukaspce
to taky ale podivej se na prikazy FOR, ty zacinas prohlizet od nuly (x=0, y=0) ale pole ti zacina od x=1, y=1..... |
||
lukaspce Profil |
#5 · Zasláno: 18. 2. 2007, 09:46:20 · Upravil/a: lukaspce
No tak jsem narazil na další problém a to v diagonální kontrole (konkrétně tato "obrácené lomítko") mám špatně napsanej for vypisuje to
Parse error: syntax error, unexpected ';', expecting ')' in /home/free/ic.cz/z/zahrajte-si-piskvorky/root/www/moje_kontrola.php on line 14 code: $pocetx=0; $poceto=0; $znak[1][1] = "krizek"; $znak[2][2] = "krizek"; $znak[3][3] = "krizek"; $znak[4][4] = "krizek"; $znak[5][5] = "krizek"; //diagonální kontrola "obrácené lomítko" for($x=1; $y=1; $y<16; $x<16; $y++; $x++) { if ($znak[$x][$y]=="krizek") { $pocetx++; $poceto=0; } if ($znak[$x][$y]=="kolecko") { $poceto++; $pocetx=0; } if (($znak[$x][$y]!="krizek") && ($znak[$x][$y]!="kolecko")) { $pocetx=0; $poceto=0; } if ($pocetx==5) { echo "Vyhrál uživatel křížky... Hrát znovu3"; exit; } if ($poceto==5) { echo "Vyhrál uživatel kolečka... Hrát znovu3"; exit; } } |
||
lukaspce Profil |
#6 · Zasláno: 18. 2. 2007, 10:06:36
Mno tak už jsem to vyřešil... jde to jednoduše opravený kód kdyby to někdo hledal:
$pocetx=0; $poceto=0; $znak[1][1] = "krizek"; $znak[2][2] = "krizek"; $znak[3][3] = "krizek"; $znak[4][4] = "krizek"; $znak[5][5] = "krizek"; //diagonální kontrola "obrácené lomítko" for($x=1; $x<16; $x++) { if ($znak[$x][$x]=="krizek") { $pocetx++; $poceto=0; } if ($znak[$x][$x]=="kolecko") { $poceto++; $pocetx=0; } if (($znak[$x][$x]!="krizek") && ($znak[$x][$x]!="kolecko")) { $pocetx=0; $poceto=0; } if ($pocetx==5) { echo "Vyhrál uživatel křížky... Hrát znovu3"; exit; } if ($poceto==5) { echo "Vyhrál uživatel kolečka... Hrát znovu3"; exit; } } |
||
lukaspce Profil |
#7 · Zasláno: 18. 2. 2007, 10:09:06
Tak jsem to nevyřešil protože když by bylo v poli
$znak[1][2] = "krizek"; $znak[2][3] = "krizek"; $znak[3][4] = "krizek"; $znak[4][5] = "krizek"; $znak[5][6] = "krizek"; nebo něco jíného tak to nepujde... |
||
lukaspce Profil |
#8 · Zasláno: 18. 2. 2007, 16:05:25
Pls help me už si s tím nevím rady
|
||
Pavel Prochazka.zde.cz Profil * |
#9 · Zasláno: 18. 2. 2007, 17:27:01
popis presne jak to chces vyhodnocovat....
Me totiz pripadne ze text se ti vypise pouze tehdy ze mas JEN pet kolecek nebo krizku... |
||
lukaspce Profil |
#10 · Zasláno: 19. 2. 2007, 17:00:40
No chtěl bych tím polem pokračovat i diagonálně tzn že vždycky vodorovnej směr + nebo - 1 podle směru kam diagonály...
|
||
Pavel Prochazka.zde.cz Profil * |
#11 · Zasláno: 19. 2. 2007, 18:23:31
to jsem sice pochopil....
ale me slo spise o to kdy se ma vypisovat ktera hlaska? Jen tehdy kdy jsou vsechny pole shodne nebo jaky je pomer? |
||
lukaspce Profil |
#12 · Zasláno: 19. 2. 2007, 19:51:38 · Upravil/a: lukaspce
no když mají všechny pole hodnotu křížek bo kolečko. To a ty čísla v tech polích ukazují polohu toho křížku/kolečka/ničeho a vodorovně , svisle bo diagonálně jich musí bejt 5stejnejch za sebou.. Jinak to pole má velikost 16x16
|
||
Pavel Prochazka.zde.cz Profil * |
#13 · Zasláno: 19. 2. 2007, 19:59:58
Jestly jsem to dobre pochopil tak musi nekde bejt vzdy 5 stejnych policek za sebou.... vodoravne nebo svisle ci do uhlopricky?
|
||
lukaspce Profil |
#14 · Zasláno: 19. 2. 2007, 20:50:01
jj
|
||
Pavel Prochazka.zde.cz Profil * |
#15 · Zasláno: 19. 2. 2007, 20:58:53
aha, tak se na to zitra mrknu.....
dneska se me uz nechce.... Jeste jeden dotazek.... Co se ma stat kdy jeden radek ci sloupec odpovida peti kolackam a druhy peti krizkam? |
||
lukaspce Profil |
#16 · Zasláno: 19. 2. 2007, 22:21:56
to se stat nemuze =)
|
||
Pavel Prochazka.zde.cz Profil * |
#17 · Zasláno: 20. 2. 2007, 17:59:57
<code>
$so = 0; $sx = 0; $pocetx=0; $poceto=0; for($x=1; $x<6; $x++) { for($y=1; $y<6; $y++) { if ($znak[$x][$y]=="x"){ //vodorovny test X $pocetx = $pocetx +1; } if ($znak[$x][$y]=="o"){// vodorovny test O $poceto = $poceto +1; } if ($znak[$y][$x]=="o"){ //Svysly text O $so = $so+1; } if ($znak[$y][$x]=="x"){ //Svysly test X $sx = $sx+1; } } hlaska ($pocetx, $poceto); hlaska ($sx, $so); $pocetx=0; $poceto=0; $so = 0; $sx = 0; } function hlaska($x,$o){ if ($x==5){ echo "Vyhrál uživatel křížky... Hrát znovu"; exit; } if ($o==5){ echo "Vyhrál uživatel kolečka... Hrát znovu"; exit; } }</code> |
||
Pavel Prochazka.zde.cz Profil * |
#18 · Zasláno: 20. 2. 2007, 18:00:42
akorat tam chyby test na krizek s kolecky nebo s krizky.....
|
||
lukaspce Profil |
#19 · Zasláno: 20. 2. 2007, 18:26:44
nejak to nefachá...
|
||
lukaspce Profil |
#20 · Zasláno: 20. 2. 2007, 18:29:19
prostě to nic nevypíše...btw asi jsi to z toho co chci udělat pochopil ale jinak je to kontrola výhry v piškvorkách =)
|
||
Pavel Prochazka.zde.cz Profil * |
#21 · Zasláno: 20. 2. 2007, 18:32:59
lukaspce
potom mas nejaky divny vstup.... Ja jsem pouzil jako vstup pro testovani toto: $znak[1][1] = "x"; $znak[1][2] = "o"; $znak[1][3] = "x"; $znak[1][4] = "o"; $znak[1][5] = "x"; $znak[2][1] = "o"; $znak[2][2] = "x"; $znak[2][3] = "x"; $znak[2][4] = "o"; $znak[2][5] = "o"; $znak[3][1] = "o"; $znak[3][2] = "o"; $znak[3][3] = "x"; $znak[3][4] = "o"; $znak[3][5] = "o"; $znak[4][1] = "x"; $znak[4][2] = "o"; $znak[4][3] = "x"; $znak[4][4] = "x"; $znak[4][5] = "x"; $znak[5][1] = "x"; $znak[5][2] = "x"; $znak[5][3] = "x"; $znak[5][4] = "x"; $znak[5][5] = "o"; |
||
Pavel Prochazka.zde.cz Profil * |
#22 · Zasláno: 20. 2. 2007, 18:35:25
Akorat si tu funkci musis prepsat na pole 16 x 16 a jeste pridat nulovani....
To jsem odstranil, pac jsem se domnival ze to chtes jen 5x5 ale pak jsem si to poradne precetl a ty chces 16x16, to jsem nejak prehledl.... Funguje pouze horizontalni a vertikalni test.... Nefaka test do uhlopricek.... To jsem nedelal... Posly nejake vzorove testovaci pole.... |
||
Pavel Prochazka.zde.cz Profil * |
#23 · Zasláno: 20. 2. 2007, 18:40:42
To by melo testovat pole 16x16 ale nezkousel jsem to..... Az poslen nejaky testovaci vstup, tak no na tom odkrokuji a uvidim zda to faka...
<pre> $so = 0; $sx = 0; $pocetx=0; $poceto=0; for($x=1; $x<17; $x++) { for($y=1; $y<17; $y++) { if ($znak[$x][$y]=="x"){ //vodorovny test X $pocetx = $pocetx +1; $poceto = 0; } if ($znak[$x][$y]=="o"){// vodorovny test O $poceto = $poceto +1; $pocetx = 0; } if ($znak[$y][$x]=="o"){ //Svysly text O $so = $so+1; $sx = 0; } if ($znak[$y][$x]=="x"){ //Svysly test X $sx = $sx+1; $so = 0; } hlaska ($pocetx, $poceto); hlaska ($sx, $so); } $pocetx=0; $poceto=0; $so = 0; $sx = 0; } function hlaska($x,$o){ if ($x==5){ echo "Vyhrál uživatel křížky... Hrát znovu"; exit; } if ($o==5){ echo "Vyhrál uživatel kolečka... Hrát znovu"; exit; } } </pre> |
||
lukaspce Profil |
#24 · Zasláno: 20. 2. 2007, 19:16:11
mno já potřebuju párvě ten test do uhlopříček...
|
||
lukaspce Profil |
#25 · Zasláno: 20. 2. 2007, 19:21:45
tak jsem vyzkoušel tu verzi "2" a fachá jak vertikální směr tak i horizontalni viz http://zahrajte-si-piskvorky.ic.cz/kontrola.php (ted je tam nastaveny vertikalni...) ale to už sem udelal sam... ja hlavne potřebuju ty uhlopříčky...
|
||
Pavel Prochazka.zde.cz Profil * |
#26 · Zasláno: 20. 2. 2007, 19:27:06
sem to mirne skousel a scriptik me ohlasil.....:
Fatal error: Maximum execution time of 15 seconds exceeded in /home/free/ic.cz/z/zahrajte-si-piskvorky/root/www/ai/index.php on line 74 |
||
Pavel Prochazka.zde.cz Profil * |
#27 · Zasláno: 20. 2. 2007, 19:31:44
uhlopricky jsou mirne slozitejsi....
bud to udelas dalsim novym testem.... a nebo na to pouzijes prasacky pristup a ten zamohlujes do stavajiciho cyklu a budes testovat vsech 5. respektive 10 poli naraz v uhlu 45 stupnu, pomoci predem definovanych indexu plus k tem indexum budes prititat aktualni pozici, akorad nezapomen na vcesne ukonceni testovani, abys nepresahnul pole, nevim co to udela v PHP ale tipuji za nic, ale v kazdem solidnim jazyku to hodi error.... Ja bych zvolil ten prasacky. Neco napis a ja se na to zitra podivam.... cos vytvoril.... |
||
lukaspce Profil |
#28 · Zasláno: 20. 2. 2007, 19:45:41
no to ai stejne musim smazat neni moje..
|
||
lukaspce Profil |
#29 · Zasláno: 20. 2. 2007, 20:52:23
achjo já ty uhlopříčky ne a ne pochopit...chjo pls napiš to ty.. =(
|
||
Časová prodleva: 3 dny
|
|||
lukaspce Profil |
#30 · Zasláno: 23. 2. 2007, 19:16:32
Mno takže jsem to vyřešil teda jen jendu uhlopříčku ale druhá bude podobná...
code: //diagonální kontrola / for($x2=1; $x2<16; $x2++) { for($y2=1; $y2<16; $y2++) { for($x=$x2, $y=$y2; $x<16, $y<16; $x++, $y++) { if ($znak[$x][$y]=="krizek") { $pocetx++; $poceto=0; } if ($znak[$x][$y]=="kolecko") { $poceto++; $pocetx=0; } if (($znak[$x][$y]!="krizek") && ($znak[$x][$y]!="kolecko")) { $pocetx=0; $poceto=0; } if ($pocetx==5) { echo "Vyhrál uživatel křížky... Hrát znovu3"; exit; } if ($poceto==5) { echo "Vyhrál uživatel kolečka... Hrát znovu3"; exit; } } } } |
||
Téma pokračuje na další straně.
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0