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

Arduino Battleship Game: 3 Βήματα
Arduino Battleship Game: 3 Βήματα

Βίντεο: Arduino Battleship Game: 3 Βήματα

Βίντεο: Arduino Battleship Game: 3 Βήματα
Βίντεο: We built an LED battleship game box in a week 2024, Νοέμβριος
Anonim
Arduino Battleship Game
Arduino Battleship Game

Θυμάμαι ότι έπαιζα σε χαρτί και μολύβι την έκδοση του Battleship Game ως παιδί. Στην πραγματικότητα, υπήρχε από τον 1ο Παγκόσμιο Πόλεμο. Είχα επίσης μια «ηλεκτρονική» παραλλαγή στις αρχές της δεκαετίας του 1960, με την ονομασία «Sonar Sub Hunt» που είχε φώτα και ήχους και κρυμμένα ορυχεία. Με τα σημερινά πρότυπα βιντεοπαιχνιδιών το Battleship είναι αρκετά βαρετό, αλλά σκέφτηκα ότι θα το έκανα ούτως ή άλλως μόνο για να δω τι σκέφτονται τα εγγόνια για αυτό. Μετά από όλα, μερικές φορές το ρετρό μπορεί να είναι δροσερό.

Υπάρχουν κομμάτια αυτού του έργου που θα ήταν χρήσιμα αλλού ακόμα κι αν δεν ενδιαφέρεστε να φτιάξετε το παιχνίδι Battleship. Διαθέτει μια απλή διεπαφή LCD 4-bit 1602 που περιλαμβάνει μια ρουτίνα για τη ρύθμιση μιας συγκεκριμένης θέσης χαρακτήρων. Υπάρχει επίσης μια διεπαφή για αποκωδικοποίηση ενός πίνακα διακόπτη 4x4. Αυτές οι δύο διεπαφές διατίθενται ως ξεχωριστά αρχεία συμπερίληψης, ώστε να μεταφέρονται εύκολα. Το παιχνίδι διαθέτει επίσης διάφορες ρουτίνες ηχητικών εφέ και ένα απλό κύκλωμα ενισχυτή ήχου ενός τρανζίστορ.

Βήμα 1: Υλικό

Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα

Το σχήμα που παρουσιάζεται εδώ είναι για έναν παίκτη, οπότε θα πρέπει να γίνουν δύο μονάδες. Οι μονάδες επικοινωνούν χρησιμοποιώντας μια διεπαφή 3 καλωδίων που περιλαμβάνει τις γραμμές UART TX και RX και ένα καλώδιο γείωσης. Επέλεξα να χρησιμοποιήσω μια τυπική στερεοφωνική υποδοχή ακουστικών 1/8 ιντσών και ένα τυπικό καλώδιο με αρσενικά βύσματα και στα δύο άκρα. Το RX από το ένα κουτί πηγαίνει στο TX του άλλου κιβωτίου και αντίστροφα. Μπορείτε να το κάνετε αυτό αλλάζοντας τα καλώδια που έχουν κολληθεί στην υποδοχή ακουστικών μέσα στο κουτί ή τα αλλάζετε στην πλακέτα κυκλώματος όταν το κατασκευάζετε.

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

Οι 16 τοποθεσίες πλοίων ταιριάζουν όμορφα με τις απαιτήσεις του διακόπτη επειδή επιτρέπει τη μήτρα 4x4. Υπάρχουν διαθέσιμα μαξιλάρια διακόπτη μήτρας 4x4, αλλά επέλεξα να χρησιμοποιήσω μεμονωμένους διακόπτες σε μία γραμμή για να ταιριάζει με τη γραμμική οθόνη. Ωστόσο, έκανα σύρμα τους διακόπτες ως μήτρα 4x4, έτσι ώστε να χρειάζονται μόνο οκτώ καρφίτσες Arduino. Ανατρέξτε στο διάγραμμα καλωδίωσης του διακόπτη και στο διάγραμμα για τις σωστές συνδέσεις.

Η οθόνη LCD είναι ενσύρματη για διεπαφή 4 bit. Πρόσθεσα επίσης μια εξωτερική λυχνία LED στον πείρο D13 για να δείξει ποιος παίκτης πρέπει να τραβήξει. Αρχικά, οι παίκτες αποφασίζουν ποιος κάνει την πρώτη βολή και στη συνέχεια το λογισμικό ελέγχει αυτόματα το μπρος -πίσω του παιχνιδιού.

Wantedθελα να προσθέσω απλά ηχητικά εφέ για τη λήψη, τις εκρήξεις, το παιχνίδι έτοιμο και τον νικητή/χαμένο. Δοκίμασα να χρησιμοποιήσω έναν απλό πιεζοηχητικό βομβητή, αλλά κατέληξα με ένα μικρό ηχείο. Το ρεύμα που απαιτείται από το ηχείο υπερβαίνει αυτό που μπορεί να χειριστεί το Arduino, οπότε προστέθηκε ένας απλός ενισχυτής τρανζίστορ. Ο ήχος εξακολουθεί να μην είναι υπέροχος, αλλά είναι καλύτερος από ό, τι με το βομβητή. Το ηχείο μου είναι 4 ohm αλλά αν έχετε ένα 8 ohm τότε αλλάξτε την αντίσταση στο σχηματικό από 39 ohm σε 33 ohm. Εάν χρησιμοποιείτε πιεζοηλεκτρικό βομβητή, θα πρέπει να μπορείτε να το οδηγήσετε απευθείας από την καρφίτσα Arduino με την άλλη πλευρά του βομβητή συνδεδεμένη στη γείωση.

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

Βήμα 2: Λογισμικό

Το λογισμικό διαθέτει το αρχείο συμπερίληψης για τη διεπαφή LCD μου και δημιούργησα επίσης ένα αρχείο συμπερίληψης για τη σάρωση μήτρας διακόπτη 4x4. Η προετοιμασία ζητά από τον παίκτη να επιλέξει τις θέσεις για τα πλοία του και μετά πηγαίνει σε κατάσταση "Έτοιμο". Όταν και οι δύο παίκτες είναι έτοιμοι, ένας από αυτούς ξεκινά το παιχνίδι πατώντας ένα διακόπτη.

Η θέση του σουτ μεταδίδεται μέσω του UART στον άλλο παίκτη και το κατάλληλο αποτέλεσμα μεταδίδεται πίσω στον παίκτη που έριξε το σουτ. Όπως αναφέρθηκε προηγουμένως, μόλις γίνει η πρώτη λήψη, το λογισμικό ελέγχει ποιος κάνει την επόμενη λήψη. Πριν μεταδοθεί μια βολή, ελέγχεται με τις θέσεις των προηγούμενων λήψεων. Εάν αυτή η θέση έχει ήδη χρησιμοποιηθεί, τότε η λήψη δεν θα μεταδοθεί. Το LED "My_Shot" καθορίζει ποιανού είναι η σειρά. Υπάρχει επίσης ένας ήχος πυροβολισμού που παράγεται για μια έγκυρη επιλογή και ένας ήχος έκρηξης εάν χτυπηθεί ένα πλοίο. Τα ηχητικά εφέ προέρχονται από παραδείγματα που βρέθηκαν στο διαδίκτυο με τροποποιήσεις που ταιριάζουν στο παιχνίδι.

Μόλις χτυπηθούν όλα τα πλοία ενός αντιπάλου, εμφανίζεται ένα μήνυμα σε κάθε LCD - ένα ως νικητής και ένα ως ηττημένος. Το μήνυμα καθορίζει επίσης ότι το παιχνίδι μπορεί να ξεκινήσει ξανά πατώντας το κουμπί επαναφοράς. Υπάρχουν επίσης ξεχωριστά ηχητικά εφέ για τον νικητή και τον ηττημένο.

Βήμα 3: Στιγμιότυπα οθόνης

Στιγμιότυπα οθόνης
Στιγμιότυπα οθόνης
Στιγμιότυπα οθόνης
Στιγμιότυπα οθόνης
Στιγμιότυπα οθόνης
Στιγμιότυπα οθόνης
Στιγμιότυπα οθόνης
Στιγμιότυπα οθόνης

Ακολουθούν μερικά στιγμιότυπα οθόνης από το παιχνίδι. Αυτά για αυτήν την ανάρτηση. Ελέγξτε τις άλλες οδηγίες μου και επίσης τον ιστότοπό μου στη διεύθυνση: www.boomerrules.wordpress.com

Συνιστάται: