Skip to content

Sotos2013/Gkriniarides

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ADISE23_SoyBeans

Table of Contents

Demo Page

Μπορείτε να κατεβάσετε τοπικά ή να επισκευτείτε την σελίδα: 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. Μετά από επιτυχή σύνδεση, θα μεταφερθείτε στην σελίδα του παιχνιδιού. Καλές Ζαριές!!!

Περιγραφή Παιχνιδιού

Ο στόχος του γκρινιάρη είναι να μετακινήσετε όλα τα κομμάτια σας γύρω από τον πίνακα και να τα φέρετε στο κέντρο πριν από τους αντιπάλους σας.

Οι κανόνες είναι οι

  1. Εάν ένας παίκτης ρίξει ένα έξι, έχει δικαίωμα σε έναν επιπλέον γύρο.
  2. Εάν ένας παίκτης ρίξει ένα έξι τρεις φορές σε σειρά, χάνει τη σειρά του και πρέπει να περάσει το ζάρι στον επόμενο παίκτη.
  3. Για να μετακινήσει ένα παίκτης ένα πιόνι έξω από την περιοχή έναρξης, πρέπει να ρίξει ένα έξι. Αφού ριχτεί ένα έξι, ο παίκτης μπορεί να επιλέξει είτε να μετακινήσει ένα νέο πιόνι στο επιτραπέζιο είτε να μετακινήσει ήδη ενεργό πιόνι προς τα εμπρός.
  4. Αν ένας παίκτης ρίξει ένα έξι, έχει δικαίωμα σε ένα επιπλέον γύρο.
  5. Αν ένας παίκτης καταλήξει σε ένα κελί που κατέχεται από ένα πιόνι του αντιπάλου, το πιόνι του αντιπάλου επιστρέφει στην περιοχή έναρξης του.
  6. Οι παίκτες πρέπει να κάνουν ολο τον γυρο του επιτραπέζιου για να καταλήξουν στο κέντρο

Η βάση μας κρατάει τους εξής πίνακες και στοιχεία

Η εφαρμογή απαπτύχθηκε μέχρι το σημείο οπου μπορουν να παιξουν 2 παικτες αντιπαλοι διαλεγοντας οποιο χρωμα θελουν. Οι κινησεις γινονται χειροκινητα.

Συντελεστές

Σωτήρης Χατζηγρηγορίου 2019187 Γιάννης Χαρπαντίδης 2019185

Περιγραφή API

Methods

  1. handleDeletePlayers($Method):

    • Εάν η μέθοδος είναι GET, επιστρέφει κατάλληλο μήνυμα σφάλματος (405 Method Not Allowed).
    • Εάν η μέθοδος είναι POST, επαναφέρει τους παίκτες στην αρχική κατάσταση.
  2. handleRoll($Method):

    • Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση rollDice().
  3. handleRollR($piece, $Method):

    • Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση rollDiceForPiece($piece).
  4. handleHighlight($piece, $Method):

    • Εάν η μέθοδος είναι GET, εκτελεί αποθηκευμένη διαδικασία MySQL (highlight{$piece}()) και επιστρέφει τα αποτελέσματα σε μορφή JSON.
  5. handleLosers($Method):

    • Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση returnLostUsers().
  6. handleRedWin($method), handleBlackWin($method), handleYellowWin($method), handleGreenWin($method):

    • Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση redWin(), blackWin(), yellowWin(), greenWin() αντίστοιχα.
  7. handleBoard($Method):

    • Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση displayBoard().
    • Εάν η μέθοδος είναι POST, καλεί τις συναρτήσεις resetBoard() και resetStatus().
  8. handlePiece($Method, $X, $Y, $Input):

    • Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση showPiece($X, $Y).
    • Εάν η μέθοδος είναι PUT, καλεί τη συνάρτηση movePiece($X, $Y, $Input['x'], $Input['y'], $Input['token']).
  9. displayUser($b):

    • Εκτελεί ερώτημα SQL για την επιστροφή πληροφοριών χρήστη με βάση το χρώμα του πιονιού. Επιστρέφει τα αποτελέσματα σε μορφή JSON.
  10. setUser($b, $input):

  • Ελέγχει αν υπάρχει όνομα χρήστη στην είσοδο και εάν ο παίκτης με το συγκεκριμένο χρώμα δεν έχει ήδη οριστεί.
  • Εάν ισχύουν οι προϋποθέσεις, ενημερώνει τη βάση δεδομένων και επιστρέφει τα αποτελέσματα σε μορφή JSON.
  1. handlePlayer($Method, $P, $Input):

    • Δρομολογεί την εκτέλεση συναρτήσεων για τους παίκτες με βάση το χρώμα τους.
  2. handleStatus($Method):

    • Εάν η μέθοδος είναι GET, καλεί τη συνάρτηση showPlayStatus().

Board

Ανάγνωση Board

GET /board/

Επιστρέφει το Board.

Αρχικοποίηση Board

POST /board/

Αρχικοποιεί το Board, δηλαδή το παιχνίδι. Γίνονται reset τα πάντα σε σχέση με το παιχνίδι. Επιστρέφει το Board.

Piece

Ανάγνωση Θέσης/Πιονιού

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. Περιλαμβάνει το χρώμα του πιονιού και τον τύπο

Player

Ανάγνωση στοιχείων παίκτη

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 πρέπει να το χρησιμοποιεί ο παίκτης καθόλη τη διάρκεια του παιχνιδιού.

Status

Ανάγνωση κατάστασης παιχνιδιού

GET /status/

Επιστρέφει το στοιχείο Game_status.

Entities

Board


Το 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 ο χρήστης, ή δεν έχει ξεκινήσει το παιχνίδι ή αν δεν υπάρχουν κινήσεις, τότε το πεδίο δεν υπάρχει.

Players


O κάθε παίκτης έχει τα παρακάτω στοιχεία:

Attribute Description Values
username Όνομα παίκτη String
piece_color To χρώμα που παίζει ο παίκτης 'B' ή 'R' ή 'G' ή 'Υ'
token To κρυφό token του παίκτη. Επιστρέφεται μόνο τη στιγμή της εισόδου του παίκτη στο παιχνίδι HEX

Game_status


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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •