Πίνακας περιεχομένων:

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
Minesweeper-Raspberry-Pi-Edition
Minesweeper-Raspberry-Pi-Edition
Minesweeper-Raspberry-Pi-Edition
Minesweeper-Raspberry-Pi-Edition

Το τελευταίο μου έργο για τη σειρά CSC 130 στο Louisiana Tech University είναι το Minesweeper Raspberry Pi Edition. Σε αυτό το έργο, προσπάθησα να αναδημιουργήσω το κλασικό παιχνίδι ναρκαλιευτής χρησιμοποιώντας τη βιβλιοθήκη Tkinter της γλώσσας προγραμματισμού Python. Το πλέγμα που περιλαμβάνει το παιχνίδι ναρκαλιευτής είναι οκτώ πλακίδια σε πλάτος και πέντε πλακάκια σε ύψος. Η μορφοποίηση του έργου έχει προσαρμοστεί και τελειοποιηθεί για τη χρήση ενός Raspberry Pi εγκατεστημένου με Python 2.7.

Μπορείτε να κατεβάσετε τον κώδικα και τις εικόνες για το τελικό έργο Minesweeper Raspberry Pi Edition στον ακόλουθο σύνδεσμο:

Minesweeper-Raspberry-Pi-Edition

Προμήθειες

x1 Raspberry Pi

Python 2.7 Εγκατεστημένο στο Raspberry Pi

Microsoft Powerpoint (ή άλλο λογισμικό για τη δημιουργία εικόνων για κουμπιά)

Βήμα 1: Δημιουργήστε εικόνες κουμπιού

Δημιουργία εικόνων με κουμπιά
Δημιουργία εικόνων με κουμπιά

ΕΞΗΓΗΣΗ:

Κάθε κουμπί που αποτελεί το GUI θα πρέπει να δημιουργηθεί. Για αυτήν την εργασία, χρησιμοποίησα το Microsoft Powerpoint για να δημιουργήσω τις εικόνες που χρειαζόμουν για να εμφανιστούν στα κουμπιά.

Αρχικά, δημιούργησα τα δέκα κουμπιά πλακιδίων που απαιτούνται για τη δημιουργία του πλέγματος ναρκαλιευτή (κενό, bob, μηδέν, ένα, δύο, τρία, τέσσερα, πέντε, έξι, επτά και οκτώ) χρησιμοποιώντας το Microsoft Powerpoint.

Δεύτερον, έφτιαξα τις τέσσερις εικόνες που απαιτούνται για την οθόνη του μενού (εμφάνιση μενού, κουμπί εύκολης δυσκολίας, κουμπί μέσης δυσκολίας και κουμπί σκληρής δυσκολίας) χρησιμοποιώντας το Microsoft Powerpoint.

Τρίτον, δημιούργησα την εικόνα που απαιτείται για το κουμπί επανεκκίνησης και τις εικόνες που απαιτούνται για τα άλλα διαφορετικά κουμπιά εμφάνισης (μια οθόνη "game over", μια οθόνη "κερδίζεις" και μια οθόνη "κανόνων") χρησιμοποιώντας το Microsoft Powerpoint.

Τέταρτον, θα πρέπει να αλλάξετε το μέγεθος των εικόνων σας ώστε να ταιριάζουν στην οθόνη σας. Για το Rasberry Pi μου, χρησιμοποίησα τις ακόλουθες διαστάσεις για το παράθυρο (αναφέρονται σε εικονοστοιχεία σε μήκος και πλάτος): 432x576.

Βήμα 2: Μορφοποίηση προγράμματος

Πρόγραμμα μορφοποίησης
Πρόγραμμα μορφοποίησης

ΕΞΗΓΗΣΗ:

Πριν ξεκινήσει ο πραγματικός προγραμματισμός, πρέπει να εισαγάγουμε τις βιβλιοθήκες που χρειαζόμαστε και να γράψουμε το κύριο μέρος του προγράμματός μας.

Πρώτον, θα χρειαστεί να εισαγάγουμε * από τη βιβλιοθήκη Tkinter και να ανακατέψουμε από την τυχαία βιβλιοθήκη. Δεύτερον, θα πρέπει να ολοκληρώσουμε τα ακόλουθα βήματα σε κώδικα στο κύριο μέρος του προγράμματος: δημιουργήστε το παράθυρο, ορίστε το παράθυρο τίτλου, δημιουργήστε το GUI και εμφανίστε το GUI και περιμένετε την αλληλεπίδραση του χρήστη. Αυτός ο κώδικας είναι γραμμένος σε σωστή μορφοποίηση σε σχέση με τη βιβλιοθήκη Tkinter (δείτε τον κώδικα που δίνεται στο εγχειρίδιο για να δείτε τη σωστή μορφοποίηση).

Βήμα 3: Δημιουργήστε το GUI (Menu & Minesweeper Grid)

Δημιουργήστε το GUI (Menu & Minesweeper Grid)
Δημιουργήστε το GUI (Menu & Minesweeper Grid)
Δημιουργήστε το GUI (Menu & Minesweeper Grid)
Δημιουργήστε το GUI (Menu & Minesweeper Grid)
Δημιουργήστε το GUI (Menu & Minesweeper Grid)
Δημιουργήστε το GUI (Menu & Minesweeper Grid)
Δημιουργήστε το GUI (Menu & Minesweeper Grid)
Δημιουργήστε το GUI (Menu & Minesweeper Grid)

ΕΞΗΓΗΣΗ:

Κατά την εκκίνηση του προγράμματος, θα ξεκινήσει η οθόνη μενού. Αφού επιλεγεί η δυσκολία (κάνοντας κλικ σε ένα από τα κουμπιά δυσκολίας στην οθόνη του μενού), το GUI θα ανανεωθεί με το πλέγμα ναρκαλιευτή, μια οθόνη και ένα κουμπί επανεκκίνησης. Δεδομένου ότι μόλις ξεκινήσατε να εργάζεστε στο GUI, θα χρειαστεί μόνο να ξεκινήσει το μενού, να λειτουργήσουν τα κουμπιά δυσκολίας του μενού και να ανανεωθεί το GUI στην οθόνη του παιχνιδιού με το πλέγμα ναρκαλιευτή.

Πρώτον, μπορούμε να έχουμε την ίδια την οθόνη μενού κατά την εκκίνηση του προγράμματος καλώντας τη μέθοδο "setupMenu" εντός του κατασκευαστή της κλάσης MainGUI.

Δεύτερον, μπορούμε να κάνουμε κάθε ένα από τα κουμπιά δυσκολίας του μενού να εκτελεί συγκεκριμένες γραμμές κώδικα όποτε γίνεται κλικ προσθέτοντας μια μέθοδο "διεργασίας" (θα πρέπει επίσης να προσθέσει την εντολή lambda: self.process ("returnButtonName") εντός των παραμέτρων της συνάρτησης κουμπιού που χρησιμοποιείται στη δημιουργία κάθε κουμπιού δυσκολίας). Τρεις προτάσεις if-else θα δημιουργηθούν στη μέθοδο "διαδικασία" και θα εκτελέσουν ορισμένες άλλες μεθόδους και γραμμές πρόσθετου κώδικα ανάλογα με το τι ισούται με το κουμπί (το κουμπί ισούται με ό, τι το όνομα κουμπιού που καταχωρήθηκε τελευταία).

