Cov txheej txheem:

Minesweeper-Raspberry-Pi-Edition: 7 Cov Kauj Ruam (nrog Duab)
Minesweeper-Raspberry-Pi-Edition: 7 Cov Kauj Ruam (nrog Duab)

Video: Minesweeper-Raspberry-Pi-Edition: 7 Cov Kauj Ruam (nrog Duab)

Video: Minesweeper-Raspberry-Pi-Edition: 7 Cov Kauj Ruam (nrog Duab)
Video: linux users be like 2024, Hlis ntuj nqeg
Anonim
Minesweeper-Raspberry-Pi-Tsab
Minesweeper-Raspberry-Pi-Tsab
Minesweeper-Raspberry-Pi-Edition
Minesweeper-Raspberry-Pi-Edition

Kuv qhov haujlwm kawg rau CSC 130 series ntawm Louisiana Tech University yog Minesweeper Raspberry Pi Edition. Hauv txoj haujlwm no, kuv nrhiav kom rov tsim dua cov game classic ntawm tus neeg tua tsiaj mines los ntawm kev siv Tkinter lub tsev qiv ntawv ntawm Python programming lus. Daim phiaj uas cov minesweeper game suav nrog yog yim pobzeb dav thiab tsib vuas qhov siab. Cov txheej txheem ntawm txoj haujlwm tau ua tiav thiab ua tiav rau kev siv Raspberry Pi teeb tsa nrog Python 2.7.

Cov cai thiab cov duab rau Minesweeper Raspberry Pi Edition qhov haujlwm kawg tuaj yeem rub tawm ntawm qhov txuas hauv qab no:

Minesweeper-Raspberry-Pi-Tsab

Khoom siv

x1 Raspberry Pi

Python 2.7 Nruab rau ntawm Raspberry Pi

Microsoft Powerpoint (lossis lwm lub software los tsim cov duab rau khawm)

Kauj Ruam 1: Tsim Khawm Duab

Tsim Khawm Duab
Tsim Khawm Duab

Piav qhia:

Txhua lub pob uas ua rau GUI yuav tsum tau tsim. Txog txoj haujlwm no, Kuv siv Microsoft Powerpoint los ua cov duab uas kuv xav tau los tso rau ntawm cov nyees khawm.

Ua ntej tshaj, Kuv tsim kaum pob khawm pobzeb xav tau los ua kom cov kab sib tsoo me me (dawb paug, bob, xoom, ib, ob, peb, plaub, tsib, rau, rau, xya, thiab yim) siv Microsoft Powerpoint.

Qhov thib ob, Kuv tau ua plaub daim duab xav tau rau lub vijtsam zaub (zaub zaub, khawm yooj yim, khawm nyuaj nruab nrab, thiab khawm nyuaj) siv Microsoft Powerpoint.

Thib peb, Kuv tsim cov duab xav tau rau khawm rov pib dua thiab cov duab xav tau rau lwm qhov khawm sib txawv (a "game over" display, a "you win" display, and a "rules" display) using Microsoft Powerpoint.

Plaub, koj yuav tau hloov qhov koj cov duab kom haum rau hauv koj lub vijtsam. Rau kuv Rasberry Pi, Kuv siv qhov ntev hauv qab no rau lub qhov rais (hais txog pixels hauv qhov ntev thiab dav): 432x576.

Kauj ruam 2: Format Program

Hom Kev Pabcuam
Hom Kev Pabcuam

Piav qhia:

Ua ntej ib qho kev ua haujlwm tiag tiag tuaj yeem tshwm sim, peb yuav tsum ntshuam cov tsev qiv ntawv uas peb xav tau thiab sau qhov tseem ceeb ntawm peb txoj haujlwm.

Ua ntej, peb yuav tsum tau ntshuam * los ntawm Tkinter lub tsev qiv ntawv thiab tshem tawm los ntawm lub tsev qiv ntawv tsis raug. Qhov thib ob, peb yuav tsum ua kom tiav cov theem hauv qab no hauv cov cai hauv ntu tseem ceeb ntawm txoj haujlwm: tsim lub qhov rais, teeb tsa lub npe qhov rai, tsim GUI, thiab tso saib GUI thiab tos rau cov neeg siv cuam tshuam. Cov cai no tau sau rau hauv kev tsim kom raug raws li kev hwm rau Tkinter lub tsev qiv ntawv (saib cov cai tau muab hauv cov lus qhia kom pom cov qauv tsim nyog).

Kauj Ruam 3: Tsim GUI (Ntawv Qhia & Minesweeper Grid)

Tsim GUI (Menu & Minesweeper Grid)
Tsim GUI (Menu & Minesweeper Grid)
Tsim GUI (Menu & Minesweeper Grid)
Tsim GUI (Menu & Minesweeper Grid)
Tsim GUI (Menu & Minesweeper Grid)
Tsim GUI (Menu & Minesweeper Grid)
Tsim GUI (Menu & Minesweeper Grid)
Tsim GUI (Menu & Minesweeper Grid)

Piav qhia:

Thaum pib ntawm qhov haujlwm, cov ntawv qhia zaub mov yuav tsum tau pib. Tom qab qhov teeb meem raug xaiv (los ntawm txhaj ib qho ntawm cov nyees khawm nyuab ntawm lub vijtsam zaub mov), GUI yuav tsum rov ua dua tshiab nrog daim phiaj minesweeper, zaub, thiab khawm rov pib dua. Txij li thaum koj nyuam qhuav pib ua haujlwm ntawm GUI, peb tsuas yog yuav tsum tau txais cov ntawv qhia zaub mov kom qhib, muaj cov ntawv qhia zaub mov nyuaj khawm ua haujlwm, thiab muaj GUI rov ua dua rau lub vijtsam game nrog lub minesweeper daim phiaj.

Ua ntej, peb tuaj yeem muaj cov ntawv qhia zaub mov zaub nws tus kheej thaum pib ntawm qhov haujlwm los ntawm kev hu rau "teeb tsaMenu" txoj hauv kev tsim ntawm chav kawm MainGUI.

Qhov thib ob, peb tuaj yeem muaj txhua qhov ntawm cov ntawv qhia zaub mov nyuaj khawm ua qee txoj kab ntawm cov cai thaum twg nyem los ntawm kev ntxiv "txheej txheem" txheej txheem (tseem yuav tau ntxiv hais kom ua lambda: tus kheej.process ("returnButtonName") nyob rau hauv qhov tsis ua haujlwm ntawm khawm siv hauv kev tsim ntawm txhua qhov nyuaj khawm). Peb yog-lwm nqe lus yuav raug tsim nyob rau hauv "txheej txheem" txheej txheem thiab ua qee yam lwm txoj hauv kev thiab kab ntawm cov lej ntxiv nyob ntawm seb lub khawm sib npaug li cas (khawm sib npaug txawm li cas lub npe lub npe uas tau sau npe zaum kawg).

Thib peb, thaum lub tshuab raj tshuaj ntsuam tau nce thiab yog tias tus neeg siv nyem rau ntawm ib qho ntawm cov nyees khawm nyuaj, tom qab ntawv qhov program yuav txuag qee qhov txiaj ntsig rau qhov "nyuaj" sib txawv (nyuaj sib npaug "yooj yim", "nruab nrab", lossis "nyuaj" raws nyem qhov khawm nyuaj twg). Qhov nyem ntawm lub pob no paub qhov twg yog-lwm nqe lus kom ua raws li lub npe khawm twg tau sau npe zaum kawg (dab tsi khawm sib npaug). Yog li peb yuav teeb "qhov nyuaj" sib txawv raws li txoj hlua khoob ua ntej chav kawm "MainGUI" tau tsim.

Plaub, tshem GUI ntawm cov nyees khawm ua los ntawm "teeb tsaMenu" txoj hauv kev los ntawm kev ua "clearMenu" txoj kev (siv khawm.destroy () ua haujlwm ntau zaus) thiab hu rau "clearMenu" txoj hauv kev "txheej txheem" txoj kev (hauv qab no) txhua qhov nyuaj khawm sau npe tom qab kev hloov pauv nyuaj nyuaj ua haujlwm).

Thib tsib, rov kho GUI los ntawm kev ua "setSLASHresetGUI" txoj kev (cov nyees khawm tau ua tib yam nkaus li hauv "teeb tsaMenu" txoj kev) thiab hu rau "setSLASHresetGUI" txoj hauv kev "txheej txheem" txheej txheem (hauv qab txhua qhov teeb meem khawm sau npe tom qab nyuaj ua haujlwm sib txawv thiab hu rau "clearMenu" txoj hauv kev).

Ib qho ntxiv, ua ntej tag nrho cov nyees khawm tau muab rau hauv "setSLASHresetGUI" txoj kev peb yuav tsum teeb tsa kab thiab kab hauv kab sib chaws thiab tom qab txhua lub khawm tau muab rau hauv "setSLASHresetGUI" txoj kev peb yuav tsum ntim tag nrho cov ntsiab lus hauv kab sib chaws (saib ntawm cov cai muab hauv cov lus qhia kom pom kev ua kom raug).

Kauj Ruam 4: Ua Ntej ntawm Qhov Hauv-Game Screen Ua Haujlwm

Ua cov Nyees khawm ntawm Hauv-Game Screen Ua Haujlwm
Ua cov Nyees khawm ntawm Hauv-Game Screen Ua Haujlwm
Ua cov Nyees khawm ntawm Hauv-Game Screen Ua Haujlwm
Ua cov Nyees khawm ntawm Hauv-Game Screen Ua Haujlwm
Ua cov Nyees khawm ntawm Hauv-Game Screen Ua Haujlwm
Ua cov Nyees khawm ntawm Hauv-Game Screen Ua Haujlwm
Ua cov Nyees khawm ntawm Hauv-Game Screen Ua Haujlwm
Ua cov Nyees khawm ntawm Hauv-Game Screen Ua Haujlwm

Piav qhia:

Txhawm rau ua cov nyees khawm ua qee txoj kab ntawm cov lej thaum nyem, peb yuav tsum ua txoj hauv kev hauv txheej txheem "txheej txheem". Txog txoj haujlwm no, peb yuav tsum ua ntau txoj hauv kev tshiab, hloov pauv, thiab cov npe.

