The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by nic3ts, 2017-07-28 08:53:17

icsd11162_icsd11148_Phase01pdf

icsd11162_icsd11148_Phase01pdf

Αντικειμενοστραφής Νίκος Τρίτσης
Προγραμματισμός ΙΙ - JAVA (icsd11162)

1η φάση ομαδικής εργασίας Ζάχος Σιαλιάκης
(icsd11148)



Περιεχόμενα / Ερωτήσεις:

1. Διαγράμματα Εργασίας
2. Περιγραφή εργασίας
3. Δομή Εργασίας
4. Λοιπά

Σημείωση:
Για την καλύτερη δυνατή ανάγνωση της εργασίας, προτείνουμε Adobe Acrobat με τις
ρυθμίσεις View -> Page Display -> Two-Page View & Show Cover Page in Two-Page View
σε Read Mode (Ctrl + H)

1. Διαγράμματα Εργασίας





2. Περιγραφή Εργασίας

Στόχος της παρούσας εργασίας είναι ο σχεδιασμός και η υλοποίηση του βασικού κορμού
(κλάσεις & διεπαφές) του παιχνιδιού SkipBo.
Η βιβλιοθήκη των κλάσεων θα πρέπει να περιλαμβάνει κλάσεις για την αναπαράσταση
διαφόρων οντοτήτων του παιχνιδιού όπως οι παίκτες, τα είδη των καρτών και τις συλλογές
των καρτών.
Βασική συνιστώσα του παιχνιδιού είναι η οντότητα της κάρτας (Card). Κάθε κάρτα μπορεί να
είναι είτε απλή, είτε ειδική κάρτα του παιχνιδιού. Οι κάρτες αυτές χρησιμοποιούνται για τη
δημιουργία συλλογών.

3. Δομή εργασίας

Η δομή της εργασίας μας βασίζεται πλήρως στην περιγραφή εργασίας (που αναφέρθηκε
προηγουμένως).

Πάνω απ’όλα είναι η υπερκλάση Card ή οποία έχει 2 υποκλάσεις, NumberCard & SpecialCard.

Τα αντικείμενα της NumberCard έχουνε αξία απ’το 1 μέχρι το 12. Για την εργασία μας
επιλέξαμε να αναπαραστήσουμε τις NumberCard με μια χρωματική ομάδα (RED, BLUE,
GREEN, YELLOW) και μια αριθμητική τιμή απ’ το 1 μέχρι το 12. Συνολικά υπάρχουν 144 Num-
berCard στην DrawPile μας (θα μιλήσουμε αργότερα για αυτή), επομένως θα υπάρχουν 3
δωδεκάδες (36 κάρτες) για το κάθε χρώμα.
π.χ. GREEN 8

Η SpecialCard απ’την άλλη καθορίζεται απ’ το είδος της ιδιαιτερότητας της. Αν είναι δηλαδή
μια κάρτα τύπου SkipBo, Super SkipBo ή Eraser και αρχικοποιημένη αριθμιτική αξία 0
(παραδοχή). Τύπος και αριθμητική αξία λοιπόν.

Παρ’όλα αυτά, ο κάθε τύπος κάρτας έχει μια ξεχωριστή ιδιότητα. Για αυτό το σκοπό θα
χρησιμοποιήσουμε την διεπαφή SpecialPowers.

Η διεπαφή SpecialPowers, δηλώνει 3 μεθόδους (μια για κάθε τύπο SpecialCard) οι οποίες
υλοποιούνται στην κλάση SpecialCard και πραγματοποιούν την λειτουργία του αντίστοιχου
τύπου.

Αφότου λοιπόν υλοποιήσαμε την Card, τις υποκλάσεις της, και το interface SpecialPowers
θα προχωρήσουμε στην υλοποίηση συλλογών. Θα φτιάξουμε μια υπερκλάση Pile και τις
υποκλάσεις της DrawPile, StockPile, HandCollection, DiscardPile & BuildingPile.

Η κλάση Pile θα εμπεριέχει μια ArrayList <Card> η οποία θα είναι υπεύθυνη για την φύλαξη
των καρτών της Pile καθώς και για διάφορες λειτουργίες που είναι απαραίτητες στο παιχνίδι
(όπως η προσθήκη ή/και διαγραφή καρτών σε κάποια Pile).

Η υποκλάση DrawPile της Pile είναι η πρώτη που θα υλοποιηθεί στη main. ενώ απο άποψη
ροής δεδομένων, η πρώτη που θα γεμίσει κάποια blocks της ArrayList της. Συνολικά θα
εκχωρηθούν 160 κάρτες στην DrawPile. Επίσης, σκοπεύουμε να μοιράσουμε 30+30 κάρτες
στις StockPile των παικτών, και τέλος να συνεχίσουμε να χρησιμοποιούμε την DrawPile ως το
“Deck” του παιχνιδιού.
Κατα την εκκίνηση του παιχνιδικού δηλαδή, η DrawPile θα έχει 100 κάρτες.

H StockPile θα είναι η δεύτερη που θα υλοποιηθεί. Θα πρέπει να δημιουργηθούν 2, μια
για τον κάθε παίκτη. Η κάθε StockPile φορτώνεται 30 κάρτες απ’την DrawPile έπειτα απ’τη
δημιουργία της

Στη συνέχεια η HandCollection περιλαμβάνει της κάρτες του χεριού του παίκτη,, περιέχει το
μέγιστο 5 κάρτες & ξεκινάει με 5.

Μετά, η DiscardPile και BuildingPile είναι 2 πολύ κλάσεις. Δεν περιέχουν κάρτες κατα την αρχή
του παιχνιδιού. Η BuildingPile επίσης θα έχει έλεγχο για το αν κάποιο απ’τα 4 Piles έφτασε την
τιμή 12, στην οποία περίπτωση θα πρέπει να το κάνει shuffle και να το προσθέτει στο τέλος
της DrawPile.

Έχοντας υλοποιήσει και τις συλλογές μας (Piles), είναι ώρα να υλοποιήσουμε την κλάση των
παικτών. Για την υλοποίηση της κλάσης Player λοιπόν, σκεφτόμαστε οτι όλες οι συλλογές εκτός
της DrawPile και των BuildingPiles, είναι του παίκτη. O παίκτης επίσης θα ‘χει όνομα και σκόρ.
4 DiscardPile, 1 HandCollection και 1 StockPile. Η κλάση του παίκτη επίσης θα πρέπει να είναι
συνδεδεμένη με ένα reference της DrawPile του παιχνιδιού, και άλλα 4, 1 για κάθε Building-
Pile στο τραπέζι του παιχνιδιού. Για να γίνει αυτό, ο δημιουργός της κλάσης θα παίρνει ως
παραμέτρους τα references αυτά.

Η κλάση του παίκτη επίσης, θα είναι συνδεδεμένη με το interface PlayerActions το οποίο
ορίζει απαραίτητες μεθόδους για τον παίκτη.

4. Λοιπά

Το pdf αυτό συνοδεύει το java project Home2_1 - Skip Bo, το οποί βρίσκεται στον ίδιο φάκελο
με το pdf, στο .zip icsd11162_icsd1114_Phase01.zip

Την πληθώρα των πραγμάτων που δεν αναλύονται εκτενώς στο παρών .pdf, χρησιμοποιούνται
σχόλεια στον κώδικα για να την καλύψουν.


Click to View FlipBook Version