ዝርዝር ሁኔታ:

Minesweeper-Raspberry-Pi-Edition: 7 ደረጃዎች (ከስዕሎች ጋር)
Minesweeper-Raspberry-Pi-Edition: 7 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: Minesweeper-Raspberry-Pi-Edition: 7 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: Minesweeper-Raspberry-Pi-Edition: 7 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: windows 7 End 😭😭😭 2024, ሀምሌ
Anonim
ፈንጂዎች-Raspberry-Pi-Edition
ፈንጂዎች-Raspberry-Pi-Edition
ፈንጂዎች-Raspberry-Pi-Edition
ፈንጂዎች-Raspberry-Pi-Edition

በሉዊዚያና ቴክ ዩኒቨርሲቲ ለሲኤስሲ 130 ተከታታይ የእኔ የመጨረሻ ፕሮጀክት የማዕድን ማውጫ Raspberry Pi እትም ነው። በዚህ ፕሮጀክት ውስጥ የፒቲን የፕሮግራም ቋንቋን የቲኪን ቤተመፃሕፍት በመጠቀም የማዕድን ማውጫውን ክላሲክ ጨዋታ እንደገና ለመፍጠር ፈልጌ ነበር። የማዕድን ማጥፊያው ጨዋታ የሚያካትተው ፍርግርግ ስምንት ሰቆች ስፋት እና ቁመቱ አምስት ሰቆች ነው። ከፓይዘን 2.7 ጋር የተጫነ Raspberry Pi ለመጠቀም የፕሮጀክቱ ቅርጸት ተስማሚ እና ፍጹም ሆኗል።

ለ Minesweeper Raspberry Pi Edition የመጨረሻ ፕሮጀክት ኮዱ እና ምስሎች በሚከተለው አገናኝ ማውረድ ይችላሉ-

ፈንጂዎች-Raspberry-Pi-Edition

አቅርቦቶች

x1 Raspberry Pi

Python 2.7 በ Raspberry Pi ላይ ተጭኗል

የማይክሮሶፍት ፓወር ነጥብ (ወይም ለአዝራሮች ምስሎችን ለመፍጠር ሌላ ሶፍትዌር)

ደረጃ 1 የአዝራር ምስሎችን ይፍጠሩ

የአዝራር ምስሎችን ይፍጠሩ
የአዝራር ምስሎችን ይፍጠሩ

ማብራሪያ ፦

GUI ን የሚሠራ እያንዳንዱ አዝራር መፈጠር አለበት። ለዚህ ተግባር ፣ እኔ በአዝራሮቹ ላይ ለማሳየት የሚያስፈልጉኝን ምስሎች ለመሥራት ማይክሮሶፍት ፓወር ፖይንት ተጠቅሜአለሁ።

በመጀመሪያ ማይክሮሶፍት ፓወር ፖይንት በመጠቀም የማዕድን ማጽጃ ፍርግርግ (ባዶ ፣ ቦብ ፣ ዜሮ ፣ አንድ ፣ ሁለት ፣ ሶስት ፣ አራት ፣ አምስት ፣ ስድስት ፣ ሰባት እና ስምንት) ለማድረግ የሚያስፈልጉትን አስር የሰድር አዝራሮችን ፈጠርኩ።

ሁለተኛ ፣ ማይክሮሶፍት ፓወር ፖይንት በመጠቀም ለምናሌው ማያ ገጽ (የምናሌ ማሳያ ፣ ቀላል የችግር አዝራር ፣ መካከለኛ የችግር ቁልፍ እና የሃርድ ችግር ቁልፍ) የሚያስፈልጉትን አራት ምስሎች ሠርቻለሁ።

ሦስተኛ ፣ ማይክሮሶፍት ፓወር ፖይንት በመጠቀም ለዳግም ማስነሻ ቁልፍ እና ለሌሎቹ የተለያዩ የማሳያ ቁልፎች (“ጨዋታው” ማሳያ ፣ “እርስዎ ያሸንፋሉ” ማሳያ እና “ደንቦች” ማሳያ) የሚያስፈልጉትን ምስሎች ፈጠርኩ።

