Μπορείτε να κατεβάσετε τοπικά ή να επισκευτείτε την σελίδα: https://users.iee.ihu.gr/~iee2019187/ADISE23_SoyBeans/
- Apache2
- Mysql Server
- php
-
Κάντε clone το project σε κάποιον φάκελο
$ git clone (https://github.com/iee-ihu-gr-course1941/ADISE23_SoyBeans.git) -
Βεβαιωθείτε ότι ο φάκελος είναι προσβάσιμος από τον Apache Server. πιθανόν να χρειαστεί να καθορίσετε τις παρακάτω ρυθμίσεις.
-
Θα πρέπει να δημιουργήσετε στην Mysql την βάση με όνομα 'ludo_game' και να φορτώσετε σε αυτήν την βάση τα δεδομένα από το αρχείο schema.sql
-
Θα πρέπει να φτιάξετε το αρχείο db_user_pass.php το οποίο να περιέχει:
<?php
$DB_PASS = 'κωδικός';
$DB_USER = 'όνομα χρήστη';
?>
- Μόλις πατήσετε το link της εφαρμογής, θα γίνει ανακατεύθυνση στην σελίδα login του τμηματός μας, έτσι ώστε να βάλετε το username και το password που έχετε στο σύστημα users. Μετά από επιτυχή σύνδεση, θα μεταφερθείτε στην σελίδα του παιχνιδιού. Καλές Ζαριές!!!
Ο στόχος του γκρινιάρη είναι να μετακινήσετε όλα τα κομμάτια σας γύρω από τον πίνακα και να τα φέρετε στο κέντρο πριν από τους αντιπάλους σας.
Οι κανόνες είναι οι
- Εάν ένας παίκτης ρίξει ένα έξι, έχει δικαίωμα σε έναν επιπλέον γύρο.
- Εάν ένας παίκτης ρίξει ένα έξι τρεις φορές σε σειρά, χάνει τη σειρά του και πρέπει να περάσει το ζάρι στον επόμενο παίκτη.
- Για να μετακινήσει ένα παίκτης ένα πιόνι έξω από την περιοχή έναρξης, πρέπει να ρίξει ένα έξι. Αφού ριχτεί ένα έξι, ο παίκτης μπορεί να επιλέξει είτε να μετακινήσει ένα νέο πιόνι στο επιτραπέζιο είτε να μετακινήσει ήδη ενεργό πιόνι προς τα εμπρός.
- Αν ένας παίκτης ρίξει ένα έξι, έχει δικαίωμα σε ένα επιπλέον γύρο.
- Αν ένας παίκτης καταλήξει σε ένα κελί που κατέχεται από ένα πιόνι του αντιπάλου, το πιόνι του αντιπάλου επιστρέφει στην περιοχή έναρξης του.
- Οι παίκτες πρέπει να κάνουν ολο τον γυρο του επιτραπέζιου για να καταλήξουν στο κέντρο
Η βάση μας κρατάει τους εξής πίνακες και στοιχεία
Η εφαρμογή απαπτύχθηκε μέχρι το σημείο οπου μπορουν να παιξουν 2 παικτες αντιπαλοι διαλεγοντας οποιο χρωμα θελουν. Οι κινησεις γινονται χειροκινητα.
Σωτήρης Χατζηγρηγορίου 2019187 Γιάννης Χαρπαντίδης 2019185
-
handleDeletePlayers($Method):- Εάν η μέθοδος είναι GET, επιστρέφει κατάλληλο μήνυμα σφάλματος (405 Method Not Allowed).
- Εάν η μέθοδος είναι POST, επαναφέρει τους παίκτες στην αρχική κατάσταση.
-
handleRoll($Method):- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
rollDice().
- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
-
handleRollR($piece, $Method):- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
rollDiceForPiece($piece).
- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
-
handleHighlight($piece, $Method):- Εάν η μέθοδος είναι GET, εκτελεί αποθηκευμένη διαδικασία MySQL (
highlight{$piece}()) και επιστρέφει τα αποτελέσματα σε μορφή JSON.
- Εάν η μέθοδος είναι GET, εκτελεί αποθηκευμένη διαδικασία MySQL (
-
handleLosers($Method):- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
returnLostUsers().
- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
-
handleRedWin($method),handleBlackWin($method),handleYellowWin($method),handleGreenWin($method):- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
redWin(),blackWin(),yellowWin(),greenWin()αντίστοιχα.
- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
-
handleBoard($Method):- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
displayBoard(). - Εάν η μέθοδος είναι POST, καλεί τις συναρτήσεις
resetBoard()καιresetStatus().
- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
-
handlePiece($Method, $X, $Y, $Input):- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
showPiece($X, $Y). - Εάν η μέθοδος είναι PUT, καλεί τη συνάρτηση
movePiece($X, $Y, $Input['x'], $Input['y'], $Input['token']).
- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
-
displayUser($b):- Εκτελεί ερώτημα SQL για την επιστροφή πληροφοριών χρήστη με βάση το χρώμα του πιονιού. Επιστρέφει τα αποτελέσματα σε μορφή JSON.
-
setUser($b, $input):
- Ελέγχει αν υπάρχει όνομα χρήστη στην είσοδο και εάν ο παίκτης με το συγκεκριμένο χρώμα δεν έχει ήδη οριστεί.
- Εάν ισχύουν οι προϋποθέσεις, ενημερώνει τη βάση δεδομένων και επιστρέφει τα αποτελέσματα σε μορφή JSON.
-
handlePlayer($Method, $P, $Input):- Δρομολογεί την εκτέλεση συναρτήσεων για τους παίκτες με βάση το χρώμα τους.
-
handleStatus($Method):- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
showPlayStatus().
- Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση
GET /board/
Επιστρέφει το Board.
POST /board/
Αρχικοποιεί το Board, δηλαδή το παιχνίδι. Γίνονται reset τα πάντα σε σχέση με το παιχνίδι. Επιστρέφει το Board.
GET /board/piece/:x/:y/
Κάνει την κίνηση του πιονιού από την θέση x,y στην νέα θέση. Προφανώς ελέγχεται η κίνηση αν είναι νόμιμη καθώς και αν είναι η σειρά του παίκτη να παίξει με βάση το token. Επιστρέφει τα στοιχεία από το Board με συντεταγμένες x,y. Περιλαμβάνει το χρώμα του πιονιού και τον τύπο.
PUT /board/piece/:x/:y/
Json Data:
| Field | Description | Required |
|---|---|---|
x |
Η νέα θέση x | yes |
y |
Η νέα θέση y | yes |
Επιστρέφει τα στοιχεία από το Board με συντεταγμένες x,y. Περιλαμβάνει το χρώμα του πιονιού και τον τύπο
GET /players/:p
Επιστρέφει τα στοιχεία του παίκτη p ή όλων των παικτών αν παραληφθεί. Το p μπορεί να είναι 'B' ή 'R' ή 'G' ή 'Υ'.
PUT /players/:p
Json Data:
| Field | Description | Required |
|---|---|---|
username |
Το username για τον παίκτη p. | yes |
piece_color |
To χρώμα που επέλεξε ο παίκτης p. | yes |
Επιστρέφει τα στοιχεία του παίκτη p και ένα token. Το token πρέπει να το χρησιμοποιεί ο παίκτης καθόλη τη διάρκεια του παιχνιδιού.
GET /status/
Επιστρέφει το στοιχείο Game_status.
Το board είναι ένας πίνακας, ο οποίος στο κάθε στοιχείο έχει τα παρακάτω:
| Attribute | Description | Values |
|---|---|---|
x |
H συντεταγμένη x του τετραγώνου | 1..8 |
y |
H συντεταγμένη y του τετραγώνου | 1..8 |
b_color |
To χρώμα του τετραγώνου | 'B', 'R', 'G', 'Υ' |
piece_color |
To χρώμα του πιονιού | 'B','W', null |
piece |
To Πιόνι που υπάρχει στο τετράγωνο | 'Y4','Y3','Y2','Y1','R4','R3','R2','R1','G4','G3', 'G2','G1','B4','B3','B2','B1', null |
y_path |
Πίνακας με τα δυνατά τετράγωνα (x,y) που μπορεί να μετακινηθεί το τρέχον πιόνι. Αν δεν υπάρχει πιόνι, ή δεν έχει κάνει login ο χρήστης, ή δεν έχει ξεκινήσει το παιχνίδι ή αν δεν υπάρχουν κινήσεις, τότε το πεδίο δεν υπάρχει. | |
b_path |
Πίνακας με τα δυνατά τετράγωνα (x,y) που μπορεί να μετακινηθεί το τρέχον πιόνι. Αν δεν υπάρχει πιόνι, ή δεν έχει κάνει login ο χρήστης, ή δεν έχει ξεκινήσει το παιχνίδι ή αν δεν υπάρχουν κινήσεις, τότε το πεδίο δεν υπάρχει. | |
r_path |
Πίνακας με τα δυνατά τετράγωνα (x,y) που μπορεί να μετακινηθεί το τρέχον πιόνι. Αν δεν υπάρχει πιόνι, ή δεν έχει κάνει login ο χρήστης, ή δεν έχει ξεκινήσει το παιχνίδι ή αν δεν υπάρχουν κινήσεις, τότε το πεδίο δεν υπάρχει. | |
g_path |
Πίνακας με τα δυνατά τετράγωνα (x,y) που μπορεί να μετακινηθεί το τρέχον πιόνι. Αν δεν υπάρχει πιόνι, ή δεν έχει κάνει login ο χρήστης, ή δεν έχει ξεκινήσει το παιχνίδι ή αν δεν υπάρχουν κινήσεις, τότε το πεδίο δεν υπάρχει. |
O κάθε παίκτης έχει τα παρακάτω στοιχεία:
| Attribute | Description | Values |
|---|---|---|
username |
Όνομα παίκτη | String |
piece_color |
To χρώμα που παίζει ο παίκτης | 'B' ή 'R' ή 'G' ή 'Υ' |
token |
To κρυφό token του παίκτη. Επιστρέφεται μόνο τη στιγμή της εισόδου του παίκτη στο παιχνίδι | HEX |
H κατάσταση παιχνιδιού έχει τα παρακάτω στοιχεία:
| Attribute | Description | Values |
|---|---|---|
status |
Κατάσταση | 'not active', 'initialized', 'started', 'ended', 'aborded' |
p_turn |
To χρώμα του παίκτη που παίζει | 'B','W',null |
result |
To χρώμα του παίκτη που κέρδισε | 'B','W',null |
last_change |
Τελευταία αλλαγή/ενέργεια στην κατάσταση του παιχνιδιού | timestamp |