สารบัญ:

Minesweeper-Raspberry-Pi-Edition: 7 ขั้นตอน (พร้อมรูปภาพ)
Minesweeper-Raspberry-Pi-Edition: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Minesweeper-Raspberry-Pi-Edition: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Minesweeper-Raspberry-Pi-Edition: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Bot Plays Minesweeper in Power Automate Desktop 2024, กรกฎาคม
Anonim
Minesweeper-Raspberry-Pi-Edition
Minesweeper-Raspberry-Pi-Edition
Minesweeper-Raspberry-Pi-Edition
Minesweeper-Raspberry-Pi-Edition

โปรเจ็กต์สุดท้ายของฉันสำหรับซีรีส์ CSC 130 ที่ Louisiana Tech University คือรุ่น Minesweeper Raspberry Pi ในโครงการนี้ ฉันพยายามที่จะสร้างเกมคลาสสิกของเรือกวาดทุ่นระเบิดโดยใช้ไลบรารี Tkinter ของภาษาการเขียนโปรแกรม Python ตารางที่เกมเรือกวาดทุ่นระเบิดล้อมรอบคือความกว้างแปดแผ่นและความสูงห้าแผ่น การจัดรูปแบบของโครงการมีความเหมาะสมและสมบูรณ์แบบสำหรับการใช้ Raspberry Pi ที่ติดตั้งกับ Python 2.7

รหัสและรูปภาพสำหรับโครงการสุดท้ายของ Minesweeper Raspberry Pi Edition สามารถดาวน์โหลดได้ที่ลิงค์ต่อไปนี้:

Minesweeper-Raspberry-Pi-Edition

เสบียง

x1 รพ.รามาธิบดี

Python 2.7 ติดตั้งบน Raspberry Pi

Microsoft Powerpoint (หรือซอฟต์แวร์อื่นเพื่อสร้างภาพสำหรับปุ่ม)

ขั้นตอนที่ 1: สร้างรูปภาพปุ่ม

สร้างภาพปุ่ม
สร้างภาพปุ่ม

คำอธิบาย:

จะต้องสร้างปุ่มแต่ละปุ่มที่ประกอบขึ้นเป็น GUI สำหรับงานนี้ ฉันใช้ Microsoft Powerpoint เพื่อสร้างรูปภาพที่ต้องการแสดงบนปุ่มต่างๆ

อันดับแรก ฉันสร้างปุ่มไทล์สิบปุ่มที่จำเป็นในการสร้างตารางเรือกวาดทุ่นระเบิด (ว่างเปล่า บ๊อบ ศูนย์ หนึ่ง สอง สาม สี่ ห้า หก เจ็ด และแปด) โดยใช้ Microsoft Powerpoint

ประการที่สอง ฉันสร้างภาพสี่ภาพที่จำเป็นสำหรับหน้าจอเมนู (การแสดงเมนู ปุ่มความยากง่าย ปุ่มความยากปานกลาง และปุ่มความยากยาก) โดยใช้ Microsoft Powerpoint

ประการที่สาม ฉันสร้างรูปภาพที่จำเป็นสำหรับปุ่มรีสตาร์ท และรูปภาพที่จำเป็นสำหรับปุ่มแสดงผลอื่นๆ (จอแสดงผล "จบเกม" จอแสดงผล "คุณชนะ" และจอแสดงผล "กฎ") โดยใช้ Microsoft Powerpoint

ประการที่สี่ คุณจะต้องปรับขนาดภาพให้พอดีกับหน้าจอของคุณ สำหรับ Rasberry Pi ของฉัน ฉันใช้ขนาดต่อไปนี้สำหรับหน้าต่าง (หมายถึงพิกเซลที่มีความยาวและความกว้าง): 432x576

ขั้นตอนที่ 2: ฟอร์แมตโปรแกรม

รูปแบบโปรแกรม
รูปแบบโปรแกรม

คำอธิบาย:

ก่อนที่การเขียนโปรแกรมจริงจะเกิดขึ้น เราต้องนำเข้าไลบรารีที่เราต้องการและเขียนส่วนหลักของโปรแกรมของเรา

