https://github.com/panagiotiskotsorgios/hangman
Εργασια Παιχνιδιού Κρεμάλας
https://github.com/panagiotiskotsorgios/hangman
class game gaming gui hangman hangman-game lists object-oriented-programming python3 tkinter tkinter-gui
Last synced: 5 months ago
JSON representation
Εργασια Παιχνιδιού Κρεμάλας
- Host: GitHub
- URL: https://github.com/panagiotiskotsorgios/hangman
- Owner: PanagiotisKotsorgios
- License: mit
- Created: 2024-11-20T16:25:05.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-11-24T13:13:08.000Z (10 months ago)
- Last Synced: 2025-04-23T14:36:34.391Z (5 months ago)
- Topics: class, game, gaming, gui, hangman, hangman-game, lists, object-oriented-programming, python3, tkinter, tkinter-gui
- Language: Python
- Homepage:
- Size: 25.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Περιγραφή Έργου: Παιχνίδι Κρεμάλας
Το **Παιχνίδι Κρεμάλας** είναι ένα κλασικό παιχνίδι μαντεψιάς λέξεων, υλοποιημένο σε Python και Tkinter, μια βιβλιοθήκη GUI για τη δημιουργία εφαρμογών γραφικού περιβάλλονμτοε. Στο έργο αυτό, ο παίκτης προσπαθεί να μαντέψει μια τυχαία επιλεγμένη λέξη, προτείνοντας γράμματα. Ο παίκτης έχει περιορισμένο αριθμό λανθασμένων προσπαθειών (ζωές), πριν το παιχνίδι λήξει. Το παιχνίδι παρουσιάζεται μέσω ενός **γραφικού περιβάλλοντος χρήστη (GUI)**, το οποίο εμφανίζει τη λέξη προς μαντεψιά, καταγράφει τις λανθασμένες μαντεψιές (με καρδιές) και σχεδιάζει το ανθρωπάκι της "κρεμάλας" που συμπληρώνεται σταδιακά με κάθε λανθασμένη προσπάθεια.
### Βασικά Χαρακτηριστικά
- **Γραφικό Περιβάλλον Χρήστη (GUI):** Ένα απλό και φιλικό προς τον χρήστη περιβάλλον φτιαγμένο με Tkinter.
- **Πολλαπλά Επίπεδα Δυσκολίας:** Επιλογή μεταξύ Εύκολου, Μεσαίου και Δύσκολου επιπέδου, που επηρεάζουν τις προσπάθειες και τη διάρκεια του χρονομέτρου.
- **Χρονόμετρο:** Ένα χρονομετρητής αντίστροφης μέτρησης προσθέτει ένταση στο παιχνίδι.
- **Σχέδιο Κρεμάλας:** Το ανθρωπάκι σχεδιάζεται σταδιακά με κάθε λανθασμένη μαντεψιά.
- **Ροή Παιχνιδιού:** Το παιχνίδι τελειώνει όταν ο παίκτης είτε μαντέψει σωστά τη λέξη είτε εξαντλήσει τις προσπάθειες ή τον χρόνο, εμφανίζοντας το αποτέλεσμα με ένα αναδυόμενο μήνυμα.---
## Επεξήγηση Κώδικα
### Εισαγωγές και Ρυθμίσεις
- **`Tkinter`**: Για τη δημιουργία του γραφικού περιβάλλοντος χρήστη.
- **`random`**: Για την τυχαία επιλογή λέξεων από μια λίστα.---
### Κλάση `HangmanGameGUI`
Αυτή η κλάση είναι ο πυρήνας της εφαρμογής, διαχειρίζεται τη ροή του παιχνιδιού, τις ενημερώσεις του GUI και τη λογική.#### **Μέθοδος `__init__`**
- Αρχικοποιεί:
- Τη λίστα λέξεων, τις προσπάθειες, το χρονόμετρο και το επίπεδο δυσκολίας.
- Καλεί τη `setup_menu()` για την εμφάνιση του βασικού μενού.#### **Μέθοδος `setup_menu`**
- Εμφανίζει το βασικό μενού με:
- Κουμπιά επιλογής δυσκολίας (Εύκολο, Μεσαίο, Δύσκολο).
- Κουμπί εξόδου.#### **Μέθοδος `start_game`**
- Ξεκινά ένα νέο παιχνίδι:
- Επιλέγει τυχαία μια λέξη από τη λίστα λέξεων.
- Αρχικοποιεί μεταβλητές (`guessed_letters`, `remaining_attempts`, `display_word`).
- Ρυθμίζει τις παραμέτρους δυσκολίας (προσπάθειες και χρονόμετρο).
- Καλεί τη `setup_game_gui()` για να εμφανίσει την οθόνη του παιχνιδιού.#### **Μέθοδος `setup_game_gui`**
- Ρυθμίζει το περιβάλλον του παιχνιδιού:
- Εμφανίζει τη λέξη (με κρυμμένα γράμματα ως υπογραμμίσεις), τις ζωές (καρδιές) και το χρονόμετρο.
- Περιλαμβάνει κουμπιά για εισαγωγή και επιλογές (Επανεκκίνηση, Κεντρικό Μενού).
- Δημιουργεί έναν καμβά για τη σχεδίαση της κρεμάλας.#### **Μέθοδοι `draw_base` και `draw_hangman`**
- **`draw_base`**: Σχεδιάζει τη βάση της κρεμάλας.
- **`draw_hangman`**: Σχεδιάζει μέρη του ανθρωπάκου (κεφάλι, σώμα, χέρια, πόδια) με κάθε λανθασμένη μαντεψιά.#### **Μέθοδος `make_guess`**
- Διαχειρίζεται τις μαντεψιές του παίκτη:
- Ελέγχει την εγκυρότητα της μαντεψιάς (ένα μόνο γράμμα).
- Ενημερώνει την κατάσταση του παιχνιδιού:
- **Σωστή Μαντεψιά:** Αποκαλύπτει το γράμμα στη λέξη.
- **Λανθασμένη Μαντεψιά:** Μειώνει τις προσπάθειες, αφαιρεί μια καρδιά και προσθέτει μέρος του ανθρωπάκου.
- Τερματίζει το παιχνίδι αν:
- Η λέξη μαντευτεί πλήρως (νίκη).
- Εξαντληθούν οι προσπάθειες (ήττα).#### **Μέθοδοι Ενημέρωσης Κατάστασης**
- **`update_word_display`**: Ενημερώνει τη λέξη με τα μαντεμένα γράμματα.
- **`update_hearts_display`**: Ενημερώνει τις καρδιές (υπόλοιπες ζωές).
- **`update_guessed_letters`**: Εμφανίζει τα γράμματα που έχουν μαντευτεί.#### **Μέθοδος `update_timer`**
- Ενημερώνει το χρονόμετρο κάθε δευτερόλεπτο.
- Λήγει το παιχνίδι με μήνυμα "χρόνος τελείωσε" αν το χρονόμετρο μηδενιστεί.#### **Μέθοδος `end_game`**
- Τερματίζει το παιχνίδι:
- Εμφανίζει μήνυμα με το αποτέλεσμα (νίκη/ήττα) και τη σωστή λέξη αν χάθηκε το παιχνίδι.#### **Μέθοδος `clear_window`**
- Αφαιρεί όλα τα στοιχεία από το παράθυρο, προετοιμάζοντάς το για την επόμενη οθόνη (μενού ή παιχνίδι).---
### Κύρια Εκτέλεση Κώδικα
- **Λίστα Λέξεων:** Περιέχει τις λέξεις που επιλέγονται τυχαία.
- **Ρίζα Tkinter:** Αρχικοποιεί το παράθυρο Tkinter.
- **Παράδειγμα `HangmanGameGUI`:** Ξεκινά τη λογική του παιχνιδιού και τη ρύθμιση του GUI.
- **`mainloop`:** Τρέχει τη βρόχο γεγονότων του Tkinter για την αλληλεπίδραση με τον χρήστη.---
## Σημαντικά Στοιχεία του Κώδικα
1. **Επιλογή Λέξης:** Επιλέγεται τυχαία λέξη για μαντεψιά.
2. **Έλεγχος Εισόδου:** Εξασφαλίζεται ότι οι μαντεψιές είναι έγκυρες (ένα γράμμα της αλφαβήτου).
3. **Ενημέρωση Κατάστασης Παιχνιδιού:** Ενημερώνονται:
- Η λέξη με τα μαντεμένα γράμματα.
- Οι υπόλοιπες ζωές (καρδιές).
- Η πρόοδος του ανθρωπάκου.
4. **Οπτική Ενημέρωση:** Ο ανθρωπάκος και οι καρδιές δίνουν οπτική ένδειξη της προόδου και των λαθών.
5. **Χρονόμετρο:** Προσθέτει ένταση λήγοντας το παιχνίδι όταν ο χρόνος τελειώσει.