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

Minesweeper: 5 βήματα (με εικόνες)
Minesweeper: 5 βήματα (με εικόνες)

Βίντεο: Minesweeper: 5 βήματα (με εικόνες)

Βίντεο: Minesweeper: 5 βήματα (με εικόνες)
Βίντεο: Tutorial αληθείας: πώς να παίζεις ναρκαλιευτή 2024, Ιούλιος
Anonim
Ναρκοσυλλέκτης
Ναρκοσυλλέκτης

Για το τελικό έργο CPE 133, ο Chase και εγώ αποφασίσαμε να δημιουργήσουμε ένα παιχνίδι «Minesweeper» που χρησιμοποίησε κουμπί και εναλλαγή εισόδου από έναν πίνακα Basys-3 καθώς και κώδικα VHDL. Ένα καλύτερο όνομα για το παιχνίδι θα μπορούσε κάλλιστα να είναι «Ρωσική ρουλέτα», ωστόσο θέλαμε να πάμε με ένα πιο φιλικό προς την οικογένεια όνομα. Το παιχνίδι περιλαμβάνει τον χρήστη να πατήσει το μεσαίο κουμπί στον πίνακα Basys για να εκχωρήσει τυχαία έναν από τους 16 διακόπτες να είναι «ενεργός» με μια βόμβα. Στη συνέχεια, δύο παίκτες αναβοσβήνουν τους διακόπτες, έναν κάθε φορά, έως ότου ένας από τους παίκτες γυρίσει τον διακόπτη με τη «βόμβα». Όταν συμβεί αυτό, η οθόνη επτά τμημάτων ειδοποιεί τους παίκτες ότι αυτός ο παίκτης μόλις έχασε το παιχνίδι.

Βήμα 1: Επισκόπηση

Το έργο χρησιμοποίησε πολλές από τις ενότητες VHDL που χρησιμοποιήσαμε κατά τη διάρκεια αυτού του τριμήνου. Ένας μετρητής τεσσάρων bit χρησιμοποιήθηκε σε συνδυασμό με την άκρη του ρολογιού προκειμένου να προσομοιωθεί ένας τυχαίος αριθμός τεσσάρων bit για να ενεργοποιηθεί ένας από τους διακόπτες. Χρησιμοποιήθηκε επίσης ένα διάγραμμα κατάστασης για την έξοδο διαφορετικών λέξεων στην οθόνη των επτά τμημάτων, που κυμαίνονται από το "PLAY" όταν οι παίκτες βρίσκονται στο μέσο του παιχνιδιού τους, έως το "LOSE" όταν ένας από τους παίκτες έχει γυρίσει τον ενεργό διακόπτη.

Βήμα 2: Υλικά

  • Basys3 Development Board από την Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Αυτό το αρχείο μας δόθηκε στο Polylearn και γράφτηκε από τον Bryan Mealy)
  • Ένας μετρητής 4 bit κατασκευασμένος από σαγιονάρες Τ
  • Ένας FSM

Βήμα 3: Κάνοντας το παιχνίδι

Κάνοντας το Παιχνίδι
Κάνοντας το Παιχνίδι
Κάνοντας το Παιχνίδι
Κάνοντας το Παιχνίδι

Το πρώτο βήμα προς την κατασκευή αυτού του παιχνιδιού ήταν να σχεδιάσουμε ένα διάγραμμα κυκλώματος με όλα τα στοιχεία που θα χρησιμοποιήσουμε. Οι είσοδοι για αυτό το σύστημα ήταν το κουμπί 1, οι 16 διακόπτες και το ρολόι. Οι έξοδοι ήταν η επίδειξη επτά τμημάτων και οι άνοδοι. Αφού σχεδιάσαμε το διάγραμμα κυκλώματος, γράψαμε μεμονωμένα αρχεία προέλευσης για κάθε στοιχείο στο Vivado και τα συνδυάσαμε χρησιμοποιώντας χάρτες θύρας κάτω από το κύριο αρχείο προέλευσης.

Όλη η βάση του παιχνιδιού περιστρέφεται γύρω από την τυχαία εκχώρηση ενός από τους 16 διακόπτες για να είναι ενεργός με μια βόμβα και για τους παίκτες να μην γνωρίζουν ποιος διακόπτης είναι ενεργός μέχρι να ενεργοποιηθεί αυτός ο ενεργός διακόπτης. Εξετάσαμε τυχαίες και ψευδοτυχαίες γεννήτριες αριθμών στο διαδίκτυο, αλλά τελικά αποφασίσαμε ότι η χρήση ενός μετρητή 4-bit και η ανάθεση του αντίστοιχου διακόπτη ως ενεργού είναι αρκετά τυχαία για αυτό που ψάχναμε. Counterμασταν σε θέση να επαναπροσδιορίσουμε τον μετρητή μας 4-Bit που δημιουργήσαμε σε προηγούμενο έργο για να μπορέσουμε να δουλέψουμε για αυτήν την εργασία. Χρησιμοποιήσαμε τον μετρητή για να δημιουργήσουμε έναν τυχαίο αριθμό μεταξύ 0-15. Στη συνέχεια, στο κύριο στοιχείο 1, εκχωρήσαμε το δεκαδικό ισοδύναμο του τυχαίου αριθμού στον αντίστοιχο διακόπτη του στον πίνακα. Όπως φαίνεται στο σχήμα, τόσο η έξοδος X («ενεργή βόμβα») από το στοιχείο main1 όσο και οι διακόπτες που ενεργοποιούν οι παίκτες πηγαίνουν στο FSM1. Το μηχάνημα κατάστασης εξάγει μια τιμή Z ενός μπιτ, η οποία στη συνέχεια διαβάζεται από το BC_DEC1. Η Μηχανή Πεπερασμένης Κατάστασης που χρησιμοποιήσαμε έχει δύο διαφορετικές καταστάσεις: στην κατάσταση Α, οι έξι έξοδοι οθόνης «PLAY» και το μηχάνημα παραμένει σε αυτήν την κατάσταση έως ότου αναγνωρίσει ότι ο ενεργοποιημένος διακόπτης είναι αναποδογυρισμένος. Μόλις συμβεί αυτό, ο FSM πηγαίνει στην κατάσταση Β όπου εξάγει το "LOSE" στην οθόνη των επτά τμημάτων και παραμένει σε αυτήν την κατάσταση μέχρι να γυρίσουν και οι 16 διακόπτες στο "0". Όταν πληρούται αυτή η προϋπόθεση, ο FSM πηγαίνει για άλλη μια φορά στην κατάσταση Α και περιμένει τους παίκτες να ξεκινήσουν ένα άλλο παιχνίδι. Ένα διάγραμμα Moore για να κατανοήσετε αυτό το FSM φαίνεται παραπάνω.

Βήμα 4: Μελλοντικές τροποποιήσεις

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

Βήμα 5: Συμπέρασμα

Weμασταν πολύ ευχαριστημένοι με το τελικό αποτέλεσμα αυτού του έργου. όχι μόνο επειδή η τελική έκδοση του παιχνιδιού ήταν διασκεδαστική, αλλά και επειδή η δημιουργία και ο προγραμματισμός του έργου απαιτούσε να χρησιμοποιήσουμε τα περισσότερα, αν όχι όλα όσα μάθαμε αυτό το τρίμηνο. Χρησιμοποιήσαμε Flip Flops, μετρητές, FSM, το ρολόι, είσοδο χρήστη από τον πίνακα και έξοδο στην οθόνη των επτά τμημάτων.

Μάθαμε επίσης πώς μερικά σφάλματα σύνταξης θα μπορούσαν να σπάσουν τελείως το πρόγραμμα (ακόμη και αν θεωρηθούν καλά σε άλλες γλώσσες προγραμματισμού όπως η Python ή η Java) και αυτό μόνο μετά από πολλαπλές προσομοιώσεις και πολλαπλές επαναλήψεις του κώδικα που φορτώθηκαν και δοκιμάστηκαν στο board, θα μπορέσετε επιτέλους να διορθώσετε όλα τα σφάλματα από τον κώδικά σας.

Συνιστάται: