Skip to content

iee-ihu-gr-course1941/ADISE24_22065

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 

Repository files navigation

ADISE24_22065

#Μέλη ομάδας

-Βουράκη Μαριάννα ΑΜ:2019/022

-Καρυπίδης Θεόδωρος ΑΜ:2019/065

ΣΥΝΔΕΣΜΟΣ ΠΑΙΧΝΙΔΙΟΥ: https://red-mosquito-138272.hostingersite.com/

Ataxx - Κανόνες Παιχνιδιού

Το **Ataxx** είναι ένα παιχνίδι στρατηγικής για δύο παίκτες που παίζεται σε πλέγμα 7x7. Είναι εύκολο να το μάθει κανείς, αλλά απαιτεί στρατηγική για να κυριαρχήσει.

Σκοπός του Παιχνιδιού

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

Διάταξη και Έναρξη

  • Το παιχνίδι παίζεται σε ένα πλέγμα 7x7.
  • Κάθε παίκτης ξεκινά με δύο κομμάτια που τοποθετούνται στις διαγώνια αντίθετες γωνίες του πλέγματος.
  • Οι παίκτες παίζουν εναλλάξ.

Κινήσεις

1. Αναπαραγωγή (Replication)

Ένα κομμάτι μπορεί να "αναπαραχθεί" σε ένα κενό τετράγωνο που βρίσκεται δίπλα του (σε απόσταση μίας θέσης). Όταν γίνει η κίνηση, δημιουργείται ένα νέο κομμάτι του παίκτη στο τετράγωνο αυτό.

2. Άλμα (Jump)

Ένα κομμάτι μπορεί να κινηθεί σε ένα κενό τετράγωνο που βρίσκεται σε απόσταση δύο θέσεων (οριζόντια, κάθετα ή διαγώνια). Με αυτή την κίνηση, το αρχικό κομμάτι μεταφέρεται στη νέα θέση, χωρίς να δημιουργείται νέο κομμάτι.

Μετατροπή (Capture)

Όταν ένα κομμάτι μετακινείται (είτε μέσω αναπαραγωγής είτε μέσω άλματος), όλα τα αντίπαλα κομμάτια που βρίσκονται σε γειτονικά τετράγωνα μετατρέπονται σε κομμάτια του παίκτη που έκανε την κίνηση.

Τέλος Παιχνιδιού

Το παιχνίδι τελειώνει όταν:

  • Δεν υπάρχουν περισσότερες δυνατές κινήσεις για τους παίκτες.
  • Το πλέγμα γεμίζει.

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

Ειδικοί Κανόνες

  • Σε ορισμένες παραλλαγές, μπορεί να υπάρχουν εμπόδια ή τετράγωνα που δεν μπορούν να καταληφθούν. Αυτά τα εμπόδια εν επηρεάζονται από καμία κίνηση.

Επεξηγηση του API

My Project

Περιεχόμενα public_html>api>


login.php

Αυτό το αρχείο χειρίζεται τη λειτουργία σύνδεσης χρηστών στο σύστημα.

  • Σκοπός:

    • Συνδέει με τη βάση δεδομένων.
    • Αποθηκεύει το όνομα χρήστη στη συνεδρία και στη βάση δεδομένων.
    • Επιστρέφει κατάλληλες JSON απαντήσεις.
  • Βασικές λειτουργίες:

    • Έλεγχος για τη μέθοδο αιτήματος (POST).
    • Έλεγχος εγκυρότητας δεδομένων εισόδου.
    • Εκτέλεση SQL INSERT INTO users για αποθήκευση ονόματος χρήστη.
    • Επιστροφή απαντήσεων JSON για επιτυχία ή σφάλματα.
  • Σημειώσεις:

    • Χρήση του $_SESSION για διαχείριση συνεδριών.

create_room.php

Το αρχείο create_room.php είναι υπεύθυνο για τη δημιουργία δωματίων παιχνιδιού.

Λειτουργίες:

  1. Έλεγχος σύνδεσης στη βάση δεδομένων:

    • Ελέγχει αν υπάρχει ενεργή σύνδεση με τη βάση δεδομένων και επιστρέφει σφάλμα σε περίπτωση αποτυχίας.
  2. Έλεγχος σύνδεσης χρήστη:

    • Βεβαιώνεται ότι ο χρήστης είναι συνδεδεμένος μέσω $_SESSION.
  3. Έλεγχος αν ο χρήστης έχει ήδη δωμάτιο:

    • Αναζητά υπάρχον δωμάτιο με την κατάσταση in_progress για τον χρήστη.
    • Εάν υπάρχει, επιστρέφει το room_id στον πελάτη.
  4. Δημιουργία νέου δωματίου:

    • Δημιουργεί έναν μοναδικό κωδικό δωματίου χρησιμοποιώντας τη μέθοδο generateRoomCode.
    • Αρχικοποιεί την κατάσταση του πίνακα με τη μέθοδο initializeBoard.
    • Εισάγει το νέο δωμάτιο στη βάση δεδομένων.

Σημαντικές Συναρτήσεις:

  • initializeBoard():

    • Δημιουργεί την αρχική κατάσταση του πίνακα του παιχνιδιού (7x7 πλέγμα με αρχικές θέσεις παικτών).
    • Επιστρέφει έναν πίνακα JSON.
  • generateRoomCode():

    • Παράγει έναν μοναδικό κωδικό δωματίου 5 χαρακτήρων (αλφαριθμητικό).

Απαντήσεις:

  • Επιτυχία: Επιστρέφει JSON μήνυμα όπως {'message': 'Room created.'}.
  • Σφάλματα:
    • 500: Σφάλμα σύνδεσης στη βάση δεδομένων.
    • 401: Ο χρήστης δεν είναι συνδεδεμένος.

join_room.php

Το αρχείο join_room.php χρησιμοποιείται για την ένταξη ενός χρήστη σε ένα υπάρχον δωμάτιο παιχνιδιού.

Λειτουργίες:

  1. Έλεγχος σύνδεσης στη βάση δεδομένων:

    • Ελέγχει αν υπάρχει ενεργή σύνδεση με τη βάση δεδομένων και επιστρέφει σφάλμα σε περίπτωση αποτυχίας.
  2. Έλεγχος σύνδεσης χρήστη:

    • Βεβαιώνεται ότι ο χρήστης είναι συνδεδεμένος μέσω $_SESSION. Εάν όχι, επιστρέφει σφάλμα HTTP 401 (User not logged in).
  3. Έλεγχος παραμέτρων αιτήματος:

    • Ελέγχει αν έχει σταλεί το room_id μέσω της μεθόδου POST. Εάν λείπει, επιστρέφει μήνυμα σφάλματος (Winner not specified).
  4. Ενημέρωση της κατάστασης του δωματίου:

    • Ενημερώνει το πεδίο player_two στον πίνακα rooms_game_state για να προσθέσει τον δεύτερο παίκτη στο δωμάτιο.

Απαντήσεις:

  • Επιτυχία:
    • Επιστρέφει JSON μήνυμα όπως {'message': 'Joined room.'}.
  • Σφάλματα:
    • 500: Σφάλμα σύνδεσης στη βάση δεδομένων.
    • 401: Ο χρήστης δεν είναι συνδεδεμένος.
    • Παράλειψη room_id: Επιστρέφει {'error': 'Winner not specified.'}.

get_room.php

Το αρχείο `get_room.php` χρησιμοποιείται για την ανάκτηση δεδομένων σχετικά με το δωμάτιο παιχνιδιού στο οποίο έχει ενταχθεί ο χρήστης.

Λειτουργίες:

  1. Έλεγχος σύνδεσης στη βάση δεδομένων:

    • Ελέγχει αν υπάρχει ενεργή σύνδεση με τη βάση δεδομένων και επιστρέφει σφάλμα σε περίπτωση αποτυχίας.
  2. Έλεγχος σύνδεσης χρήστη:

    • Βεβαιώνεται ότι ο χρήστης είναι συνδεδεμένος μέσω $_SESSION. Εάν όχι, επιστρέφει σφάλμα HTTP 401 (User not logged in).
  3. Έλεγχος δωματίου:

    • Ελέγχει αν ο χρήστης έχει ενταχθεί σε ένα δωμάτιο. Εάν το roomid λείπει από τη συνεδρία, επιστρέφει σφάλμα HTTP 401 (Room not joined).
  4. Ανάκτηση δεδομένων δωματίου:

    • Εκτελεί SQL ερώτημα για να ανακτήσει όλα τα δεδομένα από τον πίνακα rooms_game_state για το δωμάτιο με το συγκεκριμένο room_id.
  5. Απάντηση:

    • Επιστρέφει τα δεδομένα του δωματίου και το όνομα του χρήστη σε JSON μορφή.

Απαντήσεις:

  • Επιτυχία:
    • Επιστρέφει JSON μήνυμα όπως:
      {
        "success": true,
        "room": { ...room data... },
        "username": "player_name"
      }
  • Σφάλματα:
    • 500: Σφάλμα σύνδεσης στη βάση δεδομένων.
    • 401: Ο χρήστης δεν είναι συνδεδεμένος ή δεν έχει ενταχθεί σε δωμάτιο.
    • Εάν το δωμάτιο δεν υπάρχει, επιστρέφει μήνυμα: {'message': 'Room does not exists.'}.

getusername.php

Το αρχείο getusername.php χρησιμοποιείται για την ανάκτηση του ονόματος χρήστη από τη συνεδρία.

Λειτουργίες:

  1. Έλεγχος μεθόδου αιτήματος:

    • Ελέγχει αν το αίτημα είναι GET. Εάν όχι, επιστρέφει σφάλμα HTTP 405 (Invalid request method).
  2. Έλεγχος ύπαρξης ονόματος χρήστη:

    • Ελέγχει αν το username υπάρχει στη συνεδρία. Εάν όχι, επιστρέφει μήνυμα σφάλματος: {'error': 'No username found.'}.
  3. Ανάκτηση ονόματος χρήστη:

    • Παίρνει το όνομα χρήστη από τη συνεδρία ($_SESSION['username']).
  4. Απάντηση:

    • Επιστρέφει το όνομα χρήστη σε JSON μορφή:
      {
        "username": "player_name"
      }

Απαντήσεις:

  • Επιτυχία:
    • Επιστρέφει το όνομα χρήστη από τη συνεδρία σε JSON μορφή.
  • Σφάλματα:
    • Εάν το username δεν είναι αποθηκευμένο στη συνεδρία:
      {
        "error": "No username found."
      }
    • Εάν η μέθοδος δεν είναι GET, επιστρέφει σφάλμα HTTP 405 με μήνυμα: {'error': 'Invalid request method.'}.

update_board.php

Το αρχείο `update_board.php` χρησιμοποιείται για την ενημέρωση της κατάστασης του πίνακα παιχνιδιού (board state) σε ένα συγκεκριμένο δωμάτιο.

Λειτουργίες:

  1. Έλεγχος σύνδεσης στη βάση δεδομένων:

    • Ελέγχει αν υπάρχει ενεργή σύνδεση με τη βάση δεδομένων και επιστρέφει σφάλμα σε περίπτωση αποτυχίας.
  2. Έλεγχος σύνδεσης χρήστη:

    • Βεβαιώνεται ότι ο χρήστης είναι συνδεδεμένος μέσω $_SESSION. Εάν όχι, επιστρέφει σφάλμα HTTP 401 (User not logged in).
  3. Έλεγχος αν ο χρήστης είναι σε δωμάτιο:

    • Ελέγχει αν ο χρήστης έχει ενταχθεί σε ένα δωμάτιο μέσω της μεταβλητής συνεδρίας roomid.
  4. Αποδοχή δεδομένων για ενημέρωση:

    • Παίρνει τα παρακάτω δεδομένα από το αίτημα POST:
      • newboard: Η νέα κατάσταση του πίνακα (board state).
      • current_turn: Ο παίκτης που έχει σειρά.
      • status: Η τρέχουσα κατάσταση του παιχνιδιού.
  5. Ενημέρωση της βάσης δεδομένων:

    • Ενημερώνει τα πεδία board_state, current_turn, και status του συγκεκριμένου δωματίου στον πίνακα rooms_game_state.
  6. Απάντηση:

    • Επιστρέφει JSON μήνυμα επιτυχίας με τα δεδομένα του δωματίου.
---