Hogyan vizsgáljam meg egy amőba játékban, hogy van e egymás mellett 5 darab X vagy O karakter a 10 * 10 pályán? C++.
Szerintem úgy egyszerű, hogy csak a legutolsó lépést kell megnézni, hogy az kiegészít-e egy 5-ös sort, ami már nem olyan nehéz, mint megnézni az egész táblát.
Egyszerűen minden irányba elindulsz egy ciklussal amíg üres mezőt, tábla szélét, vagy az ellenfél jelét nem találod. Összeszámolod hogy hány egyforma mező volt az adott irányokba, összeadod a szemközti oldalakat, azaz a bal irányt a jobbal, fel-le, és a megfelelő átlókat és ha valahol 5 vagy annál több van akkor kész.
Igen de nem tudom kódba önteni.
Hogyan jelezzem a tábla szélét?
"Egyszerűen minden irányba elindulsz egy ciklussal"
Ezt,hogyan?
Igen már értem csak az nem tiszta még,hogy hogyan jelezzem a pálya szélét.
Ha 10x10 es a pálya akkor 11x11 hozzak létre és minden utolsó kockát ami a pálya széle lesz azt kinevezem 5 nek és minden 5 ös a pálya széle.
Így kell megcsinálni?
De nem tetszik ez a megoldás amit írtam.
Nem lehetne valahogy úgy,hogy ne keljen külön részt létrehoznom a tömbben a pálya vége jelzésére?
Gondolom a pálya egy 10*10-es kétdimenziós tömb lesz. Mondjuk amoba[10][10].
Onnan tudod hogy elérted a pálya szélét amikor a vizsgált index nem 0 és 9 között van, vagyis -1 vagy 10.
Pl. Ha a táblán a 2;5 pontba teszek egy X-et, akkor ez a tömbödben a 0 indexelés miatt az i=1; j=4 azaz amoba[1][4] elem lesz.
Elindulsz balra, vagyis csinálsz egy While ciklust
mondjuk
counterLeft = -1;
jatekosJele = "X";
while(i>=0 && amoba[i][j] == jatekosJele)
{
++counterLeft;
--i;
}
Ugyanez mondjuk lefele:
counterDown = -1;
jatekosJele = "X";
while(j<=9 && amoba[i][j] == jatekosJele)
{
++counterLeft;
++j;
}
Láthatod, hogy amikor már kilépnél a pályáról nem megy tovább a ciklus. Akkor sem, ha nem az ő jele van ott, ami jelen példában X.
A többi iránynál csak annyi a dolgod, hogy i-t és j-t megfelelőképpen növeled, vagy csökkented 1-el, átlós iránynál mindkettőt.
Remélem így már érthető a dolog
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!