ขั้นแรก เราจะต้องนำเข้า * จากไลบรารี Tkinter และสับเปลี่ยนจากไลบรารีแบบสุ่ม ประการที่สอง เราจะต้องทำตามขั้นตอนต่อไปนี้ในโค้ดภายในส่วนหลักของโปรแกรม: สร้างหน้าต่าง ตั้งค่าหน้าต่างชื่อ สร้าง GUI และแสดง GUI และรอการโต้ตอบกับผู้ใช้ รหัสนี้เขียนในรูปแบบที่เหมาะสมตามไลบรารี Tkinter (ดูรหัสที่ให้ไว้ในคำสั่งเพื่อดูการจัดรูปแบบที่เหมาะสม)

ขั้นตอนที่ 3: สร้าง GUI (เมนู & ตารางเรือกวาดทุ่นระเบิด)

สร้าง GUI (เมนู & ตารางเรือกวาดทุ่นระเบิด)
สร้าง GUI (เมนู & ตารางเรือกวาดทุ่นระเบิด)
สร้าง GUI (เมนู & ตารางเรือกวาดทุ่นระเบิด)
สร้าง GUI (เมนู & ตารางเรือกวาดทุ่นระเบิด)
สร้าง GUI (เมนู & ตารางเรือกวาดทุ่นระเบิด)
สร้าง GUI (เมนู & ตารางเรือกวาดทุ่นระเบิด)
สร้าง GUI (เมนู & ตารางเรือกวาดทุ่นระเบิด)
สร้าง GUI (เมนู & ตารางเรือกวาดทุ่นระเบิด)

คำอธิบาย:

เมื่อเริ่มต้นโปรแกรม หน้าจอเมนูจะเปิดขึ้น หลังจากเลือกความยากแล้ว (โดยคลิกปุ่มความยากปุ่มใดปุ่มหนึ่งบนหน้าจอเมนู) GUI จะถูกรีเฟรชด้วยตารางกวาดทุ่นระเบิด จอแสดงผล และปุ่มรีสตาร์ท เนื่องจากคุณเพิ่งเริ่มทำงานกับ GUI เราจะต้องให้เมนูเริ่มต้นเท่านั้น ให้ปุ่มความยากของเมนูใช้งานได้ และให้ GUI รีเฟรชไปยังหน้าจอเกมด้วยตารางเรือกวาดทุ่นระเบิด

ขั้นแรก เราสามารถให้หน้าจอเมนูปรากฏขึ้นเองเมื่อเริ่มต้นโปรแกรมโดยเรียกเมธอด "setupMenu" ภายในตัวสร้างของคลาส MainGUI

ประการที่สอง เราสามารถให้ปุ่มความยากแต่ละปุ่มของเมนูรันโค้ดบางบรรทัดเมื่อใดก็ตามที่คลิกโดยการเพิ่มเมธอด "กระบวนการ" (จะต้องเพิ่มคำสั่ง lambda: self.process("returnButtonName") ภายในพารามิเตอร์ของฟังก์ชันปุ่มที่ใช้ ในการสร้างปุ่มความยากแต่ละปุ่ม) คำสั่ง if-else สามรายการจะถูกสร้างขึ้นในเมธอด "กระบวนการ" และรันเมธอดและบรรทัดของโค้ดเพิ่มเติมบางอย่างขึ้นอยู่กับว่าปุ่มนั้นมีค่าเท่าใด (ปุ่มจะเท่ากับชื่อปุ่มที่ลงทะเบียนครั้งล่าสุด)

