Cred că toți ați întâlnit un astfel de joc ca un săpun. În acest program, este dat un câmp de 20x20, puteți alege numărul de mine la gustul dvs. de la 10 la 99. Minele sunt distribuite aleatoriu pe câmp, apoi se face trecerea prin întregul câmp. Ce facem noi:
1. Selectați celula.
2. A se vedea câte mine sunt în vecinătate (desigur, dacă celula în sine nu este o mină).
3. Înregistrați numărul de mine din vecinătate din celula dată.
Există, de asemenea, un meniu:
S - Start - începutul jocului, adică Se creează o stare în funcție de numărul curent de minute.
M - Meniu - Ieșiți din meniul principal.
E - Exit - Ieșiți din joc.
Indicatorul de deces este afișat în colțul din dreapta sus.
Jocul se termină atunci când fie toate celulele sunt deschise, cu excepția minelor, fie toate steagurile sunt steaguri. (Caseta de selectare este plasată cu butonul drept al mouse-ului).
Principala dificultate în această sarcină este de a deschide toate celulele goale adiacente când faceți clic pe o celulă goală. Vă voi oferi două opțiuni pentru rezolvarea acestei probleme:
1. BFS (Breadth-First Search). Acesta este implementat utilizând coada de așteptare.
2. DFS (Căutarea în profunzime). Acesta este implementat recursiv.
2. DFS:
Pentru o mai bună înțelegere a modului în care funcționează recursiunea, luați în considerare pseudo-codul DFS, cu explicații:
Arhiva conține, de asemenea, o versiune modificată și îmbunătățită a acestui joc. Dar codul pentru versiunea îmbunătățită nu este furnizat, dar un joc gata este oferit în scopuri informative.