Ua ntej, peb yuav ua ob daim ntawv teev npe. Yuav muaj cov npe hu ua "daim phiaj". Cov npe "daim phiaj" no yuav suav nrog tsuas yog cov lej 9 thiab 0. Nov yog qhov kev zov me nyuam yuav paub qhov txawv yog tias cov nplais yog lub foob pob lossis tsis yog. Ib daim ntawv thib ob yuav raug ua, thiab nws yuav raug hu ua "xwm txheej". Daim ntawv teev npe "xwm txheej" no tsuas muaj ib kab ntawv nkaus xwb ("0", "1", "2", "3", "4", "5", "6", "7", "8", "b" "). Hauv daim ntawv teev npe no, txhua tus cim tus cim yuav sib raug rau cov duab. Nov yog qhov kev zov me nyuam yuav paub cov duab twg los tso rau ntawm txhua lub pob hauv daim phiaj minesweeper. Txhua lub pob hauv daim phiaj minesweeper yuav muaj qhov ntsuas sib thooj hauv txhua daim ntawv raws li nws qhov kev tso rau hauv kab sib chaws. Qhov ntsuas sib piv yuav raug xaiv los ntawm cov txheej txheem hauv qab no (khawm tus lej - 1). Piv txwv li, khawm ib tus lej sib luag hauv txhua daim ntawv teev npe yog xoom. Thaum kawg, ob daim ntawv teev npe no yuav ua tiav ua ntej "MainGUI" chav kawm tau ua tiav thiab yuav raug tsim sab nraud ntawm "MainGUI" chav kawm. Chav kawm "daim phiaj" yuav raug tsim los ua cov npe uas tsis muaj dab tsi (daim phiaj = ) thiab cov npe "xwm txheej" yuav raug tsim los ntawm cov haujlwm sib txawv (ntxiv plaub caug ib tus ntawv cim ntawm "n" rau "txheej xwm" npe).

Qhov thib ob, peb yuav ua ntau txoj hauv kev uas tuaj yeem txheeb xyuas tus lej ntawm ib puag ncig nws thiab tuaj yeem hu xov tooj thaum lub pob nyem (qhov kev txiav txim siab ntawm txoj kev twg uas yuav tsum tau ua yuav tsum txiav txim siab los ntawm kev tso lub pob). Cov txheej txheem no yuav raug hu ua peb tus kws tshuaj ntsuam xyuas kuv. Cov txheej txheem no yuav nce tus lej hu ua "NumOfMines" thiab yuav siv qee qhov kev ntsuas hauv "daim phiaj" cov npe los txiav txim seb muaj pes tsawg lub foob pob nyob ib puag ncig cov nplais. Txoj hlua uas yuav muab khaws cia hauv qhov sib txawv "NumOfMines" yuav raug siv los hloov qhov ntsuas sib xws tib yam hauv cov npe "xwm txheej". Tam sim no, koj yuav xav tsis thoob tias qhov program yuav paub qhov ntsuas twg los siv. Thaum lub pob tau sau npe rau hauv "txheej txheem" txheej txheem, tom qab ntawd qhov sib txawv "ntsuas" yuav raug tsim/rov ua haujlwm rau qee qhov kev sib xyaw (raws li txoj hlua khawm khawm sau npe). Ib txoj hauv kev uas tsim los yuav siv qhov ntsuas uas tau muab los txhawm rau paub qhov chaw ntawm cov nplais thiab qhov ntsuas ntawm cov vuas ib puag ncig nws (cov txheej txheem hauv cov txheej txheem yuav suav qhov no tawm). Ib qho ntxiv, txhawm rau hloov qhov "ntsuas" qhov sib txawv peb yuav xav tau ua ntej tam sim ntawd sab nraud ntawm chav kawm. Yog li peb yuav tau teeb tsa "qhov ntsuas" sib txawv raws li cov lej ua ntej ua ntej "MainGUI" chav kawm tau tsim.

Thib peb, txoj kev "ua haujlwm" yuav raug tsim. Ib txoj hauv kev "ua haujlwm" yuav ua tiav txhua lub sijhawm khawm tau sau npe. Cov txheej txheem "ua haujlwm" no yuav ua tiav hauv "txheej txheem" txheej txheem. Hauv "txheej txheem" txheej txheem, ntau yam yog-lwm nqe lus yuav txiav txim seb lub pob twg tau nyem (raws li lub pob sib npaug li cas). Nov yog qhov twg qee qhov "kev ua haujlwm" yuav raug hu (hauv cov lus yog-lwm nqe lus).

Plaub, peb yuav nkag mus rau hauv yuav ua li cas cov nyees khawm ua haujlwm. Raws li tau hais ua ntej, ntau yam yog-lwm cov nqe lus nyob hauv "txheej txheem" txheej txheem thiab ua qee yam lwm txoj hauv kev thiab kab ntawm cov lej ntxiv nyob ntawm seb khawm sib npaug li cas (khawm sib npaug li cas ntawm txoj hlua uas tau sau npe zaum kawg). Hauv cov ntawv no yog lwm qhov, cov hauv qab no yuav tshwm sim nyob rau hauv qhov kev txiav txim: qhov ntsuas yuav raug muab thoob ntiaj teb, qhov ntsuas sib xws hauv "cov xwm txheej" cov npe yuav raug xa rov mus rau txoj hlua "b" (yog qhov sib piv qhov ntsuas ntawm "daim phiaj" cov npe sib npaug tus lej cuaj), yuav ua kom tiav "kev ua haujlwm" txoj haujlwm (yog qhov sib piv qhov ntsuas ntawm "daim phiaj" daim ntawv sib npaug rau tus lej xoom), qhov ntsuas sib xws hauv "cov xwm txheej" cov npe yuav raug muab rov rau txoj hlua uas sib txawv ntawm qhov sib txawv "NumOfMines" (yog qhov sib piv qhov ntsuas ntawm "daim phiaj" cov npe sib npaug rau xoom), thiab GUI yuav rov ua dua los ntawm kev hu "setSLASHresetGUI" txoj kev.

Kauj ruam 5: "setDifficulty" Method & "restart" Method

Duab
Duab
Duab
Duab

Piav qhia:

Tom ntej no, "txheej txheej nyuaj" yuav tsum tau tsim thiab khawm rov pib dua nyob hauv qab ntawm lub vijtsam hauv-game yuav xav tau los ua haujlwm (los ntawm kev tsim "rov pib dua" txheej txheem rau nws kom ua tiav thaum nws tau nyem los ntawm tus neeg siv).

Ua ntej, "txheej txheej nyuaj" yuav tsum tau ua nyob rau hauv yog tias-lwm nqe lus ntawm cov nyees khawm nyuab hauv "txheej txheem" txheej txheem thiab hauv "rov pib dua" txoj hauv kev. Cov kab ntawm cov cai thiab cov txheej txheem ua hauv txoj kev no yog qhov yooj yim heev. Hauv txoj kev "setDifficulty", peb yuav ntxiv qee qhov zeros (tsis yog foob pob) thiab nines (foob pob) mus rau "daim phiaj" cov npe (ntawm ob qhov haujlwm sib txawv hauv txhua qhov yog-lwm nqe lus), thiab tom qab ntawd peb yuav sib zog "daim phiaj" cov npe (nrog lub tsev qiv ntawv tsis sib xws lub luag haujlwm sib luag) hauv "txheej txheej nyuaj" (tom qab yog-lwm nqe lus tau ua tiav). Qhov sib piv ntawm zeros rau nines yuav txiav txim siab los ntawm txoj hlua sib txawv "teeb meem" tau teeb tsa ("yooj yim": 34-6, "nruab nrab": 28-12, "nyuaj": 16-24).

Qhov thib ob, hauv "rov pib dua" txoj hauv kev, peb yuav teeb tsa qhov sib txawv "ntsuas" thiab "NumOfMinesLEFT" rau xoom thoob ntiaj teb, khoob ob qho "xwm txheej" thiab "kab sib chaws" npe thoob ntiaj teb, rov pib dua "xwm txheej" cov npe nrog ntau yam ua haujlwm (ntxiv plaub caug ib tus cim ntawm "n" rau "txheej xwm" npe), thiab hu rau "txheej txheej nyuaj" txheej txheem.

Kauj Ruam 6: Game-Ending Scenarios

Game-Ending Scenarios
Game-Ending Scenarios
Game-Ending Scenarios
Game-Ending Scenarios
Game-Ending Scenarios
Game-Ending Scenarios
Game-Ending Scenarios
Game-Ending Scenarios

Piav qhia:

Txhua qhov kev ua si minesweeper muaj ob qhov kev ua si-xaus: yeej thiab poob. Hauv qhov haujlwm no, peb yuav siv ob qhov kev ua si xaus nrog ob txoj hauv kev tshiab: a "You_A_Winner_Son" method thiab "GameOver" method. Ua ntej GUI tau rov ua dua tshiab hauv "txheej txheem" txoj hauv kev thiab raws li qhov ntsuas tau hloov pauv los ntawm ob txoj kev ua si-xaus qhov xwm txheej, lub khawm tso saib yuav raug hloov pauv kom raug sawv cev qhov txiaj ntsig.

Ua ntej, thaum tus neeg siv nyem rau ntawm qhov kawg zais cov foob pob uas tsis yog foob pob, tom qab ntawv "You_A_Winner_Son" yuav tsum ua tiav. Peb yuav ua tiav txoj haujlwm no los ntawm kev hu rau "You_A_Winner_Son" txoj hauv kev txhua lub sij hawm cov nplais tau nyem thiab cov nplais pom tias tsis yog cov nplais uas tsis yog foob pob (hauv "kev ua haujlwm" cov txheej txheem ua hauv "txheej txheem" txheej txheem). Yog tias yeej qhov xwm txheej tau ntsib, tom qab ntawv yog ob qho lus hais hauv "You_A_Winner_Son" txoj kev yuav ua tiav. Thawj qhov yog-lwm nqe lus yuav ib txwm ua txawm hais tias tus neeg ua si yeej lossis tsis yog thaum txoj kev no raug hu los. Raws li qhov sib txawv ntawm "kev nyuaj" sib npaug rau, qee qhov txheej txheem uas yuav txiav txim siab seb muaj pes tsawg lub pob zeb/pob tawg raug muab zais. Cov lej uas tau pom los ntawm cov txheej txheem no yuav raug cawm hauv qhov sib txawv "NumOfMinesLEFT". Tom ntej no, hauv nruab nrab ntawm ob qho yog-lwm nqe lus lwm qhov txheej txheem yuav ua kom pom cov lej pib vuas sab laug (cov vuas tsis raug xaiv). Cov lej uas pom los ntawm cov txheej txheem no yuav raug cawm hauv qhov sib txawv "NumOfStartingTilesLEFT". Qhov thib ob yog-lwm nqe lus yuav ib txwm ua tsis hais tus neeg uas ua ntawv yeej lossis tsis yog thaum txoj kev no raug hu. Raws li qhov sib txawv ntawm "kev nyuaj" sib npaug rau, ib ntawm peb yog-lwm cov nqe lus yuav raug ua yog tias lawv tau ua tiav. Cov xwm txheej yuav ua raws li ob qhov sib txawv "NumOfMinesLEFT" thiab "NumOfStartingTilesLEFT" sib npaug. Hauv peb qhov no yog-lwm nqe lus, yuav siv lub algorithm uas yuav ua rau txhua lub pob tsis muaj txiaj ntsig (qhov kev ua si dhau lawm).

Qhov thib ob, thaum tus neeg siv nyem rau ntawm ib qho ntawm cov pob zeb zais zais, tom qab ntawd "GameOver" txoj kev yuav tsum tau ua. Peb yuav ua tiav txoj haujlwm no los ntawm kev hu rau "GameOver" txoj hauv kev txhua lub sij hawm cov nplais tau nyem thiab pom cov nplais yog cov nplais pob zeb (hauv "kev ua haujlwm" cov txheej txheem ua hauv "txheej txheem" txheej txheem). Thaum txoj kev "GameOver" raug hu los, yuav ua kom tiav cov txheej txheem uas yuav ua rau txhua qhov pib pobzeb siv tsis tau (qhov kev ua si dhau lawm) thiab cov vuas zais cov foob pob yuav raug nthuav tawm (raws qhov ntsuas sib piv hauv "daim phiaj npe, qee qhov ntsuas nyob rau hauv "xwm txheej" daim ntawv yuav raug xa rov qab mus rau ib tus lej nkaus xwb "b").

Thib peb, cov zaub ntawm qhov screen hauv game yuav raug hloov kho tshiab txhua lub sijhawm GUI tau rov ua dua los ntawm kev kho me ntsis rau "setSLASHresetGUI" txoj kev. Tom qab cov kab sib chaws ntawm GUI tau teeb tsa, peb yuav tso peb qho yog-lwm nqe lus qhov twg tam sim no tso khawm khawm tso rau. Ib ntawm peb yog-nqe lus ntxiv yuav ua raws li qhov hloov pauv hauv qab no sib npaug li: "GameOverDETECTOR", "nyuaj," NumOfMinesLEFT ", thiab" NumOfStartingTilesLEFT ". Raws li koj yuav xav tsis thoob, qhov sib txawv" GameOverDETECTOR "yog qhov tshiab Qhov sib txawv no yuav raug tsim ua ntej ua yog-lwm nqe lus tau ua tiav nyob rau hauv "setSLASHresetGUI" txoj kev. raws li qhov uas yog lwm qhov kev pom zoo cov xwm txheej tau ntsib, kev rov ua haujlwm sib xws rau cov zaub yuav tshwm sim.

Kauj Ruam 7: Ua Tus Khawm Rov Pib Ua Haujlwm

Ua kom khawm rov pib ua haujlwm
Ua kom khawm rov pib ua haujlwm

Piav qhia:

Cov kauj ruam no tshwm sim kom luv tshaj plaws. Feem ntau ntawm cov haujlwm rau cov kauj ruam no twb tau ua tiav lawm. Txhua yam peb yuav tsum tau ua tam sim no yog ua txoj haujlwm "rov pib dua" txhua zaus lub khawm rov pib tau nyem los ntawm tus neeg siv.

Ua ntej thiab zaum kawg, peb yuav ua tus txheej txheem "rov pib dua" hauv txheej txheem "txheej txheem" nrog rau yog-lwm nqe lus. Yog txoj hlua "!" yog sau npe, tom qab ntawv "rov pib dua" txoj haujlwm yuav tsum ua. Peb tseem yuav tau tsim lub pob hu ua rov pib dua qhov kawg ntawm "setSLASHresetGUI" txoj kev ua ntej cov ntsiab lus ntawm kab sib chaws tau ntim ua ke. Khawm rov pib dua no yuav ua txoj hlua "!" (hais kom lambda: self.process ("!")) thiab ua raws cov txheej txheem "rov pib dua" raws li "txheej txheem" txheej txheem.

Pom zoo: