Kezdőoldal » Számítástechnika » Programozás » Hogyan vizsgáljam meg egy...

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++.

Figyelt kérdés
2012. nov. 29. 16:23
 1/8 anonim ***** válasza:
88%

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.

2012. nov. 29. 16:37
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

Igen de nem tudom kódba önteni.

Hogyan jelezzem a tábla szélét?

2012. nov. 29. 16:43
 3/8 A kérdező kommentje:

"Egyszerűen minden irányba elindulsz egy ciklussal"

Ezt,hogyan?

2012. nov. 29. 16:43
 4/8 anonim ***** válasza:
ciklus amíg nem X vagy üres négyzet balra fel, aztán jobbra le és közben van egy számláló ami megszámolja hogy hány O van. Ugyanígy balra le-jobbra fel, fel-le, és jobbra-balra
2012. nov. 29. 17:52
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
és amíg nem mész ki a pályáról persze
2012. nov. 29. 17:52
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

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?

2012. nov. 30. 06:35
 7/8 A kérdező kommentje:
Azt mondjátok meg,honnan fogja tudni a program,hogy az a pálya széle.
2012. nov. 30. 07:04
 8/8 anonim ***** válasza:

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

2012. nov. 30. 08:40
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!