Περιγραφή Εργασίας
Το ataxx παίζεται σε σε 7x7 πίνακα. Επιτρέπονται οι κινήσεις διαγώνια, οριζόντια και κάθετα μέχρι και 2 κελιά μακριά. Εάν κουνηθεί ένα κελί μακριά τότε μένει το πιόνι στην αρχική θέση και εμφανίζεται ένα στον προορισμό και αν κουνθεί 2 τότε φεύγει απο την αρχή και παεί στον προορισμό. Αν πάει σε κελί που δίπλα έχει πιόνια του αντιπάλου τα μετατρέπει σε φιλικά.
Στην αρχή εμφανίζεται ο πίνακας με 4 πιόνια, 2 λευκά και 2 μαύρα σε απέναντι γωνίες.
Η βάση μας κρατάει τους εξής πίνακες και στοιχεία:
α. Ο πίνακας ataxx_board: Αποθηκεύει 3 στοιχεία: 1. row 2. column 3. content Τα πρώτα δυο αφορούν τις συντεταγμένες τοποθέτησης των πιονιών του κάθε παίκτη. Το τρίτο στοιχείο δίνει την πληροφορία για το εάν σε κάθε κελί υπάρχει τοποθετημένο κάποιο πιόνι. Μπορεί να πάρει την τιμή white, black ή NULL.
β. Ο πίνακας paiktes: Αποθηκεύει 4 στοιχεία: 1. idPaikth 2. etiketaPaikth 3. usernamePaikth 4. passwordPaikth
Το πρώτο αφορά το τυχαίο id που θα έχει ο κάθε παίκτης. Χρησιμοποιείται για την υλοποίηση της λογικής του session.
Το δεύτερο αφορά στον τρόπο διαχωρισμού των δυο παικτών. Μπορεί να πάρει την τιμή 'white' ή την τιμή 'black'.
Το τρίτο αφορά το όνομα χρήστη του κάθε παίκτη. Χρησιμεύει για την σύνδεση του κάθε χρήστη στην εφαρμογή.
Το τέταρτο αφορά τον κωδικό του κάθε χρήστη. Χρησιμεύει για την σύνδεση του κάθε χρήστη στην εφαρμογή.
γ. Ο πίνακας statuspaixnidiou: Αποθηκεύει 4 στοιχεία: 1. game_status 2. round 3. winner 4. validmove
Το πρώτο αφορά την κατάσταση του παιχνιδιού. Μπορεί να πάρει τις εξής τιμές, 'not active', 'initialized', 'active', 'ended', 'aborted' .
Το δεύτερο αφορά την καταγραφή των γύρων του παιχνιδιού.
Το τρίτο αφορά το ποιος είναι ο νικητής.
Το τέταρτο αφορά τον έλεγχο διαθεσιμότητας κίνησης.
Η εφαρμογή καλύπτει τις εξής απαιτήσεις:
Υλοποίηση WebAPI.
Αρχικοποίηση σύνδεσης-authentication.
Έλεγχος κανόνων παιχνιδιού.
Αναγνώριση σειράς παιξιάς.
Αναγνώρηση Deadlock.
Χρήση json για τα δεδομένα.
Αποθήκευση της κατάστασης του παιχνιδιού πλήρως σε mysql.
Περιγραφή API
Εγγραφή παικτών
POST /signUp/
Πραγματοποίηση της εγγραφής των παικτών.
Json Data:
playerTag: Το χρώμα του χρήστη
username: To όνομα χρήστη yes
password: Ο κωδικός yes
passwordRepeat: Επανάληψη κωδικού για επιβεβαίωση yes
token: Το 16αδικο token κάθε παίκτη
Σύνδεση παικτών
POST PHP/logIn/
Πραγματοποιήση της σύνδεσης των παικτών στην εφαρμογή
Json Data:
username: To όνομα χρήστη
password: Ο κωδικός
token: Το 16αδικο token κάθε παίκτη
Reset των πινάκων
POST PHP/resetBoard
Χρησιμεύει για την αρχικοποίηση των πινάκων και των δυο παικτών. Καλείται όταν οι παίκτες επιλέξουν το κουμπί "Έναρξη παιχνιδιού"
Reset του status του παιχνιδιού
POST PHP/resetStatus
Χρησιμεύει στην επαναφορά της αρχικής κατάστασης του παιχνιδιού
Ενημέρωση του πίνακα όταν πραγματοποιείται κίνηση
POST PHP/updateStatusBoard
Json Data:
rowst: Η γραμμή εκκίνησης
columnst: Η στήλη εκκίνησης
rowdes: Η γραμμή τερματισμού
columndes: Η στήλη τερματισμού
tag: Το χρώμα του πιονιού που θα κινηθεί
Ενημέρωση ύπαρξης διαθέσιμων κινήσεων
POST PHP/updatevalidmove
Όταν δεν υπάρχουν διαθέσημες κινήσεις για έναν απο τουσ 2 παίκτες παίρνει την μεταβλητή validmove και της δίνει την τιμή 'no'
Αύξηση των γύρων του παιχνιδιού
POST PHP/incround
Αυξάνει τον γύρο κατά 1 όταν τελειώνει ο γύρος
Μετατροπή Tag σε ετικέτα Παίκτη
POST PHP/getTag
Λαμβάνει το μοναδικό Tag του παίκτη και επιστρέφει το χρώμα του
Json Data:
token: Το 16αδικο token του παίκτη
Λήψη γύρου
POST PHP/getRound
Λαμβάνει την γύρα στην οποία βρίσκεται το παιχνίδι
Λήψη και δημιουργεία περιεχομένου κελιών
GET PHP/getContent
Λαμβάνει το περιεχόμενο του πίνακα απ την βάση. Μπορεί να έχει τις τιμές white, black και null
Json Data:
boardState: Αποθηκεύει το περιεχόμενο του κάθε κελιού
sql: Αποθηκεύει το sql query
result: Αποθηκεύει το αποτέλεσμα του query
Ενημέρωση του status του παιχνιδιού
POST PHP/gameStatus
Χρησιμεύει για την ενεμέρωση του status του παιχνιδιού. Στην περίπτωση που το result έχει τιμές -2 εώς 1 το game_status έχει τιμή 'not_active'. Στην περίπτωση που η τιμή του result είναι ίση με 1 παίρνει την τιμή 'initialized'. Στην περίπτωση που το result είναι ίσο με 2 τότε το game_status παίρνει την τιμή 'active'. Στην συνέχεια μετά από κάθε κίνηση των παικτών η τιμή του result αυξάνεται κατά ένα. Κάθε φορά ελέγχεται ποιος απο τους 2 παίκτες είναι ο νικητής. Στην περίπτωση που νικήσει ένας εκ των δύο παικτών το end_of_game παίρνει την τιμή true και το winner τo χρώμα του νικητή.
Json Data:
id: Το 16αδικο token κάθε παίκτη
end_of_game: Μεταβλητή η οποια δείχνει εάν τελείωσε το παιχνίδι ή οχι
result: Δείχνει σε ποιον γύρο βρίσκεται το παιχνίδι
winner: Δείχνει ποιος είναι ο νικητής του παιχνιδιού
Link παιχνιδιού:
https://users.it.teithe.gr/~iee2020060/ADISE24_mk_mk/
Λογαριασμοί:
Username: Manos
Password: 123
Username: Markos
Password: 123