10x10-es amőba játékban hogy ellenőrzöm le, hogy van-e győztes?
csinálsz egy tömböt, amibe belerakod az irányokat, mint pl
0, 1 -> x tengely 0, y 1 -> lefelé
1, 1 -> jobbra le
stb
és nézed hogy adott irányban van e 5db ugyanabból a jelből.
az egész táblán menj végig vele
for minden c Cell.
__for auto i : directions
____symbol = c.symbol;
____for j = 1 to 5
______cella = c.x + j*i[0], c.y + j*i[1];
______ha a cellaban az van ami az elsoben akkor ok...
Gugli javaslatok:
check tic tac toe game over
check tic tac toe winner
Lesznek konkrét algoritmusok is.
Szia.
Én igy csinálnám :
1. először is a táblát nem 10x10-esnek venném fel hanem -2-től 12-ig. (ez azért kell, hogy ne keljen azt ellenőrizgetni, hogy a tábla elején vagy-e, vagy a tábla végén és igy nem indexelsz túl a táblán.
2. Aztán ahogy Te is irtad két egymásba ágyazott ciklus, de NEM for ciklus, inkább olyan ciklus amiből ki lehet lépni, ha megtaláltad a győztest.
3. A Ciklusok magjában, már csak meg kell irni a 4 irányra a feltételeket (Vizszintes, Függőleges, Bal átló, Jobb átló).
4. Vizzsgálathoz is használhatsz egy ciklust (ez lehet for ciklus ami -2-től +2-ig megy, és szummázza az azonos értékeket a táblában) A szummázáshoz is kell 2x4 db változó (minden iránynak egy és a két féle értéknek X vagy O), ha szumma érték 5 akkor valaki nyert. Ennek a ciklusnak a változóját nevezzük poz-nak, akkor :
Vizszintes vizsgálathoz : Tabla[X+poz][Y]-t kell szummázni
Függőleges vizsgálathoz : Tabla[X][Y+poz]-t kell szummázni
Bal átló vizsgálatához : Tabla[X+poz][Y+poz]-t kell szummázni
Jobb átló vizsgálatához : Tabla[X-poz][Y+poz]-t kell szummázni
Szerintem valahogy igy.
Sok sikert.
üdv.
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!