Τρίτον, ενώ η οθόνη του μενού είναι ανοικτή και αν ο χρήστης κάνει κλικ σε ένα από τα κουμπιά δυσκολίας, τότε το πρόγραμμα θα αποθηκεύσει μια συγκεκριμένη τιμή στη μεταβλητή "δυσκολία" (η δυσκολία ισούται με "εύκολο", "μέσο" ή "σκληρό" Αυτό το κλικ ενός κουμπιού γνωρίζει ποια δήλωση if-else πρέπει να ακολουθήσει με βάση το όνομα του κουμπιού που καταχωρήθηκε τελευταία (τι κουμπί ισούται). Επιπλέον, για να αναθέσουμε ξανά τη μεταβλητή "δυσκολία" θα πρέπει πρώτα να θα ορίσουμε τη μεταβλητή "δυσκολία" ως κενή συμβολοσειρά πριν δημιουργηθεί η κλάση "MainGUI".

Τέταρτον, καθαρίστε το GUI από τα κουμπιά που δημιουργήθηκαν με τη μέθοδο "setupMenu" κάνοντας μια μέθοδο "clearMenu" (χρησιμοποιώντας τη λειτουργία button.destroy () σε πολλές περιπτώσεις) και καλώντας τη μέθοδο "clearMenu" στη μέθοδο "διαδικασία" (κάτω καθένα από τα κουμπιά δυσκολίας καταχωρείται μετά την ανάθεση της μεταβλητής δυσκολίας).

Πέμπτον, ανανεώστε το GUI κάνοντας μια μέθοδο "setSLASHresetGUI" (τα κουμπιά γίνονται με τον ίδιο τρόπο όπως στη μέθοδο "setupMenu") και καλώντας τη μέθοδο "setSLASHresetGUI" στη μέθοδο "διαδικασία" (κάτω από κάθε κουμπί δυσκολίας καταχωρείται μετά το δυσκολία ανάθεσης μεταβλητής και κλήση της μεθόδου "clearMenu").

Επιπλέον, πριν από την εκχώρηση όλων των κουμπιών στη μέθοδο "setSLASHresetGUI" πρέπει να διαμορφώσουμε τις γραμμές και τις στήλες μέσα στο πλέγμα και αφού όλα τα κουμπιά εκχωρηθούν στη μέθοδο "setSLASHresetGUI" πρέπει να συσκευάσουμε όλο το περιεχόμενο μέσα στο πλέγμα (δείτε το κώδικας που δίδεται στον οδηγό για να δείτε σωστή μορφοποίηση).

Βήμα 4: Κάντε τα κουμπιά στην οθόνη του παιχνιδιού λειτουργικά

Κάντε τα κουμπιά στην οθόνη του παιχνιδιού λειτουργικά
Κάντε τα κουμπιά στην οθόνη του παιχνιδιού λειτουργικά
Κάντε τα κουμπιά στην οθόνη του παιχνιδιού λειτουργικά
Κάντε τα κουμπιά στην οθόνη του παιχνιδιού λειτουργικά
Κάντε τα κουμπιά στην οθόνη του παιχνιδιού λειτουργικά
Κάντε τα κουμπιά στην οθόνη του παιχνιδιού λειτουργικά
Κάντε τα κουμπιά στην οθόνη του παιχνιδιού λειτουργικά
Κάντε τα κουμπιά στην οθόνη του παιχνιδιού λειτουργικά

ΕΞΗΓΗΣΗ:

Για να κάνουμε τα κουμπιά να εκτελούν ορισμένες γραμμές κώδικα όταν γίνονται κλικ, θα πρέπει να εκτελέσουμε μεθόδους μέσα στη μέθοδο "διεργασία". Για αυτήν την εργασία, θα πρέπει να δημιουργήσουμε πολλές νέες μεθόδους, μεταβλητές και λίστες.

Αρχικά, θα κάνουμε δύο λίστες. Θα υπάρχει μια λίστα που ονομάζεται "πλέγμα". Αυτή η λίστα "πλέγματος" θα αποτελείται μόνο από τους ακέραιους αριθμούς 9 και 0. Σε αυτήν τη λίστα, εννέα θα αντιπροσωπεύουν βόμβες και τα μηδενικά θα αντιπροσωπεύουν μη βόμβες. Έτσι θα διακρίνει το πρόγραμμα εάν ένα κεραμίδι είναι βόμβα ή όχι. Θα δημιουργηθεί μια δεύτερη λίστα και θα ονομάζεται "κατάσταση". Αυτή η λίστα "κατάστασης" αποτελείται από μία μόνο συμβολοσειρά χαρακτήρων ("0", "1", "2", "3", "4", "5", "6", "7", "8", "b "). Σε αυτήν τη λίστα, κάθε συμβολοσειρά χαρακτήρων θα αντιστοιχεί σε μια συγκεκριμένη εικόνα. Έτσι θα γνωρίζει το πρόγραμμα ποια εικόνα θα εμφανίζεται σε κάθε κουμπί στο πλέγμα ναρκαλιευτή. Κάθε κουμπί στο πλέγμα ναρκαλιευτή θα έχει έναν αντίστοιχο δείκτη σε κάθε λίστα με βάση την τοποθέτησή του στο πλέγμα. Ο αντίστοιχος δείκτης θα εκχωρηθεί με την ακόλουθη διαδικασία (αριθμός κουμπιού - 1). Για παράδειγμα, το αντίστοιχο ευρετήριο ενός κουμπιού σε κάθε λίστα είναι μηδέν ευρετηρίου. Τέλος, αυτές οι δύο λίστες θα εκτελεστούν πριν από την εκτέλεση της κλάσης "MainGUI" και θα δημιουργηθούν εκτός της κλάσης "MainGUI". Η κλάση "grid" θα δημιουργηθεί ως κενή λίστα (grid = ) και η λίστα "status" θα δημιουργηθεί από μια συνάρτηση εύρους (προσθέτοντας σαράντα μοναδικές συμβολοσειρές "n" στη λίστα "status").

Δεύτερον, θα κάνουμε διάφορες μεθόδους που μπορούν να ανιχνεύσουν τον αριθμό των ορυχείων που το περιβάλλουν και που μπορούν να κληθούν όταν πατηθεί ένα κουμπί (η απόφαση για το ποια μέθοδος θα πρέπει να εκτελεστεί καθορίζεται από την τοποθέτηση του κουμπιού). Αυτές ακριβώς οι μέθοδοι θα ονομαστούν αναλυτές ορυχείων μας. Αυτές οι μέθοδοι θα αυξήσουν έναν μετρητή που ονομάζεται "NumOfMines" και θα χρησιμοποιήσουν ορισμένα ευρετήρια στη λίστα "πλέγμα" για να καθορίσουν πόσες βόμβες περιβάλλουν το κεραμίδι. Η συμβολοσειρά που θα αποθηκευτεί μέσα στη μεταβλητή "NumOfMines" θα χρησιμοποιηθεί για την αντικατάσταση του ίδιου αντίστοιχου ευρετηρίου στη λίστα "κατάστασης". Τώρα, μπορεί να αναρωτιέστε πώς το πρόγραμμα θα γνωρίζει ποιο ευρετήριο θα χρησιμοποιήσει. Όταν ένα κουμπί είναι καταχωρημένο στη μέθοδο "διεργασία", τότε μια μεταβλητή "ευρετήριο" θα δημιουργηθεί/θα ανατεθεί σε έναν συγκεκριμένο ακέραιο (με βάση τη συμβολοσειρά που καταγράφει το κουμπί). Μία από τις μεθόδους που δημιουργήθηκαν θα χρησιμοποιήσει το συγκεκριμένο ευρετήριο για να μάθει την τοποθέτηση του κεραμιδιού και τους δείκτες των πλακιδίων που το περιβάλλουν (ο αλγόριθμος μέσα στη μέθοδο θα το καταλάβει). Επιπλέον, για να αναπροσδιορίσουμε τη μεταβλητή "ευρετήριο" θα πρέπει πρώτα να την τεκμηριώσουμε εκτός της κλάσης. Έτσι, θα προκαθορίσουμε τη μεταβλητή "index" ως ακέραιο μηδέν πριν δημιουργηθεί η κλάση "MainGUI".

Τρίτον, θα δημιουργηθούν μέθοδοι "λειτουργίας". Μια μέθοδος "λειτουργίας" θα εκτελείται κάθε φορά που καταγράφεται ένα κουμπί. Αυτές οι μέθοδοι "λειτουργίας" θα εκτελεστούν στη μέθοδο "διαδικασία". Στη μέθοδο "διαδικασία", πολλαπλές προτάσεις if-else θα καθορίσουν ποιο κουμπί έγινε κλικ (με βάση το τι ισούται με το κουμπί). Εδώ θα κληθεί μια συγκεκριμένη μέθοδος "λειτουργίας" (στις δηλώσεις if-else).

Τέταρτον, θα μπούμε πραγματικά στο πώς λειτουργούν τα κουμπιά. Όπως αναφέρθηκε προηγουμένως, πολλαπλές εντολές if-else βρίσκονται στη μέθοδο "διεργασία" και εκτελούν ορισμένες άλλες μεθόδους και γραμμές πρόσθετου κώδικα ανάλογα με το τι ισούται με το κουμπί (το κουμπί ισούται με όποια συμβολοσειρά ήταν η τελευταία καταχώριση). Μέσα σε αυτές τις προτάσεις αλλιώς, τα ακόλουθα θα εμφανιστούν με τη σειρά: το ευρετήριο θα εκχωρηθεί παγκοσμίως, το αντίστοιχο ευρετήριο στη λίστα "κατάστασης" θα εκχωρηθεί εκ νέου στη συμβολοσειρά "β" (εάν ο αντίστοιχος δείκτης της λίστας "πλέγμα" ισούται με ο ακέραιος εννέα), θα εκτελεστεί μια αντίστοιχη μέθοδος "λειτουργίας" (εάν ο αντίστοιχος δείκτης της λίστας "πλέγμα" ισούται με το ακέραιο μηδέν), ο αντίστοιχος δείκτης στη λίστα "κατάστασης" θα εκχωρηθεί εκ νέου σε μια συμβολοσειρά που ισούται με τη μεταβλητή "NumOfMines" (εάν ο αντίστοιχος δείκτης της λίστας "grid" ισούται με τον ακέραιο μηδέν) και το GUI θα ανανεωθεί καλώντας τη μέθοδο "setSLASHresetGUI".

Βήμα 5: Μέθοδος "setDifficulty" & "restart" Method

Εικόνα
Εικόνα
Εικόνα
Εικόνα

ΕΞΗΓΗΣΗ:

Στη συνέχεια, θα πρέπει να δημιουργηθεί μια μέθοδος "setDifficulty" και το κουμπί επανεκκίνησης που βρίσκεται στο κάτω μέρος της οθόνης του παιχνιδιού θα πρέπει να λειτουργήσει (δημιουργώντας μια μέθοδο "επανεκκίνησης" για να εκτελεστεί όταν κάνει κλικ από τον χρήστη).

Πρώτον, η μέθοδος "setDifficulty" θα πρέπει να εφαρμοστεί στις δηλώσεις if-else των κουμπιών δυσκολίας στη μέθοδο "διαδικασία" και στη μέθοδο "επανεκκίνηση". Οι γραμμές κώδικα και οι μέθοδοι που εκτελούνται σε αυτήν τη μέθοδο είναι αρκετά απλές. Στη μέθοδο "setDifficulty", θα προσθέσουμε μια ορισμένη ποσότητα μηδενικών (μη βόμβων) και εννέα (βόμβες) στη λίστα "grid" (μέσω δύο συναρτήσεων εύρους σε κάθε δήλωση if-else) και, στη συνέχεια, θα ανακατέψουμε λίστα "πλέγματος" (με τη λειτουργία τυχαίας ανακατάταξης της τυχαίας βιβλιοθήκης) εντός της μεθόδου "setDifficulty" (μετά την εκτέλεση των εντολών if-else). Η αναλογία μηδενικών προς εννέα θα καθοριστεί από τη συμβολοσειρά που έχει οριστεί η μεταβλητή "δυσκολία" ("εύκολο": 34-6, "μέσο": 28-12, "σκληρό": 16-24).

Δεύτερον, στη μέθοδο "επανεκκίνηση", θα ορίσουμε τις μεταβλητές "index" και "NumOfMinesLEFT" σε μηδέν παγκοσμίως, θα αδειάσουμε και τις λίστες "status" και "grid" παγκοσμίως, θα επαναφέρουμε τη λίστα "status" με μια λειτουργία εύρους (προσθήκη σαράντα μεμονωμένες συμβολοσειρές "n" στη λίστα "status") και καλούν τη μέθοδο "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", "δυσκολία", "NumOfMinesLEFT" και "NumOfStartingTilesLEFT". Όπως ίσως αναρωτιέστε, η μεταβλητή "GameOverDETECTOR" είναι μια νέα μεταβλητή. Αυτή η μεταβλητή θα δημιουργηθεί ακριβώς πριν την εκτέλεση των εντολών if-else εντός της μεθόδου "setSLASHresetGUI". Η μεταβλητή "GameOverDETECTOR" θα είναι ίση με τον ακέραιο που βρίσκεται χρησιμοποιώντας έναν αλγόριθμο που βρίσκει πόσα ευρετήρια μέσα στο "πλέγμα" η λίστα έχει ανατεθεί στον ακέραιο ενενήντα εννέα (πώς τα κουμπιά καθίστανται άχρηστα). Με βάση τις προϋποθέσεις αν-αλλιώς πληρούνται οι προϋποθέσεις, θα προκύψει αντίστοιχη επανατοποθέτηση στην οθόνη.

Βήμα 7: Λειτουργικό το κουμπί επανεκκίνησης

Λειτουργικό το κουμπί επανεκκίνησης
Λειτουργικό το κουμπί επανεκκίνησης

ΕΞΗΓΗΣΗ:

Αυτό το βήμα συμβαίνει να είναι το συντομότερο. Το μεγαλύτερο μέρος της εργασίας για αυτό το βήμα έχει ήδη γίνει. Το μόνο που θα χρειαστεί να κάνουμε τώρα είναι να εκτελέσουμε τη μέθοδο "επανεκκίνηση" κάθε φορά που γίνεται κλικ στο κουμπί επανεκκίνησης από τον χρήστη.

Πρώτον και τελευταίο, θα εκτελέσουμε τη μέθοδο "επανεκκίνηση" στη μέθοδο "διαδικασία" με μια δήλωση if-else. Εάν η συμβολοσειρά "!" είναι καταχωρημένη, τότε εκτελείται η μέθοδος "επανεκκίνηση". Θα πρέπει επίσης να δημιουργήσουμε ένα κουμπί που ονομάζεται επανεκκίνηση στο τέλος της μεθόδου "setSLASHresetGUI" προτού συσκευαστούν μαζί τα περιεχόμενα του πλέγματος. Αυτό το κουμπί επανεκκίνησης θα επεξεργαστεί τη συμβολοσειρά "!" (εντολή lambda: self.process ("!")) και εκτελέστε την αντίστοιχη μέθοδο "επανεκκίνηση" μέσα στη μέθοδο "διαδικασία".

Συνιστάται: