Autor | Zpráva | ||
---|---|---|---|
huf Profil |
#1 · Zasláno: 3. 6. 2009, 20:53:33
Nemáte někdo nápad, jak udělat vyhodnocení piškvorek (jesti někdo vyhrál) pomocí matic?
|
||
fuckin Profil * |
#2 · Zasláno: 3. 6. 2009, 21:21:12
v php?
|
||
huf Profil |
#3 · Zasláno: 3. 6. 2009, 21:39:22
Jj, v PHP
|
||
_es Profil |
#4 · Zasláno: 3. 6. 2009, 22:14:50 · Upravil/a: _es
huf
Ak by vyhovoval JavaScript, tak si pozri http://www.javascripter.net/games/xo/index.htm Alebo tu máš na to celý seriál (2 články) v češtine: http://interval.cz/clanky/online-piskvorky-v-php-s-mysql-1/ |
||
imploder Profil |
#5 · Zasláno: 3. 6. 2009, 22:29:27 · Upravil/a: imploder
co třeba nějak takhle?
$vyhra_x = 0; $vyhra_o = 0; $nutny_pocet = 3; // po řádcích for($r=0; isset($mat[$r]); $r++) { $rada_x = 0; $rada_o = 0; for($s=0; isset($mat[$r][$s]); $s++) { switch($mat[$r][$s]){ case "x": $rada_o=0; $rada_x++; break; case "o": $rada_x=0; $rada_o++; break; default: $rada_x=0; $rada_o=0; } if($rada_x >= $nutny_pocet) $vyhra_x = 1; if($rada_o >= $nutny_pocet) $vyhra_o = 1; } } // po sloupcích for($s=0; isset($mat[0][$s]); $s++) { $rada_x = 0; $rada_o = 0; for($r=0; isset($mat[$r][$s]); $r++) { switch($mat[$r][$s]){ case "x": $rada_o=0; $rada_x++; break; case "o": $rada_x=0; $rada_o++; break; default: $rada_x=0; $rada_o=0; } if($rada_x >= $nutny_pocet) $vyhra_x = 1; if($rada_o >= $nutny_pocet) $vyhra_o = 1; } } Analogicky pro obě diagonály. http://bprhad.wz.cz/piskvorky/piskvorky.php |
||
Časová prodleva: 5 dní
|
|||
imploder Profil |
#6 · Zasláno: 8. 6. 2009, 19:26:54
Udělal jsem i procházení diagonál, s adresováním jednotlivých bodů touhle třídou:
class diag { var $sirka; var $vyska; // je možné buď tímto konstruktorem načíst výšku a šířku z matice, // nebo referenci vynechat a nastavit proměnné $sirka, $vyska zvlášť function __construct(&$mat=NULL) { if(isset($mat)) { $this->sirka = strlen($mat[0]); $this->vyska = count($mat); } } /* * Vrátí souřadnici bodu na diagonále. * * $smer==0 -> doprava dolů, jinak -> doleva dolů * $n - pořadí diagonály zleva (počítá se od 0) * $d - vzdálenost bodu od začátku diagonály */ public function souradnice($smer, $n, $d) { if($smer==0) { if($n < $this->vyska) { $ret['x'] = 0 + $d; $ret['y'] = ($this->vyska-1-$n) + $d; } else { $ret['x'] = ($n-($this->vyska-1)) + $d; $ret['y'] = ($this->vyska-1-$n) + $d; } return $ret; } else { if($n < $this->sirka) { $ret['x'] = $n - $d; $ret['y'] = 0 + $d; } else { $ret['x'] = ($this->sirka-1) - $d; $ret['y'] = ($n - ($this->vyska-1)) + $d; } return $ret; } } // počet diagonál (pro oba směry stejný) public function pocet() { return $this->sirka + $this->vyska - 1; } } Doma mi funguje bez problémů, ale na wz.cz hází parse error: http://bprhad.wz.cz/piskvorky/piskvorky.php Předtím to házelo parse_error už na 11. řádku, PHP na wz.cz nebralo označení proměnných ve třídě public, takhle s var je bere. Je to divné, nenapadá náhodou někoho, proč PHP na wz.cz odmítá věci, které normálně mají jít? Když jsem z řádku 16 odstranil výchozí přiřazení NULL, tak to tam nehavarovalo, ale pak byl zase parse error na řádku 30 (tj. public function souradnice($smer, $n, $d) {). Prostě se to chová na wz.cz iracionálně, zatímco na localhostu kód funguje. >> kód << |
||
Alphard Profil |
#7 · Zasláno: 8. 6. 2009, 19:37:23
Viděl bych to na problém s verzí, trochu to mícháte dohormady. var je z PHP 4, __construct() z PHP 5, chování & se v obou verzích liší také. Označení proměnných public, private atd. je z PHP 5.
Celkově se OOP ve 4 a 5 verzi PHP dost změnilo, zjistěte si, jaká verze je na wz a jestli 4, doporučuji jít jinam, tohle nelze dost dobře zkloubit. |
||
imploder Profil |
#8 · Zasláno: 8. 6. 2009, 20:14:30 · Upravil/a: imploder
Alphard
Je to tak, na wz.cz je PHP 4.3.4. Jinde na PHP5 kód taky funguje. V PHP 4 zřejmě funkce a proměnné public vůbec nejsou. Reference - tam je do php5 omezení, že se nedá odkazovat na objekt - to není tento případ, takže to by nemělo mít vliv. Wz.cz je vážně naprd - pomalé, vypadává FTP a jak je vidět doteď tam není PHP 5. EDIT: přepsal jsem se |
||
Alphard Profil |
#9 · Zasláno: 8. 6. 2009, 20:22:47
imploder:
„V PHP 5 zřejmě funkce a proměnné public vůbec nejsou.“ Tam právě jsou :-) |
||
Kajman_ Profil * |
#10 · Zasláno: 9. 6. 2009, 08:26:49
Jen pozor, že třeba na mistroství ČR se hraje na právě 5 - tedy, že řada 6-9 symbolů nevyhrává, jak se tomu často děje ve školních lavicích :-)
|
||
Časová prodleva: 15 let
|
0