Pinnacle παιχνίδι 2 ατόμων μέσα απο τον browser.
- Mπορείτε να βρείτε το demo στο link -> https://users.iee.ihu.gr/~it185430/ADISE22_PINNACLE/www/index.html
- Εγκατάσταση
- Περιγραφή API
-
Apache2
-
Mysql Server
-
php
- Clone the game
$ git clone https://github.com/iee-ihu-gr-course1941/ADISE22_PINNACLE.git
-
Βεβαιωθείτε ότι ο φάκελος είναι προσβάσιμος από τον Apache Server. πιθανόν να χρειαστεί να καθορίσετε τις παρακάτω ρυθμίσεις.
-
Θα πρέπει να δημιουργήσετε στην Mysql την βάση με όνομα 'pinnacle' και να φορτώσετε σε αυτήν την βάση τα δεδομένα από το αρχείο schema.sql
-
Θα πρέπει να φτιάξετε το αρχείο lib/config_local.php το οποίο να περιέχει:
<?php
$DB_PASS = 'κωδικός';
$DB_USER = 'όνομα χρήστη';
?>
-
Αρχικά μοιράζονται και στους 2 παίκτες απο 12 φύλλα της τράπουλας.
-
Κάθε παίκτης σκοπό έχει να δημιουργήσει 3άδες 4άδες κτλ από τα ίδια φύλλα και να τα κατεβάσει κάτω. Για παράδειγμα , εάν ένας παίκτης έχει 3 φύλλα του 9(π.χ. 9 diamonds , 9 spades και 9 clubs) μπορεί να τα κατεβάσει απο το χέρι του κάτω στους συνδυασμούς του. Επίσης , εκτός απο συνδυασμούς ίδιου τύπου , ο παίκτης μπορεί να κάνει και κέντες ανάλογου τύπου. Κέντα είναι όταν υπάρχουν στην σειρά αριθμητικά φύλλα ίδιας φυγούρας. Για παράδειγμα 2,3,4,5,6 ίδιας φυγούρας φύλλου. Τέλος , βασικός στόχος κάθε παίκτη είναι να μείνει με κανένα φύλλο στο χέρι , και να έχει τους περισσότερους συνδυασμούς.
-
-
ο παίκτης μπορεί να παίξει μόνο εάν είναι η σείρα του.
-
ο παίκτης αρχικά μπορεί να τραβήξει ένα φύλλο από την τράπουλα αν επιθυμεί και στην συνέχεια εάν έχει δημιουργήσει έναν συνδυασμό , να τον κατεβάσει και τέλος να παίξει ενα χαρτί στο κέντρο για να τελειώσει την σειρά του.
-
-
-
Πίνακες που περιέχονται στην Βάση :
ο πίνακας Players περιέχει τα στοιχεία των παικτών.
Players username id token last action VARCHAR INT VARCHAR TIMESTAMP ο πίνακας game_status περιέχει στοιχεία για την σειρά παίκτη που παίζει , σε τι status βρίσκεται το game και το result.
game_status status p_turn result last_action ENUM ENUM ENUM TIMESTAMP ο πίνακας deck_empty περιέχει τα στοιχεία όλης της τράπουλας με όλα τα χαρτιά αρχικοποιημένα σε θέση(location) NULL.
deck_empty number shape location ENUM VARCHAR VARCHAR ο πίνακας deck περιέχει τα στοιχεία όλης της τράπουλας αλλά με τις θέσεις(location) τροποποιημένες αναλόγως το παιχνίδι που εξελίσσεται.
deck number shape location ENUM VARCHAR VARCHAR
-
-
- Ο παίκτης μπορεί να παίξει ένα φύλλο στο κέντρο.
- Να τραβήξει ένα φύλλο από την τράπουλα.
- Να παίξει συνδυασμούς.
-
- Ο παίκτης να παίρνει ένα φύλλο από το κέντρο.
- Ο παίκτης να κολλάει φύλλα στους ήδη υπάρχοντες συνδυασμούς του.
- Το score των παικτών.
- Πολλαπλοί γύροι παιχνιδιού.
Ομάδα 2 ατόμων :
- Βασίλης Δραμιτινός
- Θοδωρής Κορδατζάκης
Aρμοδιότητες ομάδας :
-
Βασίλης Δραμιτινός : Σχεδιασμός mysql , Υλοποίηση Βάσης , Υλοποίηση sql procedures , Υλοποίηση php API , JQuery , javascript.
-
Θοδωρής Κορδατζάκης : Υλοποίηση html Page , Υλοποίηση php API , Bootstrap , javascript , JQuery , debugging , Υλοποίηση sql procedures.
POST /deck/
Αρχικοποιεί το deck με θέσεις NULL. Δηλαδή γίνεται reset η τράπουλα. Επιστρέφει ολα τα στοιχεία του πίνακα deck.
GET /deck/:x/
Επιστρέφει τα φύλλα του παίκτη x.
-
Json data :
Field Description numberτο number φύλλου του παίκτη x. shapeτο shape φύλλου του παίκτη x.
GET /player/:p
Επιστρέφει τα στοιχεία του παίκτη p ή αν παραληφθεί εμφανίζεται error message.Το p μπορεί να είναι 1 ή 2.
-
Json data :
Field Description usernameτο username του παίκτη p. idτο id του παίκτη p.
POST /player/
Επαναφέρει την κατασταση παιχνιδιού σε NULL και επίσης επαναφέρει τους παίκτες(τα 'username' τους) σε NULL.
PUT /player/:p
Αρχικοποιεί έναν παίκτη p ή εαν παραληφθεί εμφανίζεται error message. To p μπορεί να ειναι 1 ή 2. Επιστρέφει ολα τα στοιχεία του p. Εάν έχει μπει ένας παίκτης το game_status γίνεται 'initialized' , εάν έχουν μπει 2 παίκτης γίνεται 'started' και εάν δεν υπάρχουν παίκτες είναι 'not active'.
-
Json data :
Field Description usernameτο username του παίκτη p. idτο id του παίκτη p. tokenTo κρυφό token του παίκτη p. last actionη τελευταία χρονική στιγμή που έκανε μια ενέργεια ο παίκτης p.
GET /status/
Επιστρέφει όλα τα στοιχεία του πίνακα game_status.
POST /status/
Καθορίζει το το αποτέλεσμα του παιχνιδιού , ανάλογα το τελευταίο φύλλο που θα παιχτεί απο κάποιον παίκτη.
GET /center/
Αλλάζει μια τυχαία κάρτα που υπάρχει στον πίκανα deck σε 'location' = center και επιστρέφει το 'number' και το 'shape' της κάρτας αυτής.
-
Json data :
Field Description numberτο number με location='center'. shapeτο shape με location='center'.
POST /center/
Επιστρέφει την κάρτα που υπάρχει στον πίνακα deck σε 'location' = center.
-
Json data :
Field Description numberτο number με location='center'. shapeτο shape με location='center'.
POST /clean_center/
Αλλαγή υπάρχων κάρτας που υπάρχει στο κέντρο σε NULL.
POST /give_card/
Προσθήκη μιας τυχαίας κάρτας απο 'location'=pile , στο χέρι του παίκτη.
PUT /playcard/:n/:s/
Μεταβάλλει την επιλεγμένη κάρτα παίκτη σε 'location'=center.
PUT /move/:n1/:s1/:n2/:s2/:n3/:s3/
or
PUT /move/:n1/:s1/:n2/:s2/:n3/:s3/:n4/:s4/
or
PUT /move/:n1/:s1/:n2/:s2/:n3/:s3/:n4/:s4/:n5/:s5
or
PUT /move/:n1/:s1/:n2/:s2/:n3/:s3/:n4/:s4/:n5/:s5/:n6/:s6
Υποβάλλει έναν συνδυασμο απο τους παραπάνω επιτρεπτούς συνδυασμούς , δηλαδή απο 3 έως 6 φύλλα(n(i),s(i) αντιπροσωπεύει ένα φύλλο). Επιστρέφει όλα τα στοιχεία φύλλων που μόλις υποβλήθηκαν για συνδυασμό.
-
Json data :
Field Description numberτο number φύλλου n(i). shapeτο shape φύλλου s(i). locationτο location είτε "triada combination ".$turn['p_turn']"(με $turn του παίκτη που έκανε τον συνδυασμό) ή "kenta combination ".$turn['p_turn']"(με $turn του παίκτη που έκανε τον συνδυασμό).
Το deck είναι ένας πίνακας, ο οποίος στο κάθε στοιχείο έχει τα παρακάτω:
| Attribute | Description | Values |
|---|---|---|
number |
H συντεταγμένη αριθμός του φύλλου | 1..10,J,Q,K,A |
shape |
H συντεταγμένη σχήμα του φύλλου | String |
location |
Η θέση του φύλλου | String |
O κάθε παίκτης έχει τα παρακάτω στοιχεία:
| Attribute | Description | Values |
|---|---|---|
username |
όνομα παίκτη | String |
id |
το id του παίκτη | Int |
token |
To κρυφό token του παίκτη | String |
last action |
η τελευταία χρονική στιγμή που έκανε μια ενέργεια ο παίκτης | TIMESTAMP |
H κατάσταση παιχνιδιού έχει τα παρακάτω στοιχεία:
| Attribute | Description | Values |
|---|---|---|
status |
κατάσταση | 'not active', 'initialized', 'started', 'ended', 'aborded' |
p_turn |
το φύλλο που παίζει ο παίκτης | 'player 1', 'player 2' |
result |
To κρυφό token του παίκτη | 'player 1', 'player 2','draw' |
last_change |
τελευταία χρονική στιγμλη έγινε μια ενέργεια | TIMESTAMP |