« 1 2 »
Autor Zpráva
lukaspce
Profil
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
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 *
$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 *
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
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
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
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
Pls help me už si s tím nevím rady
Pavel Prochazka.zde.cz
Profil *
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
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 *
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
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 *
Jestly jsem to dobre pochopil tak musi nekde bejt vzdy 5 stejnych policek za sebou.... vodoravne nebo svisle ci do uhlopricky?
lukaspce
Profil
jj
Pavel Prochazka.zde.cz
Profil *
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
to se stat nemuze =)
Pavel Prochazka.zde.cz
Profil *
<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 *
akorat tam chyby test na krizek s kolecky nebo s krizky.....
lukaspce
Profil
nejak to nefachá...
lukaspce
Profil
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 *
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 *
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 *
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
mno já potřebuju párvě ten test do uhlopříček...
lukaspce
Profil
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 *
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 *
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
no to ai stejne musim smazat neni moje..
lukaspce
Profil
achjo já ty uhlopříčky ne a ne pochopit...chjo pls napiš to ty.. =(
lukaspce
Profil
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;
}
}
}
}
« 1 2 »
Toto téma je uzamčeno. Odpověď nelze zaslat.