አራተኛ ፣ በማያ ገጽዎ ውስጥ እንዲስማሙ የእርስዎን ምስሎች መጠን መለወጥ ይኖርብዎታል። ለኔ Rasberry Pi ፣ የሚከተሉትን ልኬቶች ለዊንዶው እጠቀም ነበር (ርዝመቶችን እና ስፋቶችን ፒክስሎችን በመጥቀስ) - 432x576።

ደረጃ 2 የቅርጸት ፕሮግራም

የቅርጸት ፕሮግራም
የቅርጸት ፕሮግራም

ማብራሪያ ፦

ማንኛውም ትክክለኛ መርሃ ግብር ከመከናወኑ በፊት እኛ የምንፈልገውን ቤተመፃህፍት ከውጭ አስገብተን የፕሮግራማችንን ዋና ክፍል መፃፍ አለብን።

በመጀመሪያ ፣ ከታኪንተር ቤተ -መጽሐፍት ማስመጣት * እና ከዘፈቀደ ቤተ -መጽሐፍት መቀላቀል አለብን። በሁለተኛ ደረጃ በፕሮግራሙ ዋና ክፍል ውስጥ የሚከተሉትን ደረጃዎች በኮድ ማጠናቀቅ ያስፈልገናል -መስኮቱን ይፍጠሩ ፣ የርዕስ መስኮቱን ያዘጋጁ ፣ GUI ን ያመነጩ እና GUI ን ያሳዩ እና የተጠቃሚ መስተጋብር ይጠብቁ። ይህ ኮድ ከቲንክተር ቤተ -መጽሐፍት አንፃር በተገቢው ቅርጸት የተፃፈ ነው (ትክክለኛውን ቅርጸት ለማየት በትምህርቱ ውስጥ የተሰጠውን ኮድ ይመልከቱ)።

ደረጃ 3 GUI ን (ምናሌ እና የማዕድን ማጣሪያ ፍርግርግ) ይፍጠሩ

GUI ን ይፍጠሩ (ምናሌ እና የማዕድን ማውጫ ፍርግርግ)
GUI ን ይፍጠሩ (ምናሌ እና የማዕድን ማውጫ ፍርግርግ)
GUI ን ይፍጠሩ (ምናሌ እና የማዕድን ማውጫ ፍርግርግ)
GUI ን ይፍጠሩ (ምናሌ እና የማዕድን ማውጫ ፍርግርግ)
GUI ን ይፍጠሩ (ምናሌ እና የማዕድን ማውጫ ፍርግርግ)
GUI ን ይፍጠሩ (ምናሌ እና የማዕድን ማውጫ ፍርግርግ)
GUI ን ይፍጠሩ (ምናሌ እና የማዕድን ማውጫ ፍርግርግ)
GUI ን ይፍጠሩ (ምናሌ እና የማዕድን ማውጫ ፍርግርግ)

ማብራሪያ ፦

በፕሮግራሙ ጅምር ላይ የምናሌ ማያ ገጹ ይጀምራል። ችግሩ ከተመረጠ በኋላ (በምናሌው ማያ ገጽ ላይ ከሚገኙት የችግር ቁልፎች አንዱን ጠቅ በማድረግ) GUI በማዕድን ማውጫ ፍርግርግ ፣ በማሳያ እና በድጋሚ ማስጀመሪያ ቁልፍ ይታደሳል። በ GUI ላይ መስራት ስለጀመሩ ፣ ምናሌውን ለማስጀመር ፣ የምናሌ ችግር አዝራሮች ሥራ ላይ እንዲውሉ እና GUI ከማዕድን ማጣሪያ ፍርግርግ ጋር ወደ ጨዋታው ማያ ገጽ ማደስ ብቻ ያስፈልገናል።

በመጀመሪያ ፣ በ MainGUI ክፍል ገንቢ ውስጥ የ “setupMenu” ዘዴን በመደወል በፕሮግራሙ ጅምር ላይ የምናሌ ማያ ገጹ እራሱን ማሳየት እንችላለን።

