Autor Zpráva
mscc92
Profil *
Dobry vecer,
uz dlouhou dobu se trapim, ponevadz mam temer hotove piskvorky (gomoku 19x19) v php, nedari se mi vsak napsat funkci, ktera by vyhodnotila vyherni situace (pri peti znacich vedle sebe u vsech tri smeru ohlasila vyhru) a zacinam z toho byt pomerne zoufaly a unaveny.
Kdybyste nekdo mel tuto cast kodu, byl bych vam moc moc vdecny.
Keeehi
Profil
mscc92:
Když nám ukážeš kód, tak by to problém být neměl.
Alphard
Profil
mscc92:
V každém případě můžete projít všechny možné řady (není jich tak moc) a počítat počet stejných znaků za sebou. Chytřejší algoritmus vidím spíš pesimisticky.
mscc92
Profil *
<?php
error_reporting(0);
function vykresli($seznam,$kdo){
# Stridani hracu.
if ($kdo==0) {$kdo=1;}
else {$kdo=0;}


# Vykresleni hraciho pole 19x19. Prochází se seznam, ktery reprezentuje hraci pole, a v závislosti na hodnote (0,1,2)
# se priradi jeden z obrazku k vykresleni.

$i=1;      #Definovani promenne bunky
while ($i<=count($seznam)) {
$sez_r=join("",$seznam);
if ($seznam[$i-1]==0) {echo("<a href='index.php?alfa=1&hrac=".$kdo."&bunka=".$i."&pole=".$sez_r."'><img src='nic.png'></a>");}
if ($seznam[$i-1]==1) {echo("<img src='o.png'>");}
if ($seznam[$i-1]==2) {echo("<img src='x.png'>");}

if($i%19==0){echo("<br>");}    #Tato cast zajistuje, aby po kazde 19 bunce v poli zacal novy radek
$i=$i+1;

}

# Konec vykreslování
}


$alfa =  $_GET['alfa'];


# Nastaveni pocatecni situace. Seznam neboli pole v pocatecni situaci obsahuje same nuly.
if ($alfa!=1)
{
$hrac=0;
$pole= array (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
}
else{

$hrac =  $_GET['hrac'];
$bunka =  $_GET['bunka'];
$policko =  $_GET['pole'];

$pole= array();
$i=0;
while ($i<strlen($policko))
{
$pole[count($pole)]=(int)$policko[$i];
$i=$i+1;
}
#Zde dojde k samotne zmene nuly v bunce na jednicku ci dvojku 
if ($hrac==0){$pole[$bunka-1]=1;}
if ($hrac==1){$pole[$bunka-1]=2;}

# ZDE PRBUDE FUNKCE, KTERA BUDE KONTROLOVAT VYHRU.

}

vykresli($pole,$hrac);

?>
Krakatoa
Profil
Pole bych udělal 19x19 (první x, druhé y). To číslo 0,1,2 by bylo třeba z.
Projížděl bych část pole 15x15, pro každý bod kontroloval jestli netvoří body jednoho hráče pro:
1) [x,y] + [x,y+1] + [x,y+2] + [x,y+3] + [x,y+4]
2) [x,y] + [x+1,y] + [x+2,y] + [x+3,y] + [x+4,y]
3) [x,y] + [x+1,y+1] + [x+2,y+2] + [x+3,y+3] + [x+4,y+4]

Triviální, rači udělej piškvorkový motor, chystám se na něj, ale asi se na něj nikdy nevrhnu :-(

Trošku mimo téma:
Využiju toho, že je tu topik s piškvorkama. Jestli má někdo zájem a měl by chuť vytvořit piškvorkový motor (gomoku 15x15), tak bych rád s někým se do toho vrhnul, samotnýmu se mi do toho nechce :-)
Jinak nejsilnější motor, co jsem zatím dohledal, má fiver.6.81 (vytvořili ho studenti na jedné čínské univerzitě)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0