Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Αντικειμενοστρεφής
Προγραμματισμός
Αναφορά
Προγραμματιστικής Εργασίας
Χειμερινού Εξαμήνου 2007
1
Επιμέλεια : Μάριος Πράσινος (1907) & Ιωάννης Μανουσάκης (1957)
Περιεχόμενα
Περιεχόμενα...................................................................................................................2
Γενικά.............................................................................................................................2
Backgammon..............................................................................................................4
PortesGame................................................................................................................6
Dice............................................................................................................................8
Γενικά
2
Στην 1η φάση της κατασκευής του Backgammon θα περιγράψουμε αναλυτικά το
κομμάτι GameCore της εργασίας μας.
a) PortesGame
b) PlakotoGame
c) FevgaGame
Οι τρεις αυτές κλάσεις θα κληρονομούν όλες όλες τις μεθόδους της υπερακλάσης
Backgammon που είναι κοινές για τα 3 παιχνίδια και θα υλοποιούν μόνο τις κλάσεις
που διαφέρουν σε κάθε παιχνίδι.
Επίσης κρίναμε απαραίτητο να κατασκευάσουμε την κλάση Dice που θα υλοποιεί ένα
εξάεδρο δίκαιο ζάρι. Στην υλοποίηση της κλάσης Backgammon θα μας χρειαστούν 2
τέτοια ζάρια.
3
Περιγραφή Μεθόδων και Δεδομένων των
Κλάσεων
Backgammon
• public enum PointType {C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12,
C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24,
BLACK_START, WHITE_START, BLACK_BAR, WHITE_BAR,
BLACK_BEAR_OFF, WHITE_BEAR_OFF};
4
Μία στοίβα από πίνακες τύπου PointType. Οι πίνακες θα έχουν 2 στοιχεία, την αρχή
και το τέλος μίας κίνησης, δηλαδή μία ολοκληρομένη κίνηση. Ουσιαστικά είναι μία
στοίβα από κινήσεις που θα χρειαστούμε για να μπορούμε να κάνουμε undo.
5
Αυτή η μέθοδος επιστρέφει το δεδομένο τύπου GameState που είναι αποθηκευμένο
στην μεταβλητή State, δηλαδή την τρέχουσα κατάσταση του παιχνιδιού.
Αυτή η μέθοδος έιναι τύπου accessor.
PortesGame
Η κλάση PortesGame είναι υπεύθυνη για την αναπαράσταση ενός παιχνιδιού πόρτες.
Επεκτείνει την υπερκλάση Backgammon και κληρονομεί όλα τα δεδομένα και τις
μεθόδους της εκτός από τις εξής τις οποίες κάνει override:
6
Τα πούλια των 2 παικτών έιναι συμμετρικά τοποθετημένα.
PlakotoGame
FevgaGame
Η κλάση FevgaGame είναι υπεύθυνη για την αναπαράσταση ενός παιχνιδιού φεύγα.
Επεκτείνει την υπερκλάση Backgammon και κληρονομεί όλα τα δεδομένα και τις
μεθόδους της εκτός από τις εξής τις οποίες κάνει override:
7
Για το πλακωτό οι θέσεις είναι οι εξής:
• Όλα τα πούλια του Παίκτη 1 (Λευκά) τοποθετούνται στη θέση 13
• Όλα τα πούλια του Παίκτη 2 (Μάυρα) τοποθετούνται στη θέση 1
Dice
Η κλάση Dice είναι υπεύθυνη για την αναπαράσταση ενός 6 άεδρου ζαριού.
Περιέχει το ιδιωτικό δεδομένο:
8
τις public void initialize()και public List<List<PointType[]>> findPossibleMoves()
τις οποίες θα κανει override και θα τις υλοποιεί σύμφωνα με τους εκάστοτε κανόνες.