በሁለተኛ ደረጃ ፣ “የአሠራር” ዘዴን በመጨመር ጠቅ በተደረገ ቁጥር እያንዳንዱ የምናሌው የችግር አዝራሮች የተወሰኑ የኮድ መስመሮችን እንዲፈጽሙ ማድረግ እንችላለን (እንዲሁም lambda: self.process (“returnButtonName”)) በተጠቀመበት የአዝራር ተግባር መለኪያዎች ውስጥ ማከል አለባቸው። የእያንዳንዱን የችግር ቁልፍ በመፍጠር ላይ)። ሌሎች “መግለጫዎች” በ “ሂደት” ዘዴ ውስጥ ይፈጠራሉ እና አዝራሩ በሚመሳሰለው ላይ በመመስረት የተወሰኑ ሌሎች ዘዴዎችን እና ተጨማሪ ኮድ መስመሮችን ያስፈጽማሉ (አዝራሩ በመጨረሻ ከተመዘገበው የአዝራር ስም ጋር እኩል ነው)።

ሦስተኛ ፣ የምናሌ ማያ ገጹ ከፍ እያለ እና ተጠቃሚው በአንደኛው የችግር አዝራሮች ላይ ጠቅ ካደረገ ፣ ፕሮግራሙ የተወሰነ እሴት ለ “ችግር” ተለዋዋጭ (ችግር “ቀላል” ፣ “መካከለኛ” ወይም “ከባድ” ላይ የተመሠረተ ነው) ከየትኛው የችግር አዝራር ጠቅ እንደተደረገ)። ይህ የአንድ አዝራር ጠቅታ በየትኛው የአዝራር ስም በመጨረሻ እንደተመዘገበ (ምን ዓይነት አዝራር እንደሚመሳሰል) ላይ በመመርኮዝ የትኛውን መግለጫ እንደሚከተል ያውቃል። በተጨማሪም ፣ “አስቸጋሪ” ተለዋዋጭውን እንደገና ለመመደብ መጀመሪያ ወዲያውኑ ማነቃቃት አለብን። እሱ ከክፍል ውጭ ነው። ስለዚህ የ “MainGUI” ክፍል ከመፈጠሩ በፊት “አስቸጋሪውን” ተለዋዋጭ እንደ ባዶ ሕብረቁምፊ እናዘጋጃለን።

አራተኛ ፣ በ “setupMenu” ዘዴ የተሰሩ አዝራሮችን GUI ን ያፅዱ የ “clearMenu” ዘዴን (የ button.destroy () ተግባርን በብዙ አጋጣሚዎች በመጠቀም) እና በ “ሂደት” ዘዴ ውስጥ (የ “ሂደት” ዘዴን) ውስጥ “clearMenu” የሚለውን ዘዴ በመጥራት (በ እያንዳንዱ የችግር ቁልፍ ከችግር ተለዋዋጭ ምደባ በኋላ ይመዘገባል)።

አምስተኛ ፣ “setSLASHresetGUI” ዘዴን (አዝራሮች በ “setupMenu” ዘዴ በተመሳሳይ መንገድ የተሰሩ ናቸው) እና በ “ሂደት” ዘዴ ውስጥ “setSLASHresetGUI” ዘዴን በመጥራት GUI ን ያድሱ (በእያንዳንዱ የችግር ቁልፍ ስር ይመዘገባል) አስቸጋሪ ተለዋዋጭ ምደባ እና የ “clearMenu” ዘዴን መጥራት)።

በተጨማሪም ፣ ሁሉም አዝራሮች በ “setSLASHresetGUI” ዘዴ ውስጥ ከመመደባቸው በፊት ረድፎችን እና ዓምዶችን በፍርግርግ ውስጥ ማዋቀር አለብን እና ሁሉም አዝራሮች በ “setSLASHresetGUI” ዘዴ ውስጥ ከተመደቡ በኋላ ሁሉንም ይዘቶች በፍርግርግ ውስጥ ማሸግ አለብን (ይመልከቱ ትክክለኛውን ቅርጸት ለማየት በትምህርቱ ውስጥ የተሰጠ ኮድ)።

ደረጃ 4 በጨዋታው ውስጥ ባለው ማያ ገጽ ላይ የሚሠሩትን አዝራሮች ያድርጉ

