Πίνακας περιεχομένων:
- Βήμα 1: Αποκτήστε όλα τα μέρη
- Βήμα 2: Η έγχρωμη οθόνη αφής 2,8 "για Arduino
- Βήμα 3: Κατασκευή του έργου και δοκιμή του
- Βήμα 4: Ο αλγόριθμος παιχνιδιού
- Βήμα 5: Κώδικας του Έργου
- Βήμα 6: Τελικές σκέψεις και βελτιώσεις
Βίντεο: Παιχνίδι Arduino Touch Tic Tac Toe: 6 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Αγαπητοί φίλοι καλώς ήρθατε σε ένα άλλο σεμινάριο Arduino! Σε αυτό το λεπτομερές σεμινάριο θα δημιουργήσουμε ένα παιχνίδι Arduino Tic Tac Toe. Όπως μπορείτε να δείτε, χρησιμοποιούμε οθόνη αφής και παίζουμε ενάντια στον υπολογιστή. Ένα απλό παιχνίδι όπως το Tic Tac Toe είναι μια μεγάλη εισαγωγή στον προγραμματισμό παιχνιδιών και στην Τεχνητή Νοημοσύνη. Παρόλο που δεν θα χρησιμοποιήσουμε κανέναν αλγόριθμο τεχνητής νοημοσύνης σε αυτό το παιχνίδι, θα καταλάβουμε γιατί απαιτούνται αλγόριθμοι τεχνητής νοημοσύνης σε πιο πολύπλοκα παιχνίδια.
Η ανάπτυξη παιχνιδιών για το Arduino δεν είναι εύκολη και απαιτεί πολύ χρόνο. Μπορούμε όμως να φτιάξουμε μερικά απλά παιχνίδια για το Arduino γιατί είναι διασκεδαστικό και θα μας επιτρέψει να εξερευνήσουμε κάποια πιο προηγμένα θέματα προγραμματισμού, όπως η Τεχνητή νοημοσύνη. Είναι μια υπέροχη μαθησιακή εμπειρία και στο τέλος θα έχετε ένα ωραίο παιχνίδι για τα παιδιά!
Ας χτίσουμε τώρα αυτό το έργο.
Βήμα 1: Αποκτήστε όλα τα μέρη
Τα μέρη που απαιτούνται για την κατασκευή αυτού του έργου είναι τα ακόλουθα:
Ένα Arduino Uno ▶
Οθόνη αφής 2,8”▶
Το κόστος του έργου είναι πολύ χαμηλό. Είναι μόνο 15 $
Πριν επιχειρήσετε να δημιουργήσετε αυτό το έργο, δείτε το βίντεο που έχω ετοιμάσει σχετικά με την οθόνη αφής. Το επισυνάπτω σε αυτό το διδακτικό. Θα σας βοηθήσει να κατανοήσετε τον κώδικα και να βαθμονομήσετε την οθόνη αφής.
Βήμα 2: Η έγχρωμη οθόνη αφής 2,8 "για Arduino
Ανακάλυψα αυτήν την οθόνη αφής στο banggood.com και αποφάσισα να την αγοράσω για να προσπαθήσω να τη χρησιμοποιήσω σε μερικά από τα έργα μου. Όπως μπορείτε να δείτε η οθόνη είναι φθηνή, κοστίζει περίπου $ 11.
Αποκτήστε το εδώ ▶
Η οθόνη προσφέρει ανάλυση 320x240 pixel και έρχεται ως ασπίδα που κάνει τη σύνδεση με το Arduino εξαιρετικά εύκολη. Όπως μπορείτε να δείτε, η οθόνη χρησιμοποιεί σχεδόν όλες τις ψηφιακές και αναλογικές ακίδες του Arduino Uno. Όταν χρησιμοποιούμε αυτήν την ασπίδα μας μένουν μόνο 2 ψηφιακές ακίδες και 1 αναλογική ακίδα για τα έργα μας. Ευτυχώς, η οθόνη λειτουργεί καλά και με το Arduino Mega, οπότε όταν χρειαζόμαστε περισσότερες καρφίτσες μπορούμε να χρησιμοποιήσουμε το Arduino Mega αντί για το Arduino Uno. Δυστυχώς, αυτή η οθόνη δεν λειτουργεί με το Arduino Due ή με την πλακέτα Wemos D1 ESP8266. Ένα άλλο πλεονέκτημα της ασπίδας είναι ότι προσφέρει μια υποδοχή micro SD η οποία είναι πολύ εύκολη στη χρήση.
Βήμα 3: Κατασκευή του έργου και δοκιμή του
Αφού συνδέσουμε την οθόνη με το Arduino Uno, μπορούμε να φορτώσουμε τον κωδικό και είμαστε έτοιμοι να παίξουμε.
Στην αρχή, πατάμε το κουμπί "Έναρξη παιχνιδιού" και το παιχνίδι ξεκινά. Το Arduino παίζει πρώτο. Στη συνέχεια, μπορούμε να παίξουμε την κίνησή μας απλά αγγίζοντας την οθόνη. Το Arduino παίζει στη συνέχεια την κίνησή του και ούτω καθεξής. Ο παίκτης που πετυχαίνει να τοποθετήσει τρία από τα σημάδια του σε μια οριζόντια, κάθετη ή διαγώνια σειρά κερδίζει το παιχνίδι. Όταν τελειώσει το παιχνίδι, εμφανίζεται η οθόνη Game Over. Στη συνέχεια, μπορούμε να πατήσουμε το κουμπί play again για να ξεκινήσει ξανά το παιχνίδι.
Το Arduino είναι πολύ καλό σε αυτό το παιχνίδι. Θα κερδίσει τα περισσότερα παιχνίδια, ή αν είστε πολύ καλός παίκτης το παιχνίδι θα τελειώσει ισόπαλο. Σκόπιμα σχεδίασα αυτόν τον αλγόριθμο για να κάνει κάποια λάθη, προκειμένου να δώσω στον άνθρωπο παίκτη την ευκαιρία να κερδίσει. Προσθέτοντας δύο ακόμη γραμμές στον κώδικα του παιχνιδιού, μπορούμε να κάνουμε το Arduino αδύνατο να χάσει το παιχνίδι. Αλλά πώς μπορεί ένα τσιπ 2 $, η CPU Arduino, να νικήσει τον ανθρώπινο εγκέφαλο; Είναι το πρόγραμμα που αναπτύξαμε πιο έξυπνο από τον ανθρώπινο εγκέφαλο;
Βήμα 4: Ο αλγόριθμος παιχνιδιού
Για να απαντήσουμε σε αυτήν την ερώτηση, ας δούμε τον αλγόριθμο που έχω εφαρμόσει.
Ο υπολογιστής παίζει πάντα πρώτος. Αυτή η απόφαση και μόνο, κάνει το παιχνίδι πολύ πιο εύκολο για το Arduino να κερδίσει. Η πρώτη κίνηση είναι πάντα μια γωνία. Η δεύτερη κίνηση για το Arduino είναι επίσης μια τυχαία γωνία από το υπόλοιπο χωρίς να ενδιαφέρεται καθόλου για την κίνηση του παίκτη. Από αυτό το σημείο και μετά, το Arduino ελέγχει πρώτα εάν ο παίκτης μπορεί να κερδίσει στην επόμενη κίνηση και αποκλείει αυτήν την κίνηση. Εάν ο παίκτης δεν μπορεί να κερδίσει σε μία μόνο κίνηση, παίζει ένα κόρνερ εάν είναι διαθέσιμο ή τυχαίο από το υπόλοιπο. Αυτό είναι όλο, αυτός ο απλός αλγόριθμος μπορεί να κερδίσει τον παίκτη κάθε φορά ή στο χειρότερο σενάριο το παιχνίδι θα οδηγήσει σε ισοπαλία. Αυτός δεν είναι ο καλύτερος αλγόριθμος παιχνιδιού tic tac toe, αλλά ένας από τους απλούστερους.
Αυτός ο αλγόριθμος μπορεί να εφαρμοστεί εύκολα στο Arduino, επειδή το παιχνίδι Tic Tac Toe είναι πολύ απλό και μπορούμε εύκολα να το αναλύσουμε και να το λύσουμε. Αν σχεδιάσουμε το δέντρο παιχνιδιών, μπορούμε να ανακαλύψουμε μερικές στρατηγικές νίκης και να τις εφαρμόσουμε εύκολα σε κώδικα ή μπορούμε να αφήσουμε την CPU να υπολογίσει το δέντρο παιχνιδιού σε πραγματικό χρόνο και να επιλέξει την καλύτερη κίνηση από μόνη της. Φυσικά, ο αλγόριθμος που χρησιμοποιούμε σε αυτό το παιχνίδι είναι πολύ απλός, γιατί το παιχνίδι είναι πολύ απλό. Αν προσπαθήσουμε να σχεδιάσουμε έναν αλγόριθμο νίκης για το σκάκι, ακόμα και αν χρησιμοποιούμε τον ταχύτερο υπολογιστή, δεν μπορούμε να υπολογίσουμε το δέντρο παιχνιδιού σε χίλια χρόνια! Για παιχνίδια όπως αυτό, χρειαζόμαστε μια άλλη προσέγγιση, χρειαζόμαστε κάποιους αλγόριθμους Τεχνητής Νοημοσύνης και φυσικά τεράστια επεξεργαστική ισχύ. Περισσότερα για αυτό σε μελλοντικό βίντεο.
Βήμα 5: Κώδικας του Έργου
Ας ρίξουμε μια γρήγορη ματιά στον κώδικα του έργου. Χρειαζόμαστε τρεις βιβλιοθήκες για να καταρτιστεί ο κώδικας.
- Adafruit TFTLCD:
- Adafruit GFX:
- Οθόνη αφής:
Όπως μπορείτε να δείτε, ακόμη και ένα απλό παιχνίδι όπως αυτό, απαιτεί περισσότερες από 600 γραμμές κώδικα. Ο κώδικας είναι περίπλοκος, οπότε δεν θα προσπαθήσω να τον εξηγήσω σε σύντομο σεμινάριο. Θα σας δείξω όμως την εφαρμογή του αλγορίθμου για τις κινήσεις του Arduino.
Στην αρχή, παίζουμε δύο τυχαία κόρνερ.
<int firstMoves = {0, 2, 6, 8}; // θα χρησιμοποιήσει αυτές τις θέσεις πρώτα για (μετρητής = 0; μετρητής <4; μετρητής ++) // Μετρήστε τις πρώτες κινήσεις που παίχτηκαν {if (board [firstMoves [counter]! = 0) // Η πρώτη κίνηση παίζεται από κάποιον {movesPlayed ++; }} do {if (moves <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (πίνακας [c] == 0) {καθυστέρηση (1000)? σανίδα [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
Στη συνέχεια, σε κάθε γύρο ελέγχουμε αν ο παίκτης μπορεί να κερδίσει στην επόμενη κίνηση.
int checkOpponent ()
{if (board [0] == 1 && board [1] == 1 && board [2] == 0) επιστροφή 2; αλλιώς εάν (πίνακας [0] == 1 && πίνακας [1] == 0 && πίνακας [2] == 1) επιστροφή 1? αλλιώς εάν (πίνακας [1] == 1 && πίνακας [2] == 1 && πίνακας [0] == 0) επιστρέψει 0; αλλιώς εάν (πίνακας [3] == 1 && πίνακας [4] == 1 && πίνακας [5] == 0) επιστροφή 5; αλλιώς εάν (πίνακας [4] == 1 && πίνακας [5] == 1 && πίνακας [3] == 0) επιστροφή 3; αλλιώς εάν (πίνακας [3] == 1 && πίνακας [4] == 0 && πίνακας [5] == 1) επιστροφή 4; αλλιώς εάν (πίνακας [1] == 0 && πίνακας [4] == 1 && πίνακας [7] == 1) επιστροφή 1? αλλιως επιστρεψε 100? }
Εάν ναι, εμποδίζουμε αυτήν την κίνηση, τις περισσότερες φορές. Δεν αποκλείουμε όλες τις κινήσεις για να δώσουμε την ευκαιρία στον παίκτη να κερδίσει. Μπορείτε να βρείτε ποιες κινήσεις δεν αποκλείονται; Μετά τον αποκλεισμό της κίνησης, παίζουμε μια υπόλοιπη γωνία ή μια τυχαία κίνηση. Μπορείτε να μελετήσετε τον κώδικα και να εφαρμόσετε εύκολα τον δικό σας ασυναγώνιστο αλγόριθμο. Όπως πάντα, μπορείτε να βρείτε τον κωδικό του έργου που επισυνάπτεται σε αυτό το εκπαιδευτικό.
ΣΗΜΕΙΩΣΗ: Δεδομένου ότι το Banggood προσφέρει την ίδια οθόνη με δύο διαφορετικά προγράμματα οδήγησης οθόνης, εάν ο παραπάνω κώδικας δεν λειτουργεί, αλλάξτε τη λειτουργία initDisplay στην ακόλουθη:
void initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
Βήμα 6: Τελικές σκέψεις και βελτιώσεις
Όπως μπορείτε να δείτε, ακόμη και με ένα Arduino Uno, μπορούμε να δημιουργήσουμε έναν ασυναγώνιστο αλγόριθμο για απλά παιχνίδια. Αυτό το έργο είναι υπέροχο, επειδή είναι εύκολο να χτιστεί, και ταυτόχρονα μια μεγάλη εισαγωγή στην Τεχνητή νοημοσύνη και τον προγραμματισμό παιχνιδιών. Θα προσπαθήσω να δημιουργήσω μερικά πιο προηγμένα έργα με Τεχνητή Νοημοσύνη στο μέλλον χρησιμοποιώντας το πιο ισχυρό Raspberry Pi, οπότε μείνετε συντονισμένοι! Θα ήθελα πολύ να ακούσω τη γνώμη σας για αυτό το έργο.
Παρακαλώ δημοσιεύστε τα σχόλιά σας παρακάτω και μην ξεχάσετε να σας αρέσει το διδακτικό, αν το βρείτε ενδιαφέρον. Ευχαριστώ!
Συνιστάται:
Παιχνίδι Python Tic Tac Toe: 4 Βήματα
Παιχνίδι Python Tic Tac Toe: Παιχνίδι python tic tac toe αυτό το παιχνίδι είναι κατασκευασμένο σε python που είναι μια γλώσσα υπολογιστή έχετε χρησιμοποιήσει έναν επεξεργαστή python που ονομάζεται: pycharm μπορείτε επίσης να χρησιμοποιήσετε τον κανονικό επεξεργαστή κώδικα python επίσης
Ηλεκτρονικό παιχνίδι Tic-Tac-Toe σε ξύλινο κουτί: 5 βήματα
Ηλεκτρονικό παιχνίδι Tic-Tac-Toe in a Wood Box: Γεια Σας παρουσιάζω το αστείο παιχνίδι Tic-Tac-Toe σε νέα έκδοση. Έψαξα στον ιστό για παρόμοιο έργο, αλλά η ιδέα εδώ είναι μοναδική. ΕΛΠΙΖΩ:) Ας ξεκινήσουμε τώρα
Παιχνίδι Microbit Tic Tac Toe: 4 βήματα (με εικόνες)
Παιχνίδι Microbit Tic Tac Toe: Για αυτό το έργο, ο συνεργάτης μου - @descartez και εγώ δημιουργήσαμε ένα φοβερό παιχνίδι tic tac toe χρησιμοποιώντας τη ραδιοφωνική λειτουργικότητα των μικρορυθμιών. Αν δεν έχετε ακούσει για μικροβίτες στο παρελθόν, είναι ένας φοβερός μικροελεγκτής που έχει σχεδιαστεί για να διδάσκει στα παιδιά τον προγραμματισμό. Αυτοί
3D4x Παιχνίδι: 3D 4x4x4 Tic-Tac-Toe: 5 βήματα (με εικόνες)
3D4x Παιχνίδι: 3D 4x4x4 Tic-Tac-Toe: Έχετε βαρεθεί να παίζετε το ίδιο, παλιό, βαρετό, δισδιάστατο tic-tac-toe ;; Λοιπόν, έχουμε τη λύση για εσάς! Tic-tac-toe σε 3 διαστάσεις !!! Για 2 παίκτες, σε αυτόν τον κύβο 4x4x4, πάρτε 4 LED στη σειρά (προς οποιαδήποτε κατεύθυνση) και κερδίζετε! Τα καταφέρνεις. Μπορείτε να
Διαδραστικό παιχνίδι Tic-Tac Toe ελεγχόμενο με Arduino: 6 βήματα
Διαδραστικό παιχνίδι Tic-Tac Toe Controlled With Arduino: Ο στόχος του έργου Physical Tic-Tac-Toe είναι να μετακινήσει ένα γνωστό παιχνίδι στη φυσική σφαίρα. Αρχικά, το παιχνίδι παίζεται από δύο παίκτες σε ένα κομμάτι χαρτί - βάζοντας σύμβολα «Χ» και «Ο» σε στροφή. Η ιδέα μας ήταν να εξετάσουμε τη συμπεριφορά των παικτών