ประการที่สาม ในขณะที่หน้าจอเมนูเปิดขึ้น และหากผู้ใช้คลิกที่ปุ่มความยากปุ่มใดปุ่มหนึ่ง โปรแกรมจะบันทึกค่าบางอย่างลงในตัวแปร "ความยาก" (ความยากเท่ากับ "ง่าย" "ปานกลาง" หรือ "ยาก" ปิดปุ่มความยากที่คลิก) การคลิกปุ่มนี้จะรู้ว่าคำสั่ง if-else ใดที่จะปฏิบัติตามโดยพิจารณาจากชื่อปุ่มที่ลงทะเบียนครั้งล่าสุด (ปุ่มใดเท่ากับ) นอกจากนี้ ในการกำหนดตัวแปร "ความยาก" ใหม่ เราจะต้องสร้างอินสแตนซ์ก่อน นอกคลาส ดังนั้น เราจะตั้งค่าตัวแปร "difficulty" เป็นสตริงว่างก่อนที่จะสร้างคลาส "MainGUI"

ประการที่สี่ ล้าง GUI ของปุ่มที่สร้างโดยวิธี "setupMenu" โดยสร้างเมธอด "clearMenu" (โดยใช้ฟังก์ชัน button.destroy() ในหลาย ๆ กรณี) และเรียกเมธอด "clearMenu" ในเมธอด "กระบวนการ" (ภายใต้ ปุ่มความยากแต่ละปุ่มจะลงทะเบียนหลังจากการกำหนดตัวแปรความยาก)

ประการที่ห้า รีเฟรช GUI โดยสร้างวิธี "setSLASHresetGUI" (ปุ่มทำแบบเดียวกับในวิธี "setupMenu") และเรียกวิธี "setSLASHresetGUI" ในวิธี "กระบวนการ" (ภายใต้ปุ่มความยากแต่ละปุ่มจะลงทะเบียนหลังจาก การกำหนดตัวแปรความยากและการเรียกใช้เมธอด "clearMenu")

นอกจากนี้ ก่อนกำหนดปุ่มทั้งหมดภายในเมธอด "setSLASHresetGUI" เราต้องกำหนดค่าแถวและคอลัมน์ภายในกริด และหลังจากกำหนดปุ่มทั้งหมดภายในเมธอด "setSLASHresetGUI" แล้ว เราต้องแพ็คเนื้อหาทั้งหมดภายในกริด (ดูที่ รหัสที่ให้ไว้ในคำสั่งเพื่อดูการจัดรูปแบบที่เหมาะสม)

ขั้นตอนที่ 4: สร้างปุ่มบนหน้าจอในเกม Operational

ทำให้ปุ่มบนหน้าจอในเกมใช้งานได้
ทำให้ปุ่มบนหน้าจอในเกมใช้งานได้
ทำให้ปุ่มบนหน้าจอในเกมใช้งานได้
ทำให้ปุ่มบนหน้าจอในเกมใช้งานได้
ทำให้ปุ่มบนหน้าจอในเกมใช้งานได้
ทำให้ปุ่มบนหน้าจอในเกมใช้งานได้
ทำให้ปุ่มบนหน้าจอในเกมใช้งานได้
ทำให้ปุ่มบนหน้าจอในเกมใช้งานได้

คำอธิบาย:

เพื่อให้ปุ่มรันโค้ดบางบรรทัดเมื่อคลิก เราจะต้องรันเมธอดภายในเมธอด "กระบวนการ" สำหรับงานนี้ เราจะต้องสร้างเมธอด ตัวแปร และรายการใหม่หลายรายการ

อันดับแรก เราจะทำสองรายการ จะมีรายการที่เรียกว่า "กริด" รายการ "ตาราง" นี้จะประกอบด้วยเฉพาะจำนวนเต็ม 9 และ 0 เท่านั้น ในรายการนี้ เลข 9 จะแสดงเป็นระเบิด และเลขศูนย์จะแทนตัวเลขที่ไม่ใช่ระเบิด นี่คือวิธีที่โปรแกรมจะแยกแยะว่าไทล์เป็นระเบิดหรือไม่ รายการที่สองจะถูกสร้างขึ้น และจะถูกเรียกว่า "สถานะ" รายการ "สถานะ" นี้ประกอบด้วยสตริงอักขระเดียวเท่านั้น ("0", "1", "2", "3", "4", "5", "6", "7", "8", "b ") ในรายการนี้ สตริงอักขระแต่ละตัวจะสอดคล้องกับรูปภาพหนึ่งๆ นี่คือวิธีที่โปรแกรมจะรู้ว่าจะแสดงภาพใดในแต่ละปุ่มในตารางเรือกวาดทุ่นระเบิด แต่ละปุ่มในตารางเรือกวาดทุ่นระเบิดจะมีดัชนีที่สอดคล้องกันในแต่ละรายการตามตำแหน่งในตาราง ดัชนีที่เกี่ยวข้องจะถูกกำหนดโดยขั้นตอนต่อไปนี้ (ปุ่มหมายเลข - 1) ตัวอย่างเช่น ดัชนีที่สอดคล้องกันของปุ่มหนึ่งในแต่ละรายการคือดัชนีศูนย์ สุดท้าย สองรายการนี้จะถูกดำเนินการก่อนที่คลาส "MainGUI" จะถูกดำเนินการและจะถูกสร้างขึ้นนอกคลาส "MainGUI" คลาส "grid" จะถูกสร้างขึ้นเป็นรายการว่าง (grid = ) และรายการ "status" จะถูกสร้างขึ้นโดยฟังก์ชัน range (เพิ่มสตริงอักขระเดี่ยวของ "n" สี่สิบตัวลงในรายการ "สถานะ")

ประการที่สอง เราจะสร้างวิธีการต่างๆ ที่สามารถตรวจจับจำนวนทุ่นระเบิดที่อยู่รอบๆ และสามารถเรียกใช้งานได้เมื่อคลิกปุ่ม (การตัดสินใจว่าจะใช้วิธีใดจะถูกกำหนดโดยตำแหน่งของปุ่ม) วิธีการเหล่านี้จะเรียกว่าเครื่องวิเคราะห์เหมืองของเรา วิธีการเหล่านี้จะเพิ่มตัวนับที่เรียกว่า "NumOfMines" และจะใช้ดัชนีบางอย่างภายในรายการ "กริด" เพื่อกำหนดจำนวนระเบิดที่ล้อมรอบไทล์ สตริงที่จะถูกเก็บไว้ในตัวแปร "NumOfMines" จะถูกใช้เพื่อแทนที่ดัชนีที่สอดคล้องกันในรายการ "สถานะ" ตอนนี้ คุณอาจสงสัยว่าโปรแกรมจะทราบได้อย่างไรว่าต้องใช้ดัชนีใด เมื่อปุ่มถูกลงทะเบียนในวิธีการ "ประมวลผล" ตัวแปร "ดัชนี" จะถูกสร้างขึ้น/กำหนดใหม่ให้กับจำนวนเต็มจำนวนหนึ่ง (ขึ้นอยู่กับสตริงที่ปุ่มลงทะเบียน) วิธีหนึ่งที่สร้างขึ้นจะใช้ดัชนีที่กำหนดนั้นเพื่อทราบตำแหน่งของไทล์และดัชนีของไทล์ที่อยู่รอบๆ (อัลกอริทึมภายในเมธอดจะเข้าใจสิ่งนี้) นอกจากนี้ ในการกำหนดตัวแปร "index" ใหม่ เราจะต้องสร้างอินสแตนซ์ภายนอกคลาสก่อน ดังนั้นเราจะตั้งค่าตัวแปร "index" ไว้ล่วงหน้าเป็นศูนย์จำนวนเต็มก่อนที่จะสร้างคลาส "MainGUI"

ประการที่สาม วิธีการ "ดำเนินการ" จะถูกสร้างขึ้น วิธีการ "ดำเนินการ" จะดำเนินการทุกครั้งที่มีการลงทะเบียนปุ่ม วิธีการ "ดำเนินการ" เหล่านี้จะดำเนินการในวิธี "กระบวนการ" ในเมธอด "กระบวนการ" คำสั่ง if-else หลายคำสั่งจะกำหนดว่าปุ่มใดถูกคลิก (ขึ้นอยู่กับว่าปุ่มนั้นมีค่าเท่าใด) นี่คือที่ที่วิธีการ "ดำเนินการ" บางอย่างจะถูกเรียกใช้ (ในคำสั่ง if-else)

ประการที่สี่ เราจะมาทำความเข้าใจว่าปุ่มต่างๆ ทำงานอย่างไร ตามที่ระบุไว้ก่อนหน้านี้ คำสั่ง if-else หลายรายการจะอยู่ในเมธอด "กระบวนการ" และรันเมธอดอื่นและโค้ดเพิ่มเติมบางบรรทัด ขึ้นอยู่กับว่าปุ่มนั้นมีค่าเท่าใด (ปุ่มจะเท่ากับสตริงใดก็ตามที่ลงทะเบียนครั้งล่าสุด) ภายในคำสั่ง if-else ต่อไปนี้จะเกิดขึ้นตามลำดับ: ดัชนีจะถูกกำหนดทั่วโลก ดัชนีที่เกี่ยวข้องในรายการ "สถานะ" จะถูกกำหนดใหม่ให้กับสตริง "b" (หากดัชนีที่สอดคล้องกันของรายการ "กริด" เท่ากับ จำนวนเต็มเก้า) วิธีการ "ดำเนินการ" ที่สอดคล้องกันจะถูกดำเนินการ (หากดัชนีที่สอดคล้องกันของรายการ "กริด" เท่ากับศูนย์จำนวนเต็ม) ดัชนีที่เกี่ยวข้องในรายการ "สถานะ" จะถูกกำหนดใหม่ให้กับสตริงที่เท่ากับตัวแปร "NumOfMines" (หากดัชนีที่สอดคล้องกันของรายการ "กริด" เท่ากับศูนย์จำนวนเต็ม) และ GUI จะถูกรีเฟรชโดยการเรียกเมธอด "setSLASHresetGUI"

ขั้นตอนที่ 5: วิธี "setDifficulty" & "รีสตาร์ท" วิธี

ภาพ
ภาพ
ภาพ
ภาพ

คำอธิบาย:

ถัดไป จะต้องสร้างเมธอด "setDifficulty" และปุ่มรีสตาร์ทที่อยู่ด้านล่างสุดของหน้าจอในเกมจะต้องใช้งานได้ (โดยการสร้างวิธีการ "รีสตาร์ท" เพื่อให้ทำงานได้เมื่อผู้ใช้คลิก).

ขั้นแรก ต้องใช้วิธี "setDifficulty" ในคำสั่ง if-else ของปุ่มความยากในวิธี "กระบวนการ" และในวิธี "รีสตาร์ท" บรรทัดของรหัสและวิธีการดำเนินการในวิธีนี้ค่อนข้างง่าย ในวิธี "setDifficulty" เราจะเพิ่มจำนวนศูนย์ (ไม่ใช่ระเบิด) และเก้า (ระเบิด) ลงในรายการ "กริด" (ผ่านฟังก์ชันสองช่วงภายในคำสั่ง if-else แต่ละรายการ) จากนั้นเราจะสับเปลี่ยน รายการ "กริด" (พร้อมฟังก์ชันสับเปลี่ยนของไลบรารีแบบสุ่ม) ภายในเมธอด "setDifficulty" (หลังจากดำเนินการคำสั่ง if-else) อัตราส่วนของศูนย์ถึงเก้าจะถูกกำหนดโดยสตริงที่ตัวแปร "ความยาก" ถูกตั้งค่าเป็น ("ง่าย": 34-6, "ปานกลาง": 28-12, "ยาก": 16-24)

ประการที่สอง ในวิธีการ "เริ่มต้นใหม่" เราจะตั้งค่าตัวแปร "ดัชนี" และ "NumOfMinesLEFT" เป็นศูนย์ทั่วโลก ล้างรายการ "สถานะ" และ "กริด" ทั่วโลก รีเซ็ตรายการ "สถานะ" ด้วยฟังก์ชันช่วง (เพิ่ม สตริงอักขระตัวเดียวสี่สิบตัวของ "n" ถึงรายการ "สถานะ") และเรียกใช้เมธอด "setDifficulty"

ขั้นตอนที่ 6: ฉากจบเกม

ฉากจบเกม
ฉากจบเกม
ฉากจบเกม
ฉากจบเกม
ฉากจบเกม
ฉากจบเกม
ฉากจบเกม
ฉากจบเกม

คำอธิบาย:

เกมเรือกวาดทุ่นระเบิดทุกเกมมีสองฉากจบเกม: ชนะและแพ้ ภายในโปรแกรมนี้ เราจะใช้ฉากจบเกมทั้งสองนี้ด้วยวิธีการใหม่สองวิธี: วิธี "You_A_Winner_Son" และวิธี "GameOver" ก่อนที่ GUI จะถูกรีเฟรชภายในวิธีการ "ประมวลผล" และอิงตามดัชนีที่เปลี่ยนแปลงโดยวิธีสถานการณ์สมมติจบเกมสองวิธี ปุ่มแสดงผลจะเปลี่ยนไปเพื่อแสดงผลลัพธ์อย่างเหมาะสม

ขั้นแรก เมื่อผู้ใช้คลิกที่ไทล์ที่ไม่ใช่ระเบิดที่ซ่อนไว้ล่าสุด จะต้องดำเนินการเมธอด "You_A_Winner_Son" เราจะทำงานนี้ให้เสร็จโดยเรียกใช้เมธอด "You_A_Winner_Son" ทุกครั้งที่มีการคลิกไทล์ และพบว่าไทล์เป็นไทล์ที่ไม่ใช่ระเบิด (ภายในเมธอด "การดำเนินการ" ที่ดำเนินการในเมธอด "กระบวนการ") หากตรงตามเงื่อนไขการชนะ คำสั่ง if-else สองรายการภายในวิธี "You_A_Winner_Son" จะถูกดำเนินการ คำสั่ง if-else แรกจะดำเนินการเสมอไม่ว่าผู้เล่นจะชนะหรือไม่ก็ตามเมื่อมีการเรียกใช้วิธีนี้ ขึ้นอยู่กับสิ่งที่ตัวแปร "ความยาก" เท่ากับ อัลกอริธึมบางอย่างที่จะกำหนดจำนวนทุ่นระเบิด/ระเบิดที่ถูกซ่อนไว้ จำนวนเต็มที่พบโดยอัลกอริทึมนี้จะถูกบันทึกไว้ในตัวแปร "NumOfMinesLEFT" ถัดไป ระหว่างคำสั่ง if-else สองคำสั่ง อัลกอริธึมอื่นจะถูกดำเนินการเพื่อค้นหาจำนวนไทล์เริ่มต้นที่เหลือ (ไทล์ที่ไม่ได้คลิก) จำนวนเต็มที่พบโดยอัลกอริทึมนี้จะถูกบันทึกไว้ในตัวแปร "NumOfStartingTilesLEFT" คำสั่ง if-else ที่สองจะดำเนินการเสมอไม่ว่าผู้เล่นจะชนะหรือไม่ก็ตามเมื่อมีการเรียกใช้วิธีนี้ ขึ้นอยู่กับสิ่งที่ตัวแปร "ความยาก" เท่ากับ หนึ่งในสามคำสั่ง if-else อาจถูกดำเนินการหากตรงตามเงื่อนไข เงื่อนไขจะยึดตามสิ่งที่สองตัวแปร "NumOfMinesLEFT" และ "NumOfStartingTilesLEFT" เท่ากับ ภายในคำสั่ง if-else ทั้งสามนี้ อัลกอริธึมจะถูกดำเนินการซึ่งจะทำให้แต่ละปุ่มไร้ประโยชน์ (เกมจบลงแล้ว)

ประการที่สอง เมื่อผู้ใช้คลิกที่หนึ่งในชิ้นส่วนระเบิดที่ซ่อนอยู่ จะต้องดำเนินการวิธี "GameOver" เราจะทำงานนี้ให้เสร็จสิ้นโดยเรียกใช้เมธอด "GameOver" ทุกครั้งที่มีการคลิกไทล์และพบว่าไทล์เป็นไทล์ระเบิด (ภายในเมธอด "การดำเนินการ" ที่ดำเนินการในเมธอด "กระบวนการ") เมื่อเรียกใช้เมธอด "GameOver" อัลกอริทึมจะถูกดำเนินการซึ่งจะทำให้แต่ละไทล์เริ่มต้นไร้ประโยชน์ (เกมจบลงแล้ว) และไทล์ระเบิดที่ซ่อนอยู่จะถูกเปิดเผย (ขึ้นอยู่กับดัชนีที่เกี่ยวข้องภายใน "รายการกริด ดัชนีบางรายการ) ในรายการ "สถานะ" จะถูกกำหนดใหม่ให้กับสตริงที่มีอักขระตัวเดียว "b")

ประการที่สาม การแสดงผลของหน้าจอในเกมจะได้รับการอัปเดตทุกครั้งที่มีการรีเฟรช GUI โดยทำการแก้ไขเล็กน้อยในวิธี "setSLASHresetGUI" เพียงเล็กน้อย หลังจากกำหนดค่ากริดของ GUI แล้ว เราจะวางคำสั่ง if-else สามคำสั่งในตำแหน่งที่มีการกำหนดปุ่มแสดงผลปัจจุบัน หนึ่งในสามคำสั่ง if-else จะดำเนินการตามตัวแปรต่อไปนี้เท่ากับ: "GameOverDETECTOR", "difficulty, "NumOfMinesLEFT" และ "NumOfStartingTilesLEFT" คุณอาจสงสัยว่าตัวแปร "GameOverDETECTOR" เป็นตัวแปรใหม่ ตัวแปร ตัวแปรนี้จะถูกสร้างขึ้นก่อนดำเนินการคำสั่ง if-else ภายในเมธอด "setSLASHresetGUI" ตัวแปร "GameOverDETECTOR" จะเท่ากับจำนวนเต็มที่พบโดยใช้อัลกอริทึมที่ค้นหาจำนวนดัชนีภายใน "กริด" รายการได้กำหนดใหม่เป็นจำนวนเต็ม เก้าสิบเก้า (วิธีการทำให้ปุ่มไร้ประโยชน์) ขึ้นอยู่กับเงื่อนไขของคำสั่ง if-else การกำหนดใหม่ที่สอดคล้องกันกับจอแสดงผลจะเกิดขึ้น

ขั้นตอนที่ 7: การทำให้ปุ่มรีสตาร์ทใช้งานได้

ทำให้ปุ่มรีสตาร์ทใช้งานได้
ทำให้ปุ่มรีสตาร์ทใช้งานได้

คำอธิบาย:

ขั้นตอนนี้สั้นที่สุด งานส่วนใหญ่สำหรับขั้นตอนนี้ได้ทำไปแล้ว สิ่งที่เราต้องทำตอนนี้คือเรียกใช้เมธอด "รีสตาร์ท" ทุกครั้งที่ผู้ใช้คลิกปุ่มรีสตาร์ท

ขั้นแรกและสุดท้าย เราจะดำเนินการตามวิธีการ "รีสตาร์ท" ในวิธี "กระบวนการ" โดยใช้คำสั่ง if-else ถ้าสตริง "!" ถูกลงทะเบียนแล้ว วิธีการ "เริ่มต้นใหม่" จะถูกดำเนินการ เราจะต้องสร้างปุ่มที่เรียกว่ารีสตาร์ทเมื่อสิ้นสุดเมธอด "setSLASHresetGUI" ก่อนที่เนื้อหาของกริดจะถูกรวมเข้าด้วยกัน ปุ่มรีสตาร์ทนี้จะประมวลผลสตริง "!" (คำสั่งแลมบ์ดา: self.process("!")) และดำเนินการเมธอด "รีสตาร์ท" ที่สอดคล้องกันภายในเมธอด "กระบวนการ"

แนะนำ: