{"id":28154810,"url":"https://github.com/panagiotiskotsorgios/hangman","last_synced_at":"2025-05-15T06:15:23.037Z","repository":{"id":289483715,"uuid":"891608585","full_name":"PanagiotisKotsorgios/hangman","owner":"PanagiotisKotsorgios","description":"Εργασια Παιχνιδιού Κρεμάλας","archived":false,"fork":false,"pushed_at":"2024-11-24T13:13:08.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-23T14:36:34.391Z","etag":null,"topics":["class","game","gaming","gui","hangman","hangman-game","lists","object-oriented-programming","python3","tkinter","tkinter-gui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PanagiotisKotsorgios.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-20T16:25:05.000Z","updated_at":"2024-11-24T13:44:39.000Z","dependencies_parsed_at":"2025-04-23T14:47:06.134Z","dependency_job_id":null,"html_url":"https://github.com/PanagiotisKotsorgios/hangman","commit_stats":null,"previous_names":["panagiotiskotsorgios/hangman"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanagiotisKotsorgios%2Fhangman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanagiotisKotsorgios%2Fhangman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanagiotisKotsorgios%2Fhangman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanagiotisKotsorgios%2Fhangman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PanagiotisKotsorgios","download_url":"https://codeload.github.com/PanagiotisKotsorgios/hangman/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254283223,"owners_count":22045145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["class","game","gaming","gui","hangman","hangman-game","lists","object-oriented-programming","python3","tkinter","tkinter-gui"],"created_at":"2025-05-15T06:14:31.630Z","updated_at":"2025-05-15T06:15:23.015Z","avatar_url":"https://github.com/PanagiotisKotsorgios.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Περιγραφή Έργου: Παιχνίδι Κρεμάλας\n\nΤο **Παιχνίδι Κρεμάλας** είναι ένα κλασικό παιχνίδι μαντεψιάς λέξεων, υλοποιημένο σε Python και Tkinter, μια βιβλιοθήκη GUI για τη δημιουργία εφαρμογών γραφικού περιβάλλονμτοε. Στο έργο αυτό, ο παίκτης προσπαθεί να μαντέψει μια τυχαία επιλεγμένη λέξη, προτείνοντας γράμματα. Ο παίκτης έχει περιορισμένο αριθμό λανθασμένων προσπαθειών (ζωές), πριν το παιχνίδι λήξει. Το παιχνίδι παρουσιάζεται μέσω ενός **γραφικού περιβάλλοντος χρήστη (GUI)**, το οποίο εμφανίζει τη λέξη προς μαντεψιά, καταγράφει τις λανθασμένες μαντεψιές (με καρδιές) και σχεδιάζει το ανθρωπάκι της \"κρεμάλας\" που συμπληρώνεται σταδιακά με κάθε λανθασμένη προσπάθεια.\n\n### Βασικά Χαρακτηριστικά\n\n- **Γραφικό Περιβάλλον Χρήστη (GUI):** Ένα απλό και φιλικό προς τον χρήστη περιβάλλον φτιαγμένο με Tkinter.\n- **Πολλαπλά Επίπεδα Δυσκολίας:** Επιλογή μεταξύ Εύκολου, Μεσαίου και Δύσκολου επιπέδου, που επηρεάζουν τις προσπάθειες και τη διάρκεια του χρονομέτρου.\n- **Χρονόμετρο:** Ένα χρονομετρητής αντίστροφης μέτρησης προσθέτει ένταση στο παιχνίδι.\n- **Σχέδιο Κρεμάλας:** Το ανθρωπάκι σχεδιάζεται σταδιακά με κάθε λανθασμένη μαντεψιά.\n- **Ροή Παιχνιδιού:** Το παιχνίδι τελειώνει όταν ο παίκτης είτε μαντέψει σωστά τη λέξη είτε εξαντλήσει τις προσπάθειες ή τον χρόνο, εμφανίζοντας το αποτέλεσμα με ένα αναδυόμενο μήνυμα.\n\n---\n\n## Επεξήγηση Κώδικα\n\n### Εισαγωγές και Ρυθμίσεις\n- **`Tkinter`**: Για τη δημιουργία του γραφικού περιβάλλοντος χρήστη.\n- **`random`**: Για την τυχαία επιλογή λέξεων από μια λίστα.\n\n---\n\n### Κλάση `HangmanGameGUI`\nΑυτή η κλάση είναι ο πυρήνας της εφαρμογής, διαχειρίζεται τη ροή του παιχνιδιού, τις ενημερώσεις του GUI και τη λογική.\n\n#### **Μέθοδος `__init__`**\n- Αρχικοποιεί:\n  - Τη λίστα λέξεων, τις προσπάθειες, το χρονόμετρο και το επίπεδο δυσκολίας.\n- Καλεί τη `setup_menu()` για την εμφάνιση του βασικού μενού.\n\n#### **Μέθοδος `setup_menu`**\n- Εμφανίζει το βασικό μενού με:\n  - Κουμπιά επιλογής δυσκολίας (Εύκολο, Μεσαίο, Δύσκολο).\n  - Κουμπί εξόδου.\n\n#### **Μέθοδος `start_game`**\n- Ξεκινά ένα νέο παιχνίδι:\n  - Επιλέγει τυχαία μια λέξη από τη λίστα λέξεων.\n  - Αρχικοποιεί μεταβλητές (`guessed_letters`, `remaining_attempts`, `display_word`).\n  - Ρυθμίζει τις παραμέτρους δυσκολίας (προσπάθειες και χρονόμετρο).\n  - Καλεί τη `setup_game_gui()` για να εμφανίσει την οθόνη του παιχνιδιού.\n\n#### **Μέθοδος `setup_game_gui`**\n- Ρυθμίζει το περιβάλλον του παιχνιδιού:\n  - Εμφανίζει τη λέξη (με κρυμμένα γράμματα ως υπογραμμίσεις), τις ζωές (καρδιές) και το χρονόμετρο.\n  - Περιλαμβάνει κουμπιά για εισαγωγή και επιλογές (Επανεκκίνηση, Κεντρικό Μενού).\n  - Δημιουργεί έναν καμβά για τη σχεδίαση της κρεμάλας.\n\n#### **Μέθοδοι `draw_base` και `draw_hangman`**\n- **`draw_base`**: Σχεδιάζει τη βάση της κρεμάλας.\n- **`draw_hangman`**: Σχεδιάζει μέρη του ανθρωπάκου (κεφάλι, σώμα, χέρια, πόδια) με κάθε λανθασμένη μαντεψιά.\n\n#### **Μέθοδος `make_guess`**\n- Διαχειρίζεται τις μαντεψιές του παίκτη:\n  - Ελέγχει την εγκυρότητα της μαντεψιάς (ένα μόνο γράμμα).\n  - Ενημερώνει την κατάσταση του παιχνιδιού:\n    - **Σωστή Μαντεψιά:** Αποκαλύπτει το γράμμα στη λέξη.\n    - **Λανθασμένη Μαντεψιά:** Μειώνει τις προσπάθειες, αφαιρεί μια καρδιά και προσθέτει μέρος του ανθρωπάκου.\n  - Τερματίζει το παιχνίδι αν:\n    - Η λέξη μαντευτεί πλήρως (νίκη).\n    - Εξαντληθούν οι προσπάθειες (ήττα).\n\n#### **Μέθοδοι Ενημέρωσης Κατάστασης**\n- **`update_word_display`**: Ενημερώνει τη λέξη με τα μαντεμένα γράμματα.\n- **`update_hearts_display`**: Ενημερώνει τις καρδιές (υπόλοιπες ζωές).\n- **`update_guessed_letters`**: Εμφανίζει τα γράμματα που έχουν μαντευτεί.\n\n#### **Μέθοδος `update_timer`**\n- Ενημερώνει το χρονόμετρο κάθε δευτερόλεπτο.\n- Λήγει το παιχνίδι με μήνυμα \"χρόνος τελείωσε\" αν το χρονόμετρο μηδενιστεί.\n\n#### **Μέθοδος `end_game`**\n- Τερματίζει το παιχνίδι:\n  - Εμφανίζει μήνυμα με το αποτέλεσμα (νίκη/ήττα) και τη σωστή λέξη αν χάθηκε το παιχνίδι.\n\n#### **Μέθοδος `clear_window`**\n- Αφαιρεί όλα τα στοιχεία από το παράθυρο, προετοιμάζοντάς το για την επόμενη οθόνη (μενού ή παιχνίδι).\n\n---\n\n### Κύρια Εκτέλεση Κώδικα\n- **Λίστα Λέξεων:** Περιέχει τις λέξεις που επιλέγονται τυχαία.\n- **Ρίζα Tkinter:** Αρχικοποιεί το παράθυρο Tkinter.\n- **Παράδειγμα `HangmanGameGUI`:** Ξεκινά τη λογική του παιχνιδιού και τη ρύθμιση του GUI.\n- **`mainloop`:** Τρέχει τη βρόχο γεγονότων του Tkinter για την αλληλεπίδραση με τον χρήστη.\n\n---\n\n## Σημαντικά Στοιχεία του Κώδικα\n\n1. **Επιλογή Λέξης:** Επιλέγεται τυχαία λέξη για μαντεψιά.\n2. **Έλεγχος Εισόδου:** Εξασφαλίζεται ότι οι μαντεψιές είναι έγκυρες (ένα γράμμα της αλφαβήτου).\n3. **Ενημέρωση Κατάστασης Παιχνιδιού:** Ενημερώνονται:\n   - Η λέξη με τα μαντεμένα γράμματα.\n   - Οι υπόλοιπες ζωές (καρδιές).\n   - Η πρόοδος του ανθρωπάκου.\n4. **Οπτική Ενημέρωση:** Ο ανθρωπάκος και οι καρδιές δίνουν οπτική ένδειξη της προόδου και των λαθών.\n5. **Χρονόμετρο:** Προσθέτει ένταση λήγοντας το παιχνίδι όταν ο χρόνος τελειώσει.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanagiotiskotsorgios%2Fhangman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanagiotiskotsorgios%2Fhangman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanagiotiskotsorgios%2Fhangman/lists"}