29. Programozasi feladat - Aknakereső

Aknakereső programozási feladat

Feladat kiírása

Készíts Windows Form alapú programot, amely egy NxN-es pályán véletlenszerűen elhelyez aknákat. A felhasználó egérrel kattint valamelyik mezőre. Ha a felhasználó bombát talál el, akkor az robban. Ha nem bombát talál el, akkor a program kiírja, hogy a mező közvetlen környékén hány bomba található. Egy mezőre csak egyszer lehet rákattintani.

Egy játékosnak több élete is lehet, de kevesebb van, mint a bombák száma! A játékos nyer, ha minden bomba nélküli helyet megtalál és még marad élete!

Nehezített programozási probléma:

Ha a bombák hatóereje különböző és a robbanáskor több vagy kevesebb életet vesz el a játékostól.

Megoldási javaslat

Hozz létre egy Buttonokból álló NxN-es két dimenziós tömböt. Ez lesz a pálya. Célszerűen két dimenziós tömb a gombok méreténél nagyobb távolságban helyezd el őket. A gombok neve legyen oszlop_sor alakú!

Hozz létre egy ugyanakkor méretű adat tömböt, szintén két dimenziósat. A bombák létezését az adattömbben jelöld olyan módon, hogy ha nincs bomba, akkor az elem értéke 0, ha van kisebb vagy nagyobb bomba, akkor az érték pozitív.

A gomboknak egy eseménykezelő függvényük legyen. Azt, hogy melyik mezőre kattintott a játékos onnan lehet tudni, hogy az eseménykezelő Sender objektuma ebben az esetben Button típusú lesz. A megkapott gomb Name paramétere oszlop_sor alakú string, amiből meg lehet állapítani, hogy melyik sorról és melyik oszlopról van szó.

Ha nem bombára kattint a játékos, akkor az x,y koordinátájú mező körüli mezőkben lévő pozitív értékeket érdemes megszámlálni. Mivel az aktuális mező ilyenkor 0 értékű, ezért az nem játszik bele a környezetbe. 

Figyelem: Ha szélső helyen kattintunk, akkor  a környező helyek vizsgálatánál kívül kerülhet az index a tömbök méreténél, ezért a tömböket egy sorral és oszloppal nagyobbra kell venni!