Skip to content

giovergos/python-scrabble

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Python Scrabble

Απλοποιημένη εκδοχή του παιχνιδιού Scrabble στα Ελληνικά, υλοποιημένη σε αντικειμενοστρεφή Python. Το παιχνίδι παίζεται σε character mode (γραμμή εντολών) ανάμεσα σε έναν παίκτη-άνθρωπο και τον υπολογιστή.

Εργασία για το μάθημα «Θεωρίες Μάθησης & Εκπαιδευτικό Λογισμικό 2026», Τμήμα Πληροφορικής, ΑΠΘ.

Χαρακτηριστικά

  • Αντικειμενοστρεφής σχεδίαση με 5 κλάσεις (Game, SakClass, Player, Human, Computer) + Mediator
  • Κληρονομικότητα & Πολυμορφισμός: Οι Human/Computer κληρονομούν από την Player και επεκτείνουν τη μέθοδο play()
  • Πρότυπο Mediator για τον συντονισμό της επικοινωνίας μεταξύ των κλάσεων
  • Επίσημη κατανομή γραμμάτων ελληνικού Scrabble (102 πλακίδια)
  • 3 επίπεδα δυσκολίας για τον υπολογιστή: MIN, MAX, SMART
  • O(1) αναζήτηση λέξεων με χρήση set αντί για list
  • Ανεξάρτητο από εξωτερικές βιβλιοθήκες (μόνο standard library: random, itertools, os)

Δομή αρχείων

.
├── classes.py         # Όλες οι κλάσεις του παιχνιδιού + documentation()
├── main.py        # Κύριο πρόγραμμα με μενού επιλογών
├── greek7.txt         # Λεξικό ελληνικών λέξεων (δεν περιλαμβάνεται)
└── README.md          # Αυτό το αρχείο

⚠️ Το greek7.txt δεν περιλαμβάνεται στο repository (είναι υλικό μαθήματος). Θα πρέπει να το αποκτήσεις από τη σελίδα του μαθήματος και να το τοποθετήσεις στον ίδιο φάκελο.

Εκτέλεση

Προαπαιτούμενα

  • Python 3.7 ή νεότερη
  • Το αρχείο greek7.txt στον ίδιο φάκελο

Πώς να το τρέξεις

python main.py

Στο μενού που εμφανίζεται:

  • 1: Σκορ — Ιστορικό προηγούμενων παρτίδων
  • 2: Ρυθμίσεις — Επιλογή δυσκολίας υπολογιστή & ονόματος παίκτη
  • 3: Παιχνίδι — Έναρξη νέας παρτίδας
  • q: Έξοδος

Κανόνες παιχνιδιού

  1. Κάθε παίκτης ξεκινά με 7 τυχαία γράμματα
  2. Στη σειρά του, ο παίκτης σχηματίζει μια έγκυρη ελληνική λέξη από τα γράμματά του
  3. Παίρνει πόντους ίσους με το άθροισμα της αξίας των γραμμάτων της λέξης
  4. Στη συνέχεια συμπληρώνει ξανά τα γράμματά του ώστε να έχει 7
  5. Ο παίκτης μπορεί να πατήσει:
    • P ή Π — αλλαγή όλων των γραμμάτων (χάνει τη σειρά του)
    • Q — παραίτηση από το παιχνίδι
  6. Το παιχνίδι τελειώνει όταν αδειάσει το σακουλάκι ή κάποιος παραιτηθεί

Αξίες γραμμάτων

Πόντοι Γράμματα
1 Α (×12), Ο (×9), Ε (×8), Ι (×8), Τ (×8), Η (×7), Σ (×7), Ν (×6)
2 Ρ (×5), Κ (×4), Π (×4), Υ (×4)
3 Λ (×3), Μ (×3), Ω (×3)
4 Γ (×2), Δ (×2)
8 Β, Φ, Χ
10 Ζ, Θ, Ξ, Ψ

Σύνολο πλακιδίων: 102

Αλγόριθμος Computer (Min-Max-Smart)

Ο παίκτης-υπολογιστής υποστηρίζει 3 επίπεδα δυσκολίας:

  • MIN — Παίζει την πρώτη αποδεκτή λέξη ξεκινώντας από μεταθέσεις 2 γραμμάτων (εύκολο)
  • MAX — Παίζει την πρώτη αποδεκτή λέξη με τα περισσότερα γράμματα (μέτριο)
  • SMART — Εξαντλεί όλες τις μεταθέσεις 2..7 και επιλέγει τη λέξη με τους περισσότερους πόντους (δύσκολο)

Οι μεταθέσεις υπολογίζονται με itertools.permutations().

Αρχιτεκτονική

                ┌──────────┐
                │  Player  │  (βασική κλάση)
                └────┬─────┘
                     │
           ┌─────────┴─────────┐
           ▼                   ▼
       ┌───────┐           ┌──────────┐
       │ Human │           │ Computer │
       └───────┘           └──────────┘
           │                   │
           └────┐         ┌────┘
                ▼         ▼
              ┌──────────────┐
              │   Mediator   │  ← Πρότυπο σχεδίασης
              └──────┬───────┘
                     │
           ┌─────────┴─────────┐
           ▼                   ▼
       ┌──────────┐       ┌──────┐
       │ SakClass │       │ Game │
       └──────────┘       └──────┘

Παράδειγμα εκτέλεσης

***** SCRABBLE *****
--------------------
1: Σκορ
2: Ρυθμίσεις
3: Παιχνίδι
q: Έξοδος
--------------------
Επιλογή: 3

============================================================
              ΞΕΚΙΝΑ ΤΟ ΠΑΙΧΝΙΔΙ!
============================================================
************************************************************
    *** Παίκτης: Stavros    *** Σκορ: 0
    >>> Γράμματα:  ['Α', 'Υ', 'Τ', 'Η', 'Ν', 'Ψ', 'Ρ']

    ΛΕΞΗ: ΑΥΤΗ
    Πόντοι Λέξης: 5
    *** Παίκτης: Stavros    *** Σκορ: 5
    >>> Γράμματα:  ['Ν', 'Ψ', 'Ρ', 'Β', 'Μ', 'Η', 'Ι']

Άδεια

Το project αυτό δημιουργήθηκε ως ακαδημαϊκή εργασία. Είναι ελεύθερο για εκπαιδευτική χρήση και αναφορά.

Συντελεστές

Εργασία στο πλαίσιο του μαθήματος «Θεωρίες Μάθησης & Εκπαιδευτικό Λογισμικό», Τμήμα Πληροφορικής Α.Π.Θ., 2026.

About

Greek Scrabble game in Python with OOP design and 3 AI difficulty levels

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages