Kezdőoldal » Számítástechnika » Programozás » Nyolc királynő problémában...

Nyolc királynő problémában királynők valid elhelyezése?

Figyelt kérdés

Elkezdtem megírni a 8 királynő probléma táblás játékot és nem tudom, hogy hogyan tudnám ellenőrizni azt, hogy ha teszek le egy új királynőt, akkor ezt a többi ne üsse. Úgy csinálom az egészet, hogy mikor a 8x8 as kezdetben üres sakk táblára le teszek egy királynőt, akkor egy boolean volt [8] [8] as mátrixban, (amiben kezdetben minden elem, hamis) azt az elemet ahova tettem a királynőt igazzá állítom, viszont most kellene egy metódus ahol tudnám ellenőrizni, hogy ahova clicckelek(raknám az új kir.nőt) az a volt[8][8] as igaz elemeit átlósan, vízszintesen, függőlegesen nem e metszi. HOgyan tudnám ezt megcsinálni? Köszönöm a segítséget előre! :)

UI: Java-ban írom a játékot



#játék #programozás #Java #nyolckirálynő probléma #valid elhelyezés
2017. jan. 11. 16:36
 1/10 anonim ***** válasza:
És hol akadtál el? Végigmész vízszintesen, függőlegesen és átlósan hogy van-e ott királynő.
2017. jan. 11. 16:43
Hasznos számodra ez a válasz?
 2/10 A kérdező kommentje:

Szóval az oszlopot és a sort azt tudom ellenőrizni, hogy ott nincs e királynő, de az átlóira nincs ötletem, hogy kellene végig járni, eddig így áll a metódusom:

private boolean rossze(int sor, int oszlop){

for(int j=0; j<M; j++){

if(volt[sor][oszlop]!=volt[sor][j]){

return false;

}

else if(volt[sor][oszlop]!=volt[j][oszlop]){

return false;

}

else if(volt[sor][oszlop]!= ){

return false;

}

}

return true;

}

Az első if ellenőrzi a sorát, a következő else if az az oszlopát és a harmadik else if be kellene, az ami az átlóit

2017. jan. 11. 17:16
 3/10 anonim ***** válasza:

# 2/2 Időpont ma 17:16


Először gondolkodj csak 3x3-as táblában, aminek a közepére leraksz egy királynőt? Mi lesz a 4 átló koordinátája? Aztán 4x4, 5x5, stb.

2017. jan. 11. 17:22
Hasznos számodra ez a válasz?
 4/10 coopper ***** válasza:

Szia.


Szerintem egy sima if, megnézed, hogy a 8x8-as mátrixnak az aktuális poziciója (ahová éppen leraknád a királynőt,) az hamis-e, ha hamis, az akkor azt jelenti, hogy nem kerül űtésbe az éppen lerakott királynő.


Ehhez viszont az kell, hogy ne csak azt az elemet állítsd igazra ahová leraktad a királynőt, hanem a királynő által bejárható területet mind.


Ez viszont ciklussal (For ciklus) tudod megtenni, a királynő sorába, oszlopába illetve átlósan eső mátrix elemeket, is át kell billenteni hamisról igazra.


Sok sikert.

Üdv.

2017. jan. 11. 17:22
Hasznos számodra ez a válasz?
 5/10 tabaki ***** válasza:
Mi a gond az átlóval? Együtt kell változtatni a két indexet, míg valamelyik bele nem ütközik a tábla szélébe.
2017. jan. 11. 17:23
Hasznos számodra ez a válasz?
 6/10 A kérdező kommentje:
Igen ezt én is tudom, de hogyan tudok ellenőrizni a szélekig?
2017. jan. 11. 17:40
 7/10 anonim ***** válasza:

> hogyan tudok ellenőrizni a szélekig?


Pl. ha (x < 0 || x > 7), akkor x kívül van.

2017. jan. 11. 18:45
Hasznos számodra ez a válasz?
 8/10 tabaki ***** válasza:

Én a Javához nem is konyítok, de Lazarusban megírtam, köszi a tippet.

Nálam így néz ki például a balra fel és jobbra lemenő átlós letiltás (X, Y a királynő koordinátái):


tx := X; ty := Y;

while (tx > 0) and (ty > 0) do

      begin

            Dec(tx); Dec(ty);

            tomb[tx, ty] := tilto;

      end;


tx := X; ty := Y;

while (tx < 7) and (ty < 7) do

      begin

            Inc(tx); Inc(ty);

            tomb[tx, ty] := tilto;

      end;


[link]

[link]

[link]

2017. jan. 12. 00:59
Hasznos számodra ez a válasz?
 9/10 tabaki ***** válasza:
2017. jan. 12. 12:50
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:
Köszöntem szépen :)
2017. jan. 12. 19:52

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!