C Sharp, Aknakereso, bombak helyzetenek vizsgalata.

C Sharp, Aknakereso, bombak helyzetenek vizsgalata.
2019-12-09T08:50:18+01:00
2019-12-12T01:47:40+01:00
2022-10-15T21:26:26+02:00
rweber
Sziasztok, a kovetkezo problemaban szeretnek segitseget kerni.

Adott az ismert Aknakereso jatek, amit C#-ban kell megirnom. A Megjelenites resze dinamukusan 
letrehozott Cimkekkel es Gombokkal mar megvan, viszont a ketdimenzios tobb vizsgalataval mar vannak problemaim. Az otletem annyi lenne ,hogy csinalok egymasba agyazott FOR ciklusokat (tomb elemeinek bejarasa)es azon belul egy csomo IF feltettellel vizsgalnam hogy az adott elem korul vannak-e bombak , ha igen akkor minden esetben a cimke TEXT tulajdonsag erteke novekszik eggyel.

A kerdes az lenne, hogy valakinek van-e elegansabb otlete, hogyan lehetne a raklapnyi IF feltetelt kivaltani.

Elore is koszonom!

UDV
Mutasd a teljes hozzászólást!
Egyik lehetőség: a szomszédok végigjárásához is egymásba ágyazott for ciklust használsz, mert az egy 3x3-as terület. Viszont figyelni kell rá, hogy ne akarj a pályán kívül lévő mezőre hivatkozni, és magát a mezőt ( a (0,0) eltolást) ne vedd figyelembe.

Pszeudo-kódban valahogy így:

szomszédos_aknák := 0 ciklus x_eltol megy -1-től +1-ig: ciklus y_eltol megy -1-től +1-ig szomszéd_x = eredeti_x + x_eltol szomszéd_x = eredeti_y + y_eltol ha nem (x_eltol = 0 és y_eltol = 0) és szomszéd_x >= 0 és szomszéd_x < TÁBLA_SZÉLESSÉG és szomszéd_y >= 0 és szomszéd_y < TABLA_MAGASSÁG és van_akna(szomszéd_x, szomszéd_1) szomszédos_aknák += 1
Nem feltétlenül a leggyorsabb, de kevesebb a hibalehetőség, és el is tudod pakolni egy külön kis függvénybe, hogy ne a fő kódodban legyen egy négyszeresen egymásba ágyazott ciklus.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd