![Minesweeper-Raspberry-Pi-Edition: 7 lépés (képekkel) Minesweeper-Raspberry-Pi-Edition: 7 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-1893-9-j.webp)
Tartalomjegyzék:
- Kellékek
- 1. lépés: Gombképek létrehozása
- 2. lépés: A program formázása
- 3. lépés: Hozza létre a GUI -t (menü és aknakereső rács)
- 4. lépés: Működtesse a játékon belüli képernyő gombjait
- 5. lépés: "setDifplicy" Módszer és "újraindítás" módszer
- 6. lépés: Játékvégi forgatókönyvek
- 7. lépés: Az újraindítás gomb működőképessé tétele
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:47
![Minesweeper-Raspberry-Pi-Edition Minesweeper-Raspberry-Pi-Edition](https://i.howwhatproduce.com/images/001/image-1893-10-j.webp)
![Minesweeper-Raspberry-Pi-Edition Minesweeper-Raspberry-Pi-Edition](https://i.howwhatproduce.com/images/001/image-1893-11-j.webp)
Az utolsó projektem a Louisiana Tech University CSC 130 sorozatához a Minesweeper Raspberry Pi Edition. Ebben a projektben arra törekedtem, hogy a Python programozási nyelv Tkinter könyvtárának felhasználásával újjáteremtsem a klasszikus aknakereső játékot. Az aknavető játékban lévő rács nyolc lapka szélességű és öt csempe magasságú. A projekt formázása alkalmas és tökéletes lett a Python 2.7 -tel telepített Raspberry Pi használatához.
A Minesweeper Raspberry Pi Edition végső projekt kódja és képei letölthetők az alábbi linkről:
Minesweeper-Raspberry-Pi-Edition
Kellékek
x1 Rózsaszín
Python 2.7 telepítve a Raspberry Pi -re
Microsoft Powerpoint (vagy más szoftver gombok képeinek létrehozásához)
1. lépés: Gombképek létrehozása
![Gombképek létrehozása Gombképek létrehozása](https://i.howwhatproduce.com/images/001/image-1893-12-j.webp)
MAGYARÁZAT:
A GUI -t alkotó minden gombot létre kell hozni. Ehhez a feladathoz a Microsoft Powerpoint segítségével készítettem el a gombokon megjelenítendő képeket.
Először létrehoztam a tíz csempegombot, amelyek az aknavető rácsának elkészítéséhez szükségesek (üres, bob, nulla, egy, kettő, három, négy, öt, hat, hét és nyolc) a Microsoft Powerpoint használatával.
Másodszor, a Microsoft Powerpoint segítségével készítettem el a menü képernyőhöz szükséges négy képet (menü megjelenítése, egyszerű nehézség gomb, közepes nehézségű gomb és nehéz nehézség gomb).
Harmadszor, a Microsoft Powerpoint segítségével készítettem el az újraindítás gombhoz szükséges képet és a többi megjelenítőgombhoz szükséges képeket ("game over" kijelző, "nyersz" kijelző és "szabályok" kijelző).
Negyedszer, át kell méreteznie a képeket, hogy illeszkedjen a képernyőhöz. A Rasberry Pi esetében a következő méreteket használtam az ablakhoz (a hosszúság és szélesség pixeleire vonatkozva): 432x576.
2. lépés: A program formázása
![Formátum Program Formátum Program](https://i.howwhatproduce.com/images/001/image-1893-13-j.webp)
MAGYARÁZAT:
Mielőtt bármilyen tényleges programozás megvalósulhat, importálnunk kell a szükséges könyvtárakat, és meg kell írnunk programunk fő részét.
Először importálnunk kell * a Tkinter könyvtárból, és meg kell kevernünk a véletlenszerű könyvtárból. Másodszor, a program fő részén belül a következő kódlépéseket kell elvégeznünk: létre kell hoznunk az ablakot, be kell állítanunk a címablakot, létre kell hoznunk a grafikus felületet, és meg kell jelenítenünk a grafikus felületet, és meg kell várnunk a felhasználói interakciót. Ez a kód a Tkinter könyvtárra vonatkozóan megfelelő formátumban van írva (nézze meg az utasításban megadott kódot a megfelelő formázáshoz).
3. lépés: Hozza létre a GUI -t (menü és aknakereső rács)
![GUI (menü és aknakereső rács) létrehozása GUI (menü és aknakereső rács) létrehozása](https://i.howwhatproduce.com/images/001/image-1893-14-j.webp)
![GUI (menü és aknakereső rács) létrehozása GUI (menü és aknakereső rács) létrehozása](https://i.howwhatproduce.com/images/001/image-1893-15-j.webp)
![GUI (menü és aknakereső rács) létrehozása GUI (menü és aknakereső rács) létrehozása](https://i.howwhatproduce.com/images/001/image-1893-16-j.webp)
![GUI (menü és aknakereső rács) létrehozása GUI (menü és aknakereső rács) létrehozása](https://i.howwhatproduce.com/images/001/image-1893-17-j.webp)
MAGYARÁZAT:
A program indításakor a menü képernyő jelenik meg. A nehézség kiválasztása után (a menü képernyő egyik nehézségi gombjára kattintva) a GUI -t frissíteni kell az aknavető rácsával, a kijelzővel és az újraindítás gombbal. Mivel csak most kezdi el a GUI -n való munkát, csak a menü indítását kell elvégeznünk, a menü nehézségi gombjait működésbe kell hozni, és a GUI -t frissíteni kell a játék képernyőjére az aknakereső rács segítségével.
Először is, a program indításakor megjeleníthetjük a menü képernyőjét, ha meghívjuk a "setupMenu" metódust a MainGUI osztály konstruktorán belül.
Másodszor, a menü minden egyes nehézségi gombja végrehajthat bizonyos kódsorokat, amikor rájuk kattint, egy "process" metódus hozzáadásával (a lambda: self.process ("returnButtonName") parancsot is hozzá kell adni a használt gombfunkció paramétereihez) az egyes nehézségi gombok létrehozásakor). Három if-else utasítás jön létre a "process" metódusban, és bizonyos egyéb módszereket és további kódsorokat hajt végre, attól függően, hogy a gomb milyen (a gomb megegyezik a legutóbb regisztrált gomb nevével).
Harmadszor, amíg a menü képernyő fent van, és ha a felhasználó rákattint az egyik nehézségi gombra, a program elmenti egy bizonyos értéket a "nehézség" változóba (a nehézség "könnyű", "közepes" vagy "kemény" alapú Ez a gombkattintás tudja, hogy melyik if-else utasítást kell követni a legutóbbi gombnév alapján (milyen gomb felel meg). Ezenkívül a "nehézség" változó új hozzárendeléséhez először példányosítanunk kell Ezért a "vaike" változót üres karakterláncként állítjuk be a "MainGUI" osztály létrehozása előtt.
Negyedszer, törölje a GUI -t a "setupMenu" módszerrel létrehozott gombokból egy "clearMenu" módszerrel (a button.destroy () függvény használatával több esetben), és hívja meg a "clearMenu" metódust a "process" metódusban (a nehézségi gombok mindegyike regisztrál a nehézségi változó hozzárendelése után).
Ötödször, frissítse a GUI -t egy "setSLASHresetGUI" metódussal (a gombok ugyanúgy készülnek, mint a "setupMenu" metódusban), és hívja meg a "setSLASHresetGUI" metódust a "process" metódusban (a nehézséggombok mindegyike alatt a nehézségi változó hozzárendelés és a "clearMenu" módszer meghívása).
Ezenkívül, mielőtt az összes gombot hozzárendelné a "setSLASHresetGUI" metódushoz, konfigurálnunk kell a rácson belüli sorokat és oszlopokat, és miután az összes gombot hozzárendeltük a "setSLASHresetGUI" metódushoz, be kell csomagolnunk a rács összes tartalmát (lásd a az utasításban megadott kódot a megfelelő formázáshoz).
4. lépés: Működtesse a játékon belüli képernyő gombjait
![Működtesse a játékon belüli képernyő gombjait Működtesse a játékon belüli képernyő gombjait](https://i.howwhatproduce.com/images/001/image-1893-18-j.webp)
![Működtesse a játékon belüli képernyő gombjait Működtesse a játékon belüli képernyő gombjait](https://i.howwhatproduce.com/images/001/image-1893-19-j.webp)
![Működtesse a játékon belüli képernyő gombjait Működtesse a játékon belüli képernyő gombjait](https://i.howwhatproduce.com/images/001/image-1893-20-j.webp)
![Működtesse a játékon belüli képernyő gombjait Működtesse a játékon belüli képernyő gombjait](https://i.howwhatproduce.com/images/001/image-1893-21-j.webp)
MAGYARÁZAT:
Ahhoz, hogy a gombok bizonyos kódsorokat hajtsanak végre, amikor rákattintanak, a "process" metóduson belül kell végrehajtanunk metódusokat. Ehhez a feladathoz több új módszert, változót és listát kell készítenünk.
Először két listát készítünk. Létezik egy "grid" nevű lista. Ez a "rács" lista csak a 9-es és 0-ás egész számokat tartalmazza. Ebben a listában a kilenc a bombákat, a nullák a nem bombákat jelölik. A program így fogja megkülönböztetni, hogy egy lapka bomba -e vagy sem. Létrejön egy második lista, amelyet "állapotnak" neveznek. Ez az "állapot" lista csak egy karakterláncból áll ("0", "1", "2", "3", "4", "5", "6", "7", "8", "b" "). Ebben a listában minden egyes karakterlánc egy bizonyos képnek felel meg. A program így tudja, hogy az aknavető rács minden gombján milyen képet jelenítsen meg. Az aknakereső rács minden gombjának megfelelő indexe lesz minden listában a rácsban való elhelyezése alapján. A megfelelő index hozzárendelése a következő eljárással történik (gombszám - 1). Például a gombok megfelelő indexe minden listában nulla. Végül ez a két lista a "MainGUI" osztály végrehajtása előtt kerül végrehajtásra, és a "MainGUI" osztályon kívül jön létre. A "rács" osztály üres listaként jön létre (rács = ), az "állapot" listát pedig egy tartományfüggvény hozza létre (negyven "n" karakterlánc hozzáadása az "állapot" listához).
Másodszor, különféle módszereket készítünk, amelyek képesek észlelni a környező aknák számát, és amelyek egy gomb megnyomására hívhatók fel (a végrehajtandó módszer eldöntését a gomb elhelyezése határozza meg). Ezeket a módszereket nevezzük bányaelemzőinknek. Ezek a módszerek növelik a "NumOfMines" nevű számlálót, és bizonyos indexeket használnak a "rács" listán belül annak meghatározására, hogy hány bomba veszi körül a lapkát. A "NumOfMines" változóban tárolt karakterlánc a "status" listában szereplő azonos index helyettesítésére szolgál. Most azon tűnődhet, vajon honnan tudja a program, hogy melyik indexet használja. Amikor egy gombot regisztrálnak a "folyamat" módszerben, akkor egy "index" változó jön létre/kerül hozzá egy bizonyos egész számhoz (attól függően, hogy a gomb milyen karakterláncot regisztrál). Az egyik létrehozott módszer a hozzárendelt indexet fogja használni a lapka elhelyezésének és az azt körülvevő lapok indexeinek megismeréséhez (ezt a módszer algoritmusa fogja kitalálni). Ezenkívül az "index" változó újbóli hozzárendeléséhez először az osztályon kívül kell példányosítanunk. Tehát a "MainGUI" osztály létrehozása előtt előre beállítjuk az "index" változót egész nullának.
Harmadszor, "működési" módszerek jönnek létre. A "művelet" módszer minden alkalommal végrehajtásra kerül, amikor egy gombot regisztrál. Ezeket a "működési" módszereket a "folyamat" metódusban kell végrehajtani. A "folyamat" módszerben több if-else utasítás határozza meg, hogy melyik gombra kattintottak (az alapján, hogy mi a gomb értéke). Ebben az esetben egy bizonyos "művelet" metódust fognak használni (az if-else utasításokban).
Negyedszer, valójában belemerülünk a gombok működőképességébe. Amint azt korábban említettük, több if-else utasítás található a "process" metódusban, és bizonyos más módszereket és további kódsorokat is végrehajt, attól függően, hogy a gomb milyen (a gomb megegyezik az utoljára regisztrált karakterlánccal). Ezekben az if-else utasításokban a következő sorrendben fognak történni: az index globálisan lesz hozzárendelve, az "állapot" lista megfelelő indexe újra a "b" karakterlánchoz lesz rendelve (ha a "rács" lista megfelelő indexe a kilenc egész szám), a megfelelő "művelet" metódust hajtják végre (ha a "rács" lista megfelelő indexe megegyezik a nulla egész számmal), akkor az "állapot" listában szereplő megfelelő indexet hozzárendelik egy karakterlánchoz, amely megegyezik a változóval "NumOfMines" (ha a "rács" lista megfelelő indexe megegyezik a nulla egész számmal), és a GUI frissül a "setSLASHresetGUI" metódus meghívásával.
5. lépés: "setDifplicy" Módszer és "újraindítás" módszer
![Kép Kép](https://i.howwhatproduce.com/images/001/image-1893-22-j.webp)
![Kép Kép](https://i.howwhatproduce.com/images/001/image-1893-23-j.webp)
MAGYARÁZAT:
Ezután létre kell hozni egy "setDifplicy" módszert, és a játékon belüli képernyő alján található újraindító gombot működőképessé kell tenni (egy "újraindítási" módszer létrehozásával, amely akkor hajtható végre, amikor a felhasználó rákattint.)).
Először is, a "setDifplicy" módszert végre kell hajtani a "process" metódus nehézségi gombjainak if-else utasításaiban és az "restart" metódusban. Az ezzel a módszerrel végrehajtott kódsorok és módszerek meglehetősen egyszerűek. A "setDifplicy" módszerben bizonyos mennyiségű nullát (nem bombát) és kilencet (bombát) fűzünk a "rács" listához (két tartományfüggvényen keresztül minden if-else utasításon belül), majd keverjük a "grid" lista (a véletlen könyvtár véletlenszerű keverési funkciójával) a "setDifplicy" metóduson belül (az if-else utasítások végrehajtása után). A nullák és kilencek arányát az határozza meg, hogy a "nehézség" változó milyen karakterláncra van állítva ("könnyű": 34-6, "közepes": 28-12, "kemény": 16-24).
Másodszor, az "újraindítás" módszerben globálisan nullára állítjuk az "index" és a "NumOfMinesLEFT" változókat, kiürítjük az "állapot" és a "rács" listákat globálisan, visszaállítjuk az "állapot" listát egy tartományfüggvénnyel (hozzáadva negyven "n" karakterlánc az "állapot" listához), és hívja fel a "setDifplicy" módszert.
6. lépés: Játékvégi forgatókönyvek
![Játékvégi forgatókönyvek Játékvégi forgatókönyvek](https://i.howwhatproduce.com/images/001/image-1893-24-j.webp)
![Játékvégi forgatókönyvek Játékvégi forgatókönyvek](https://i.howwhatproduce.com/images/001/image-1893-25-j.webp)
![Játékvégi forgatókönyvek Játékvégi forgatókönyvek](https://i.howwhatproduce.com/images/001/image-1893-26-j.webp)
![Játékvégi forgatókönyvek Játékvégi forgatókönyvek](https://i.howwhatproduce.com/images/001/image-1893-27-j.webp)
MAGYARÁZAT:
Minden aknakereső játéknak két játékvégi forgatókönyve van: győzelem és vereség. Ezen a programon belül ezt a két játékvégi forgatókönyvet két új módszerrel valósítjuk meg: egy "You_A_Winner_Son" és egy "GameOver" módszerrel. Mielőtt a GUI frissülne a "process" metóduson belül, és a két játékvégi forgatókönyv módszer által módosított indexek alapján, a kijelző gombja megváltozik, hogy megfelelően reprezentálja az eredményt.
Először is, amikor a felhasználó rákattint az utolsó rejtett, nem bomba csempére, akkor a "You_A_Winner_Son" metódust kell végrehajtani. Ezt a feladatot úgy fejezzük be, hogy a "You_A_Winner_Son" metódust hívjuk meg minden alkalommal, amikor egy lapkára kattintanak, és a lapka nem bombabiztos csempe (a "folyamat" metódusban végrehajtott "művelet" módszereken belül). Ha a nyertes feltételek teljesülnek, akkor a "You_A_Winner_Son" metóduson belül két if-else utasítás kerül végrehajtásra. Az első if-else utasítás mindig végrehajtódik, függetlenül attól, hogy a játékos nyert-e vagy sem, amikor ezt a módszert használják. Annak alapján, hogy a "nehézség" változó mennyivel egyenlő, egy bizonyos algoritmus, amely meghatározza, hogy hány akna/bomba marad rejtve. Az algoritmus által talált egész szám a "NumOfMinesLEFT" változóba kerül. Ezután a két if-else utasítás között egy másik algoritmus kerül végrehajtásra, amely megkeresi a hátralévő kezdő lapkák számát (nem kattintott csempék). Az algoritmus által talált egész szám a "NumOfStartingTilesLEFT" változóba kerül. A második if-else utasítás mindig végrehajtódik, függetlenül attól, hogy a játékos nyert-e vagy sem, amikor ezt a módszert használják. Annak alapján, hogy a "nehézség" változó mekkora, a három if-else utasítás egyike végrehajtható, ha feltételeik teljesülnek. A feltételek azon alapulnak, hogy a két változó "NumOfMinesLEFT" és "NumOfStartingTilesLEFT" egyenlő. Ezen a három if-else utasításon belül egy algoritmus kerül végrehajtásra, amely minden gombot használhatatlanná tesz (a játéknak vége).
Másodszor, amikor a felhasználó rákattint az egyik rejtett bombalapkára, akkor a "GameOver" módszert kell végrehajtani. Ezt a feladatot úgy fejezzük be, hogy minden alkalommal meghívjuk a "GameOver" metódust, amikor egy lapkára kattintunk, és kiderül, hogy a lapka bombalapka (a "folyamat" metódusban végrehajtott "művelet" módszereken belül). Amikor a "GameOver" metódust hívják, egy algoritmus fut, amely minden kezdő lapkát használhatatlanná tesz (a játéknak vége), és a rejtett bombalapkák feltárulnak (a "rácslista megfelelő indexei alapján, bizonyos indexek" a "státusz" listában az egy karakterből álló "b" karakterlánc lesz).
Harmadszor, a játékon belüli képernyő megjelenítése minden alkalommal frissül, amikor a GUI frissül, nagyon kevés apró módosítással a "setSLASHresetGUI" metóduson. A GUI rácsának konfigurálása után három if-else utasítást helyezünk el, ahol az aktuális kijelzőgomb-hozzárendelés található. A három if-else utasítás egyike a következő változók alapján fog végrehajtódni: "GameOverDETECTOR", "nehézség", "NumOfMinesLEFT" és "NumOfStartingTilesLEFT". Amint Ön kíváncsi, a "GameOverDETECTOR" változó új Ez a változó közvetlenül az if-else utasítások végrehajtása előtt jön létre a "setSLASHresetGUI" metóduson belül. A "GameOverDETECTOR" változó megegyezik azzal az egész számmal, amelyet egy algoritmus segítségével találunk, amely megtalálja a "rács" indexeit listát újra hozzárendelték a kilencvenkilenc egész számhoz (a gombok használhatatlanná válása). Amikor az if-else utasítás feltételei teljesülnek, akkor a kijelzőnek megfelelő átrendelés történik.
7. lépés: Az újraindítás gomb működőképessé tétele
![Az újraindítás gomb működőképessé tétele Az újraindítás gomb működőképessé tétele](https://i.howwhatproduce.com/images/001/image-1893-28-j.webp)
MAGYARÁZAT:
Ez a lépés a legrövidebb. Ennek a lépésnek a legtöbb munkája már megtörtént. Mindössze annyit kell tennünk, hogy végre kell hajtanunk az "újraindítás" módszert minden alkalommal, amikor a felhasználó rákattint az újraindítás gombra.
Először és végül az "újraindítás" metódust hajtjuk végre a "folyamat" metódusban egy if-else utasítással. Ha a "!" regisztrálva van, akkor az "újraindítás" módszert kell végrehajtani. A „setSLASHresetGUI” metódus végén létre kell hoznunk egy újraindítás nevű gombot is, mielőtt a rács tartalmát összecsomagolnánk. Ez az újraindító gomb feldolgozza a "!" Karakterláncot (parancs lambda: self.process ("!")), és hajtsa végre a megfelelő "restart" metódust a "process" metóduson belül.
Ajánlott:
DIY 37 LED Arduino rulett játék: 3 lépés (képekkel)
![DIY 37 LED Arduino rulett játék: 3 lépés (képekkel) DIY 37 LED Arduino rulett játék: 3 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-12-j.webp)
DIY 37 Leds Arduino Roulette Játék: A rulett egy kaszinójáték, amelyet a francia szóról neveztek el, jelentése kis kerék
Covid védősisak 1. rész: Bevezetés a Tinkercad áramkörökbe!: 20 lépés (képekkel)
![Covid védősisak 1. rész: Bevezetés a Tinkercad áramkörökbe!: 20 lépés (képekkel) Covid védősisak 1. rész: Bevezetés a Tinkercad áramkörökbe!: 20 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-31-j.webp)
Covid védősisak 1. rész: Bevezetés a Tinkercad áramkörökbe!: Helló, barátom! Ebben a kétrészes sorozatban megtanuljuk használni a Tinkercad áramköreit - ez egy szórakoztató, hatékony és oktató eszköz az áramkörök működésének megismerésére! A tanulás egyik legjobb módja, ha megteszed. Tehát először megtervezzük saját projektünket:
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: 7 lépés (képekkel)
![Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: 7 lépés (képekkel) Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: 7 lépés (képekkel)](https://i.howwhatproduce.com/images/001/image-1574-23-j.webp)
Útmutató: A Raspberry PI 4 fej nélküli (VNC) telepítése Rpi-képalkotóval és képekkel: Ezt a Rapsberry PI-t tervezem használni egy csomó szórakoztató projektben a blogomban. Nyugodtan nézd meg. Vissza akartam kezdeni a Raspberry PI használatát, de nem volt billentyűzetem vagy egér az új helyen. Rég volt, hogy beállítottam egy málnát
Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)
![Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel) Bolt - DIY vezeték nélküli töltő éjszakai óra (6 lépés): 6 lépés (képekkel)](https://i.howwhatproduce.com/images/010/image-27211-j.webp)
Bolt - DIY vezeték nélküli töltés éjszakai óra (6 lépés): Az induktív töltés (más néven vezeték nélküli töltés vagy vezeték nélküli töltés) a vezeték nélküli áramátvitel egyik típusa. Elektromágneses indukciót használ a hordozható eszközök áramellátásához. A leggyakoribb alkalmazás a Qi vezeték nélküli töltő
A számítógép szétszerelése egyszerű lépésekkel és képekkel: 13 lépés (képekkel)
![A számítógép szétszerelése egyszerű lépésekkel és képekkel: 13 lépés (képekkel) A számítógép szétszerelése egyszerű lépésekkel és képekkel: 13 lépés (képekkel)](https://i.howwhatproduce.com/images/006/image-15346-7-j.webp)
A számítógép szétszerelése egyszerű lépésekkel és képekkel: Ez az utasítás a számítógép szétszereléséről szól. A legtöbb alapvető alkatrész moduláris és könnyen eltávolítható. Fontos azonban, hogy szervezett legyen ezzel kapcsolatban. Ez segít elkerülni az alkatrészek elvesztését, és az újra összerakást is