የውስጠ-ጨዋታ ማያ ገጽ አሠራር ላይ አዝራሮችን ያድርጉ
የውስጠ-ጨዋታ ማያ ገጽ አሠራር ላይ አዝራሮችን ያድርጉ
የውስጠ-ጨዋታ ማያ ገጽ አሠራር ላይ አዝራሮችን ያድርጉ
የውስጠ-ጨዋታ ማያ ገጽ አሠራር ላይ አዝራሮችን ያድርጉ
የውስጠ-ጨዋታ ማያ ገጽ አሠራር ላይ አዝራሮችን ያድርጉ
የውስጠ-ጨዋታ ማያ ገጽ አሠራር ላይ አዝራሮችን ያድርጉ
የውስጠ-ጨዋታ ማያ ገጽ አሠራር ላይ አዝራሮችን ያድርጉ
የውስጠ-ጨዋታ ማያ ገጽ አሠራር ላይ አዝራሮችን ያድርጉ

ማብራሪያ ፦

ጠቅ ሲያደርጉ የተወሰኑ የኮድ መስመሮችን እንዲያስፈጽሙ ለማድረግ በ “ሂደት” ዘዴ ውስጥ ዘዴዎችን መፈጸም አለብን። ለዚህ ተግባር ፣ በርካታ አዳዲስ ዘዴዎችን ፣ ተለዋዋጮችን እና ዝርዝሮችን ማድረግ አለብን።

በመጀመሪያ ፣ ሁለት ዝርዝሮችን እናደርጋለን። “ፍርግርግ” የሚባል ዝርዝር ይኖራል። ይህ “ፍርግርግ” ዝርዝር ቁጥሮችን 9 እና 0. ብቻ ይይዛል በዚህ ዝርዝር ውስጥ ዘጠኝ ቦምቦችን ይወክላል ፣ ዜሮዎች ደግሞ ቦምቦችን ያልሆኑ ይወክላሉ። አንድ ሰድር ቦምብ ከሆነ ወይም ካልሆነ ፕሮግራሙ የሚለየው በዚህ መንገድ ነው። ሁለተኛ ዝርዝር ይደረጋል ፣ እሱም “ሁኔታ” ይባላል። ይህ “ሁኔታ” ዝርዝር አንድ የቁምፊ ሕብረቁምፊዎችን ብቻ (“0” ፣ “1” ፣ “2” ፣ “3” ፣ “4” ፣ “5” ፣ “6” ፣ “7” ፣ “8” ፣”ለ) ). በዚህ ዝርዝር ውስጥ እያንዳንዱ የቁምፊ ሕብረቁምፊ ከተወሰነ ምስል ጋር ይዛመዳል። በማዕድን ማውጫ ፍርግርግ ውስጥ በእያንዳንዱ አዝራር ላይ የትኛው ምስል እንደሚታይ ፕሮግራሙ እንዴት እንደሚያውቅ ነው። በማዕድን ማውጫ ፍርግርግ ውስጥ ያለው እያንዳንዱ ቁልፍ በፍርግርጉ ውስጥ ባለው ምደባ መሠረት በእያንዳንዱ ዝርዝር ውስጥ ተዛማጅ መረጃ ጠቋሚ ይኖረዋል። ተጓዳኝ መረጃ ጠቋሚው በሚከተለው አሰራር (የአዝራር ቁጥር - 1) ይመደባል። ለምሳሌ ፣ በእያንዳንዱ ዝርዝር ውስጥ የአንዱ ተጓዳኝ መረጃ ጠቋሚ በአዝራር ዜሮ ነው። በመጨረሻም ፣ እነዚህ ሁለት ዝርዝሮች “MainGUI” ክፍል ከመፈጸሙ በፊት እና ከ “MainGUI” ክፍል ውጭ ይፈጠራሉ። የ “ፍርግርግ” ክፍሉ እንደ ባዶ ዝርዝር (ፍርግርግ = ) ይፈጠራል እና የ “ሁኔታ” ዝርዝሩ በክልል ተግባር ይፈጠራል (የ “n” አርባ ነጠላ የቁምፊ ሕብረቁምፊዎችን ወደ “ሁኔታ” ዝርዝር ያክላል)።

ሁለተኛ ፣ በዙሪያው ያሉትን የማዕድን ማውጫዎች ብዛት መለየት የሚችሉ እና አንድ አዝራር ጠቅ ሲያደርግ ሊጠሩ የሚችሉ የተለያዩ ዘዴዎችን እንሠራለን (የትኛው ዘዴ መከናወን እንዳለበት ውሳኔው በአዝራሩ አቀማመጥ ይወሰናል)። እነዚህ ዘዴዎች የእኛ የማዕድን ተንታኞች ይባላሉ። እነዚህ ዘዴዎች “NumOfMines” የተባለ ቆጣሪን ይጨምራሉ እና ምንጣፉ ምን ያህል ቦምቦች እንዳሉ ለማወቅ በ “ፍርግርግ” ዝርዝር ውስጥ የተወሰኑ መረጃ ጠቋሚዎችን ይጠቀማሉ። በተለዋዋጭ “NumOfMines” ውስጥ የሚከማቸው ሕብረቁምፊ በ “ሁኔታ” ዝርዝር ውስጥ ተመሳሳይ ተጓዳኝ መረጃ ጠቋሚውን ለመተካት ጥቅም ላይ ይውላል። አሁን ፕሮግራሙ የትኛውን መረጃ ጠቋሚ እንደሚጠቀም ያውቃል ብለው ያስቡ ይሆናል። በ ‹ሂደት› ዘዴ ውስጥ አንድ አዝራር ሲመዘገብ ፣ ከዚያ ተለዋዋጭ ‹ኢንዴክስ› ወደ አንድ የተወሰነ ኢንቲጀር (አዝራሩ በሚመዘገብበት ሕብረቁምፊ ላይ በመመስረት) ይፈጠራል/ይመደባል። ከተፈጠሩት ዘዴዎች አንዱ የሰድርውን አቀማመጥ እና በዙሪያው ያሉትን የሰቆች ማውጫዎች (ኢንዴክሶች) ለማወቅ ያንን የተመደበውን መረጃ ጠቋሚ ይጠቀማል (በስልቱ ውስጥ ያለው ስልተ ቀመር ይህንን ይገነዘባል)። በተጨማሪም ፣ የ “መረጃ ጠቋሚውን” ተለዋዋጭ እንደገና ለመመደብ መጀመሪያ ከክፍል ውጭ ማነቃቃት አለብን። ስለዚህ የ “MainGUI” ክፍል ከመፈጠሩ በፊት “ኢንዴክሱን” ተለዋዋጭ እንደ ኢንቲጀር ዜሮ እናስቀምጠዋለን።

ሦስተኛ ፣ “የአሠራር” ዘዴዎች ይፈጠራሉ። አንድ አዝራር በተመዘገበ ቁጥር “ክወና” ዘዴ ይከናወናል። እነዚህ “የአሠራር” ዘዴዎች በ “ሂደት” ዘዴ ውስጥ ይፈጸማሉ። በ “ሂደት” ዘዴ ውስጥ ፣ ብዙ ከሆነ ሌላ መግለጫዎች የትኛው አዝራር ጠቅ እንደተደረገ ይወስናሉ (ቁልፉ በምን ላይ የተመሠረተ ነው)። አንድ የተወሰነ የ “ክወና” ዘዴ የሚጠራበት (በሌላ መግለጫዎች ውስጥ) ይህ ነው።

አራተኛ ፣ በእርግጥ ቁልፎቹ እንዴት እንደሚሠሩ እንገባለን። ቀደም ሲል እንደተገለፀው ፣ ሌሎች ብዙ መግለጫዎች በ “ሂደት” ዘዴ ውስጥ የሚገኙ እና አዝራሩ በሚመሳሰለው ላይ በመመስረት የተወሰኑ ሌሎች ዘዴዎችን እና ተጨማሪ ኮድ መስመሮችን ያስፈጽማሉ (አዝራሩ በመጨረሻ የተመዘገበው ሕብረቁምፊ ከማንኛውም ጋር እኩል ነው)። በእነዚህ ሌሎች መግለጫዎች ውስጥ የሚከተለው በቅደም ተከተል ይከናወናል-ጠቋሚ በዓለም አቀፍ ደረጃ ይመደባል ፣ በ “ሁኔታ” ዝርዝር ውስጥ ያለው ተዛማጅ መረጃ ጠቋሚ ወደ “b” ሕብረቁምፊ ይመደባል (የ “ፍርግርግ” ዝርዝሩ ተዛማጅ መረጃ ጠቋሚ እኩል ከሆነ) ኢንቲጀር ዘጠኝ) ፣ ተጓዳኝ የ “ክዋኔ” ዘዴ ይፈጸማል (የ “ፍርግርግ” ዝርዝሩ ተዛማጅ መረጃ ጠቋሚ ኢንቲጀር ዜሮ ከሆነ) ፣ ያ በ “ሁኔታ” ዝርዝር ውስጥ ያለው ተዛማጅ መረጃ ጠቋሚ ከተለዋዋጭ ጋር እኩል ወደሚሆን ሕብረቁምፊ ይመደባል። “NumOfMines” (የ “ፍርግርግ” ዝርዝር ተዛማጅ መረጃ ጠቋሚ ኢንቲጀር ዜሮ ከሆነ) ፣ እና GUI ወደ “setSLASHresetGUI” ዘዴ በመደወል ይታደሳል።

