Διαδρομές
/
Python
Python
/
Ασκήσεις
/
Κατάσταση της τρίλιζας
Κατάσταση της τρίλιζας

Κατάσταση της τρίλιζας

Εύκολο

Οδηγίες

Σε αυτή την άσκηση, θα υλοποιήσεις ένα πρόγραμμα που προσδιορίζει την κατάσταση ενός παιχνιδιού tic-tac-toe. (Μπορεί επίσης να το ξέρεις ως "noughts and crosses" ή "Xs and Os".)

Το παιχνίδι παίζεται σε πλέγμα 3×3. Οι παίκτες παίζουν εναλλάξ, τοποθετώντας X και O στο πλέγμα. Το παιχνίδι τελειώνει όταν ένας παίκτης κερδίσει βάζοντας τρία σημάδια στη σειρά, σε μια στήλη ή σε μια διαγώνιο του πλέγματος, ή όταν γεμίσει ολόκληρο το πλέγμα.

Σε αυτή την άσκηση, θα υποθέσουμε ότι ξεκινάει το X.

Δική σου δουλειά είναι να προσδιορίσεις σε ποια κατάσταση βρίσκεται ένα δεδομένο παιχνίδι.

Υπάρχουν 3 πιθανές καταστάσεις του παιχνιδιού:

  • Το παιχνίδι βρίσκεται στην κατάσταση ongoing.
  • Το παιχνίδι έληξε στην κατάσταση draw.
  • Το παιχνίδι έληξε στην κατάσταση win.

Αν το ταμπλό που δίνεται δεν είναι έγκυρο, πέτα ένα κατάλληλο σφάλμα.

Ένα ταμπλό δεν είναι έγκυρο αν ισχύουν οι παρακάτω συνθήκες:

  • Το ταμπλό που δίνεται δεν μπορεί να προκύψει όταν οι κινήσεις γίνονται με τη σωστή σειρά (θυμήσου ότι ξεκινάει το X).
  • Το παιχνίδι συνεχίστηκε αφού είχε ήδη τελειώσει.

Παραδείγματα

Παιχνίδι σε εξέλιξη

   |   |
 X |   |
___|___|___
   |   |
   | X | O
___|___|___
   |   |
 O | X |
   |   |

Ισοπαλία

   |   |
 X | O | X
___|___|___
   |   |
 X | X | O
___|___|___
   |   |
 O | X | O
   |   |

Νίκη

   |   |
 X | X | X
___|___|___
   |   |
   | O | O
___|___|___
   |   |
   |   |
   |   |

Μη έγκυρο

Λάθος σειρά κινήσεων
   |   |
 O | O | X
___|___|___
   |   |
   |   |
___|___|___
   |   |
   |   |
   |   |
Συνέχεια παιχνιδιού μετά τη νίκη
   |   |
 X | X | X
___|___|___
   |   |
 O | O | O
___|___|___
   |   |
   |   |
   |   |

Μηνύματα εξαιρέσεων

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

Ένα έγκυρο παιχνίδι Tic Tac Toe τελειώνει όταν ένας παίκτης κερδίσει. Αν και οι δύο παίκτες βρίσκονται σε νικηφόρα κατάσταση, αυτή η άσκηση περιμένει να χρησιμοποιήσεις την εντολή raise και να "πετάξεις" ένα ValueError στη λύση σου. Ο κώδικάς σου επίσης αναμένεται να πετάξει ένα ValueError αν ένας παίκτης κριθεί ότι παίζει δύο γύρους στη σειρά, ή παίζει την πρώτη κίνηση ενώ του είχε ανατεθεί να παίξει τη δεύτερη κίνηση.

Για να πετάξεις ένα ValueError με ένα μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο exception:

# Example when player O goes before player X.
raise ValueError("Wrong turn order: O started")

# Example when player X goes twice.
raise ValueError("Wrong turn order: X went twice")

# Example when player X wins AND player O wins.
raise ValueError("Impossible board: game should have ended after the game was won")

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

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Python Exercism

Έτοιμος να ξεκινήσεις την άσκηση Κατάσταση της τρίλιζας;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.