Σπίτι Προσωπικά Οικονομικά Προγραμματισμός Πρόκληση: Προσθέτοντας Arrays στο απλό πρόγραμμα Tic-Tac-Toe - ανδρείκελα <

Προγραμματισμός Πρόκληση: Προσθέτοντας Arrays στο απλό πρόγραμμα Tic-Tac-Toe - ανδρείκελα <

Βίντεο: Coding Challenge #3: The Snake Game 2024

Βίντεο: Coding Challenge #3: The Snake Game 2024
Anonim

This Η πρόκληση προγραμματισμού Java βασίζεται στις προηγούμενες προκλήσεις αυτής της σειράς Tic-Tac-Toe και εξετάζει την ικανότητά σας να χρησιμοποιείτε συστοιχίες - δύο από αυτές, στην πραγματικότητα.

Σε Java Προγραμματισμός Πρόκληση: Ένα απλό παιχνίδι Tic-Tac-Toe και Προγραμματισμός Java Πρόκληση: Προσθέτοντας τάξη στο απλό πρόγραμμα Tic-Tac-Toe είστε πρόκληση να γράψετε ένα πρόγραμμα για να παίξετε το απλό παιχνίδι του Tic-Tac-Toe.

Ως παιχνίδι, το Tic-Tac-Toe φωνάζει για τη χρήση ενός πίνακα που αντιπροσωπεύει την κατάσταση του παιχνιδιού. Χωρίς συστοιχίες, πρέπει να χρησιμοποιήσετε μια ξεχωριστή μεταβλητή για να αναπαριστάτε κάθε τετράγωνο του πίνακα. Με ένα πίνακα, μπορείτε να χρησιμοποιήσετε μια μόνο μεταβλητή για να αναπαριστάτε και τα εννέα τετράγωνα.

Αυτή η πρόκληση του προγραμματισμού είναι απλή: Γράψτε μια βελτιωμένη έκδοση του προγράμματος που χρησιμοποιεί συστοιχίες. Πρέπει να χρησιμοποιήσετε τουλάχιστον δύο συστοιχίες στη λύση σας:

  1. Πρέπει να χρησιμοποιήσετε έναν πίνακα για να αναπαραστήσετε το πίνακα. Πιθανότατα, θα θέλετε να χρησιμοποιήσετε ένα μονοδιάστατο πίνακα με εννέα στοιχεία, ως εξής:

    0 | 1 | 2 --- | --- --- | --- 3 4 | 5 --- | --- | --- 6 | 7 | 8
    

    Με άλλα λόγια, το πάνω αριστερό τετράγωνο (A1) αποθηκεύεται στο στοιχειώδες πίνακα 0 και το κάτω δεξί τετράγωνο (C3) αποθηκεύεται στο στοιχείο πίνακα 8.

  2. Πρέπει επίσης να χρησιμοποιήσετε έναν πίνακα για να αντιπροσωπεύετε τους οκτώ πιθανούς διανύσματα τριών σε σειρά.

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

    Ο πλήρης πίνακας θα περιέχει τα ακόλουθα δεδομένα:

    0 1 2 3 4 5 6 7 8 0 3 6 1 4 7 2 5 8 0 4 8 2 4 6
    

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

Επειδή αυτές οι μέθοδοι αναφέρονται στα τετράγωνα της πλακέτας tic-tac-toe χρησιμοποιώντας προσδιορισμούς γραμμής-στήλης όπως A1 ή B2, η υλοποίησή σας θα χρειαστεί να αντιστοιχίσει αυτούς τους ορισμούς σε αριθμούς ευρετηρίων. Για παράδειγμα, εάν η συμβολοσειρά A1 μεταβιβαστεί στη μέθοδο playAt, το πρόγραμμα πρέπει να επισημάνει την αναπαραγωγή στο ευρετήριο 0 στον πίνακα.

Η κλάση TicTacToeBoard
Κατασκευαστής Περιγραφή
TicTacToeBoard

Δημιουργεί ένα νέο TicTacToeBoard με όλα τα τετράγωνα κενά.
Μέθοδος Περιγραφή
void reset () Επαναφέρει την κατάσταση κάθε τετραγώνου για να αδειάσει.
void playAt (String square, int player) Σημειώνει το καθορισμένο τετράγωνο (A1, A2, A3, B1, B2, B3, C1, C2, C3) Ο). Πέφτει το IllegalArgumentException εάν το τετράγωνο δεν είναι μία από τις επιτρεπτές τιμές, ο παίκτης δεν είναι 1 ή 2 ή το τετραγωνίδιο που έχει καθοριστεί δεν είναι άδειο.
int isGameOver () Προσδιορίζει αν το παιχνίδι έχει τελειώσει. Επιστρέφει 0 εάν το παιχνίδι δεν έχει τελειώσει, 1 εάν X έχει κερδίσει το παιχνίδι, 2 εάν O έχει κερδίσει το παιχνίδι και 3 εάν το παιχνίδι είναι ισοπαλία. Οι συνθήκες τερματισμού του παιχνιδιού έχουν ως εξής:

1: Αν οποιαδήποτε σειρά, στήλη ή διαγώνιος περιέχει όλα τα X's.

2: Αν οποιαδήποτε γραμμή, στήλη ή διαγώνιος περιέχει όλα τα O's.

3: Εάν δεν υπάρχουν κενά τετράγωνα και ούτε η X ούτε η Ο έχουν κερδίσει.

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

* Αν το κέντρο (τετράγωνο B2) είναι άδειο, παίξτε το κεντρικό τετράγωνο.

* Εάν το κέντρο δεν είναι άδειο, αλλά οποιαδήποτε από τις τέσσερις γωνίες (τετράγωνα A1, A3, C1 ή C3) είναι κενά, πατήστε μία από τις γωνίες (δεν έχει σημασία ποιο).

* Εάν το κέντρο δεν είναι άδειο και οι γωνίες δεν είναι κενές, πατήστε μία από τις άκρες (τετράγωνα A2, B1, B3 ή C2).

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

O | | O

- | - | -

| X |

- | - | -

| X |

Ως περαιτέρω πρόκληση, για αυτή την έκδοση της πρόκλησης TicTacToeBoard, ο παίκτης του υπολογιστή πρέπει να χρησιμοποιήσει μια πιο έξυπνη στρατηγική ενάντια στον ανθρώπινο αντίπαλο. Προσδιορίστε την αναπαραγωγή του υπολογιστή ως εξής:

  1. Αν είναι δυνατό για τον υπολογιστή να κερδίσει στο επόμενο παιχνίδι του, ο υπολογιστής θα έπρεπε να παίξει στην πλατεία νίκης.

  2. Εάν είναι δυνατό για τον ανθρώπινο αντίπαλο να κερδίσει το επόμενο παιχνίδι του, ο υπολογιστής θα έπρεπε να παίξει στη νικήτρια πλατφόρμα του ανθρώπινου αντιπάλου για να εμποδίσει τη νίκη.

  3. Εάν είναι διαθέσιμο το κεντρικό τετράγωνο, ο υπολογιστής πρέπει να πάρει το κεντρικό τετράγωνο.

  4. Εάν υπάρχει τετράγωνο τετραγώνου, ο υπολογιστής πρέπει να παίζει σε μία από τις διαθέσιμες γωνίες.

  5. Ο υπολογιστής πρέπει να παίζει σε ένα διαθέσιμο τετράγωνο άκρων.

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

Μπορείτε να το κάνετε αυτό χρησιμοποιώντας το 0 για να αντιπροσωπεύσετε ένα κενό τετράγωνο, 1 για να αντιπροσωπεύσετε ένα Χ και 2 για να αντιπροσωπεύσετε ένα O. Αλλά αυτό θα απαιτούσε αρκετά περίπλοκη λογική - κάτι τέτοιο θα χρειαζόταν, υποθέτοντας ότι s1, s2, και s3 είναι ακέραιοι που περιέχουν τα περιεχόμενα των τριών τετραγώνων ενός από τους οκτώ, διανύσματα τριών σε σειρά:

αν (s1 == 0 & s2 == 1 & s3 == 1) // X μπορεί κερδίστε παίζοντας στο s1 εάν (s2 == 0 & s1 == 1 & s3 == 1) // X μπορεί να κερδίσει παίζοντας σε s2 αν (s3 == 0 & s1 == 1 & s2 == 1) // Το X μπορεί να κερδίσει παίζοντας στο s3

Έτσι, εδώ είναι μια συμβουλή: Αντί να χρησιμοποιήσετε 0, 1 και 2 για να αντιπροσωπεύσετε ένα κενό τετράγωνο, ένα Χ και ένα O, χρησιμοποιήστε τους πρωταρχικούς αριθμούς 2, 3 και 5 αντί.Στη συνέχεια, για να προσδιορίσετε εάν ένας παίκτης μπορεί να κερδίσει σε ένα δεδομένο διάνυσμα, απλά πολλαπλασιάστε τις τρεις τιμές για το εν λόγω διάνυσμα. Εάν το αποτέλεσμα είναι 18, το X μπορεί να κερδίσει (233 = 18). Αν το αποτέλεσμα είναι 50, O μπορεί να κερδίσει (255 = 50).

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

Μπορείτε να βρείτε τη λύση αυτής της πρόκλησης στην καρτέλα Downloads (Λήψεις) της σελίδας προϊόντος Java All-in-One For Dummies, 4η έκδοση.

Καλή τύχη!

Προγραμματισμός Πρόκληση: Προσθέτοντας Arrays στο απλό πρόγραμμα Tic-Tac-Toe - ανδρείκελα <

Η επιλογή των συντακτών

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Microsoft SharePoint Workspace είναι ο καλλιτέχνης παλαιότερα γνωστός ως Microsoft Office Groove desktop εφαρμογή προσαρμοσμένη για άτομα που θέλουν να συνεργάζονται σε έγγραφα online και offline. Προσφέρεται μαζί με το Office 2010 και παρέχει μια διεπαφή χρήστη παρόμοια με την Εξερεύνηση των Windows για προβολή και επεξεργασία αρχείων και λιστών από μια τοποθεσία του SharePoint. SharePoint Workspace ...

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Το Site δημοσίευσης του sharePoint 2010 παρέχει μια πλούσια εμπειρία επεξεργασίας καθιστά εύκολο για ένα μη τεχνικό πρόσωπο να δημιουργήσει ιστοσελίδες. Η προσθήκη του περιεχομένου σας στη σελίδα είναι γρήγορη. Το SharePoint παρέχει πολλά είδη δοχείων περιεχομένου που μπορείτε να χρησιμοποιήσετε κατά τη δημιουργία της σελίδας σας, συμπεριλαμβανομένων των πλαισίων κειμένου μιας γραμμής για την εισαγωγή μιας απλής γραμμής κειμένου ...

Για ιστότοπους SharePoint Online - dummies

Για ιστότοπους SharePoint Online - dummies

Μπορείτε να δημιουργήσετε και να αναπτύξετε τρεις κύριους τύπους σελίδων του SharePoint όχι λιγότερο!) - το καθένα με ξεχωριστή λειτουργία: περιεχόμενο, τμήματα Web και εκδόσεις σελίδων. Σελίδα περιεχομένου: Επίσης γνωστή ως σελίδα wiki, αυτό είναι το μαχαίρι ελβετικού στρατού των σελίδων του SharePoint. Μια σελίδα περιεχομένου παρέχει όχι μόνο μια θέση ...

Η επιλογή των συντακτών

Τι είναι ένας χάρτης Java; - ανδρείκελα

Τι είναι ένας χάρτης Java; - ανδρείκελα

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

Λίγα περίεργα πράγματα για το Java Math - dummies

Λίγα περίεργα πράγματα για το Java Math - dummies

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

Η επιλογή των συντακτών

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Από τα τρία νέα φίλτρα Blur στο Photoshop CS6, θα έχετε επίσης πρόσβαση σε δύο σχετικούς πίνακες ελέγχου, Εργαλεία θόλωσης και Εφέ θόλωσης, τα οποία περιέχουν τις επιλογές σας. Και τα τρία φίλτρα σας επιτρέπουν να δημιουργήσετε ειδικά εφέ. Blur πεδίου: Δημιουργεί μια συνολική θόλωση στην εικόνα σας. Με την προσθήκη πρόσθετων σημείων ελέγχου ή καρφίτσες, ...

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

, αυτόνομο πλαίσιο Μάσκες στο Photoshop CS6 προς όφελος του πίνακα Ιδιότητες, ο οποίος περιλαμβάνει τώρα τις δυνατότητες των πλαισίων Μάσκες και Προσαρμογές. Δεν υπάρχουν όμως ανησυχίες. Κανένα από τα χαρακτηριστικά που παρείχε προηγουμένως ο πίνακας "Μάσκες" χάθηκε. Ο νέος πίνακας Ιδιότητες σάς δίνει τη δυνατότητα να προσθέσετε, να επεξεργαστείτε και να διαχειριστείτε το στρώμα σας, ...

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Μπορείτε να κάνετε ρεαλιστικές τροποποιήσεις σε εικόνες που έχουν προοπτικά επίπεδα. Με το Σημείο Εκκίνησης, καθορίζετε τα επίπεδα στις εικόνες σας και, στη συνέχεια, χρησιμοποιώντας μια ποικιλία τεχνικών, προσθέστε ή εξαλείψτε αντικείμενα σε αυτά τα αεροπλάνα. Ανοίξτε μια εικόνα που χρειάζεται επεξεργασία. Εάν θέλετε να επικολλήσετε ...