ደረጃ 5 - "setDifficulty" ዘዴ እና "ዳግም አስጀምር" ዘዴ

ምስል
ምስል
ምስል
ምስል

ማብራሪያ ፦

በመቀጠልም የ “setDifficulty” ዘዴ መፈጠር አለበት እና በጨዋታው ውስጥ ባለው ማያ ገጽ ታችኛው ክፍል ላይ የሚገኘው የዳግም ማስጀመሪያ ቁልፍ ሥራ ላይ መዋል አለበት (በተጠቃሚ ጠቅ ሲያደርግ ለማስፈጸም “ዳግም ማስጀመር” ዘዴን በመፍጠር።).

በመጀመሪያ ፣ ‹setDifficulty› ዘዴ በ‹ ሂደት ›ዘዴ ውስጥ እና በ‹ ዳግም ማስጀመር ›ዘዴ ውስጥ የችግር ቁልፎች መግለጫዎች ካሉ ሌላ መተግበር አለበት። በዚህ ዘዴ የተገደሉት የኮድ መስመሮች እና ዘዴዎች በጣም ቀላል ናቸው። በ “setDifficulty” ዘዴ ውስጥ የተወሰኑ ዜሮዎችን (ቦምቦችን ያልሆኑ) እና ዘጠኝ (ቦምቦችን) ወደ “ፍርግርግ” ዝርዝር (በእያንዳንዱ መግለጫ ውስጥ በሁለት ክልል ተግባራት በኩል) እንጨምረዋለን ፣ ከዚያ እኛ እንቀላቅላለን በ “setDifficulty” ዘዴ ውስጥ (ሌላ-መግለጫዎች ከተፈጸሙ በኋላ) “የፍርግርግ” ዝርዝር (በዘፈቀደ ቤተ-መጽሐፍት የውዝግብ ተግባር)። የዜሮዎች እና የዘመኖች ጥምርታ ተለዋዋጭው “ችግር” በተዋቀረበት ሕብረቁምፊ (“ቀላል”: 34-6 ፣ “መካከለኛ”: 28-12 ፣ “ከባድ”: 16-24) ይወሰናል።

በሁለተኛ ደረጃ ፣ በ “ዳግም አስጀምር” ዘዴ ውስጥ ተለዋዋጮችን “ጠቋሚ” እና “NumOfMinesLEFT” ን በዓለም አቀፍ ደረጃ ወደ ዜሮ እናስቀምጣለን ፣ ሁለቱንም “ሁኔታ” እና “ፍርግርግ” ዝርዝሮች በአለምአቀፍ ውስጥ ባዶ ያድርጉ ፣ የ “ሁኔታ” ዝርዝሩን ከክልል ተግባር ጋር (ዳግም ማከል) የ “n” አርባ ነጠላ ቁምፊ ሕብረቁምፊዎች ወደ “ሁኔታ” ዝርዝር) እና ወደ “setDifficulty” ዘዴ ይደውሉ።

ደረጃ 6-የጨዋታ ማብቂያ ትዕይንቶች

የጨዋታ ማብቂያ ትዕይንቶች
የጨዋታ ማብቂያ ትዕይንቶች
የጨዋታ ማብቂያ ትዕይንቶች
የጨዋታ ማብቂያ ትዕይንቶች
የጨዋታ ማብቂያ ትዕይንቶች
የጨዋታ ማብቂያ ትዕይንቶች
የጨዋታ ማብቂያ ትዕይንቶች
የጨዋታ ማብቂያ ትዕይንቶች

ማብራሪያ ፦

እያንዳንዱ የማዕድን ማጽጃ ጨዋታ ሁለት የጨዋታ ማለቂያ ሁኔታዎች አሉት-ማሸነፍ እና ማጣት። በዚህ ፕሮግራም ውስጥ እነዚህን ሁለት የጨዋታ ማብቂያ ሁኔታዎችን በሁለት አዲስ ዘዴዎች ማለትም ‹እርስዎ_A_Winner_Son› ዘዴ እና ‹GameOver› ዘዴን እንተገብራለን። GUI በ “ሂደት” ዘዴ ውስጥ ከመታደሱ በፊት እና በሁለቱ የጨዋታ ማብቂያ ሁኔታ ዘዴዎች በተለወጡ ጠቋሚዎች ላይ በመመርኮዝ ውጤቱን በትክክል ለመወከል የማሳያ ቁልፍ ይቀየራል።

በመጀመሪያ ፣ ተጠቃሚው በመጨረሻው የተደበቀውን የቦምብ ባልሆነ ሰድር ላይ ጠቅ ሲያደርግ ፣ ከዚያ “You_A_Winner_Son” ዘዴ መፈጸም አለበት። አንድ ሰቅ ጠቅ በተደረገበት እና ሰድር ቦምብ ያልሆነ (በ “ሂደት” ዘዴ በተተገበረው “አሠራር” ዘዴዎች ውስጥ) “You_A_Winner_Son” የሚለውን ዘዴ በመጥራት ይህንን ተግባር እናጠናቅቃለን። የአሸናፊዎቹ ሁኔታዎች ከተሟሉ ፣ በ ‹እርስዎ_A_Winner_Son› ዘዴ ውስጥ ሁለት ከሆነ ሌላ መግለጫዎች ይፈጸማሉ። የመጀመሪያው ወይም ሌላ መግለጫ ይህ ዘዴ በሚጠራበት ጊዜ ተጫዋቹ ቢያሸንፍም ባይሸነፍም ሁልጊዜ ይፈጸማል። ምን ያህል ፈንጂዎች/ቦምቦች እንደተደበቁ የሚወስን ተለዋዋጭ “ችግር” በሚለው ላይ በመመርኮዝ አንድ የተወሰነ ስልተ ቀመር። በዚህ ስልተ ቀመር የተገኘው ኢንቲጀር በተለዋዋጭ “NumOfMinesLEFT” ውስጥ ይቀመጣል። በመቀጠል ፣ በሁለቱ መካከል-ሌላ መግለጫ የቀረው የመነሻ ሰቆች ብዛት (ያልተጣራ ሰቆች) ለማግኘት ሌላ ስልተ ቀመር ይገደላል። በዚህ ስልተ ቀመር የተገኘው ኢንቲጀር በተለዋዋጭ “NumOfStartingTilesLEFT” ውስጥ ይቀመጣል። ሁለተኛው ወይም ሌላ መግለጫ ይህ ዘዴ በሚጠራበት ጊዜ ተጫዋቹ ቢያሸንፍም ባይሸነፍም ሁል ጊዜ ይፈጸማል። ተለዋዋጭው “ችግር” በሚለው ላይ በመመስረት ፣ ሁኔታቸው ከተሟላ ከሦስቱ አንዱ መግለጫዎች ሊፈጸሙ ይችላሉ። ሁኔታዎቹ ሁለቱ ተለዋዋጮች “NumOfMinesLEFT” እና “NumOfStartingTilesLEFT” በሚመሳሰሉበት ላይ የተመሰረቱ ይሆናሉ። በእነዚህ ሶስት መግለጫዎች ውስጥ እያንዳንዱ አዝራር ዋጋ ቢስ የሚያደርግ ስልተ ቀመር ይከናወናል (ጨዋታው አልቋል)።

ሁለተኛ ፣ ተጠቃሚው ከተደበቁት የቦምብ ንጣፎች በአንዱ ላይ ጠቅ ሲያደርግ ፣ ከዚያ “GameOver” ዘዴ መፈጸም አለበት። አንድ ሰድር ጠቅ በተደረገበት እና ሰድር የቦንብ ንጣፍ ሆኖ በተገኘ (በ “ሂደት” ዘዴ በተተገበረው “አሠራር” ዘዴዎች ውስጥ) “GameOver” የሚለውን ዘዴ በመደወል ይህንን ተግባር እናጠናቅቃለን። የ “GameOver” ዘዴ በሚጠራበት ጊዜ እያንዳንዱ የመነሻ ንጣፍ ከንቱ (ጨዋታው አብቅቷል) እና የተደበቀው የቦምብ ሰቆች ይገለጣሉ (በ “ፍርግርግ ዝርዝር ውስጥ ባለው ተጓዳኝ ኢንዴክሶች ላይ በመመስረት”) የተወሰኑ ስልቶች (ኢንዴክሶች) ላይ የተመሠረተ ስልተ ቀመር ይከናወናል። በ “ሁኔታ” ዝርዝር ውስጥ ወደ ነጠላ-ቁምፊ ሕብረቁምፊ “ለ” እንደገና ይመደባል)።

ሦስተኛ ፣ ወደ ‹setSLASHresetGUI› ዘዴ በጣም ጥቂት ጥቃቅን አርትዖቶችን በማድረግ GUI በተታደሰ ቁጥር የውስጠ-ጨዋታ ማያ ገጹ ማሳያ ይዘመናል። የ GUI ፍርግርግ ከተዋቀረ በኋላ የአሁኑ የማሳያ አዝራር ምደባ የተቀመጠባቸው ሌሎች ሶስት መግለጫዎችን እናስቀምጣለን። ከሚከተሉት ሶስት መግለጫዎች አንዱ የሚከተሉት ተለዋዋጮች እኩል በሚሆኑት ላይ በመመስረት ይፈጸማል-“GameOverDETECTOR” ፣ “አስቸጋሪ ፣“NumOfMinesLEFT”እና“NumOfStartingTilesLEFT”። እርስዎ እንደሚገርሙት ፣ ተለዋዋጭው“GameOverDETECTOR”አዲስ ነው ተለዋዋጭ። በ ‹setSLASHresetGUI› ዘዴ ውስጥ ሌሎች መግለጫዎች ከመፈጸማቸው በፊት ይህ ተለዋዋጭ ወዲያውኑ ይፈጠራል። የ ‹GameOverDETECTOR› ተለዋጭ በ ‹ፍርግርግ› ውስጥ ስንት ኢንዴክሶችን የሚያገኝ አልጎሪዝም በመጠቀም ከሚገኘው ኢንቲጀር ጋር እኩል ይሆናል። ዝርዝሩ ወደ ኢንቲጀር ዘጠና ዘጠኝ (ቁልፎቹ ምንም ፋይዳ እንደሌላቸው) እንደገና ተመድበዋል። በሌላ ሁኔታ የአረፍተ ነገሩ ሁኔታዎች ከተሟሉ የማሳያው ተጓዳኝ ምደባ ይከሰታል።

ደረጃ 7 - ዳግም ማስጀመሪያ ቁልፍን ተግባራዊ ማድረግ

ዳግም ማስጀመሪያ ቁልፍን ተግባራዊ ማድረግ
ዳግም ማስጀመሪያ ቁልፍን ተግባራዊ ማድረግ

ማብራሪያ ፦

ይህ እርምጃ በአጭሩ ይከሰታል። ለዚህ እርምጃ አብዛኛው ሥራ ቀድሞውኑ ተከናውኗል። አሁን ማድረግ የሚጠበቅብን የዳግም ማስጀመሪያ አዝራሩ በተጠቃሚ ጠቅ በተደረገ ቁጥር “ዳግም አስጀምር” የሚለውን ዘዴ መፈጸም ነው።

በመጀመሪያ እና በመጨረሻ ፣ በ ‹ሂደት› ዘዴ ውስጥ ‹ዳግም ማስጀመር› ዘዴን በሌላ መግለጫ እንፈጽማለን። ሕብረቁምፊው "!" ተመዝግቧል ፣ ከዚያ “ዳግም ማስጀመር” ዘዴው ይፈጸማል። እንዲሁም በ “setSLASHresetGUI” ዘዴ መጨረሻ ላይ እንደገና መጀመር የሚለውን አዝራር መፍጠር አለብን። ይህ ዳግም ማስጀመሪያ ቁልፍ ሕብረቁምፊውን "!" (ትዕዛዝ lambda: self.process ("!")) እና በ "ሂደት" ዘዴ ውስጥ ተጓዳኝ የሆነውን "ዳግም አስጀምር" ዘዴን ያስፈጽሙ።

የሚመከር: