Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Latest commit

 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ADISE19_MSGSUNO

Table of Contents

Page

Μπορείτε να κατεβάσετε τοπικά ή να επισκευτείτε την σελίδα: https://users.it.teithe.gr/~it174890/ADISE19_MSGSUNO/

Εγκατάσταση

Απαιτήσεις

  • Apache2
  • Mysql Server
  • php

Οδηγίες Εγκατάστασης

  • Κάντε clone το project σε κάποιον φάκελο
    $ git clone https://github.com/iee-ihu-gr-course1941/ADISE19_MSGSUNO.git

  • Βεβαιωθείτε ότι ο φάκελος είναι προσβάσιμος από τον Apache Server. πιθανόν να χρειαστεί να καθορίσετε τις παρακάτω ρυθμίσεις.

  • Θα πρέπει να δημιουργήσετε στην Mysql την βάση με όνομα 'uno' και να φορτώσετε σε αυτήν την βάση τα δεδομένα από το αρχείο db/uno.sql

  • Θα πρέπει να φτιάξετε το αρχείο lib/local_config.php το οποίο να περιέχει:

    <?php
	define( 'DB_PWD', 'κωδικός' );
	define( 'USERNAME', 'όνομα χρήστη' );
    ?>

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

Το uno παίζεται ως εξής: Μοιράζονται στον κάθε παίκτη από 7 φύλλα και ένα κεντρικό. Στόχος του παιχνιδιού είναι να ρίξεις πρώτος τα φύλλα σου πρωτού σε προλάβει ο αντίπαλος.

Οι κανόνες είναι οι εξής:

  • 0-9 Cards: Μπορούν να παιχτούν είτε σε ίδιο χρώμα φύλλο είτε σε ίδιο σύμβολο.
  • Action Cards (Reverse/Skip): Μπορούν να παιχτούν με τον ίδιο τρόπο με τα απλά φύλλα με την διαφορά ότι ο αντίπαλος χάνει την σειρά του και ξανα παίζεις. (Κανόνας για 2 παίκτες)
  • Action Cards (Draw Two): Μπορούν να παιχτούν με τον ίδιο τρόπο με τα απλά φύλλα με την διαφορά ότι ο αντίπαλος πρέπει είτε να ρίξει draw two card οποιουδήποτε χρώματος ή wild draw four card είτε να πατήσει πάσο και να πάρει αυτόματα τις αντίστοιχες κάρτες και να παραχωρήσει την σειρά του.
  • Wild Cards (Wild Draw Four): Μπορούν να παιχτούν οποιαδήποτε στιγμή στο παιχνίδι και επιλέγεις το χρώμα που θέλεις να ρίξει ο αντίπαλος, καθώς και τον κάνεις να τραβήξει +4 κάρτες εκτός αν έχει draw two card του χρώματος που επέλεξες.
  • Wild Cards (Wild): Μπορούν να παιχτούν οποιαδήποτε στιγμή στο παιχνίδι και επιλέγεις το χρώμα που θέλεις να ρίξει ο αντίπαλος.
  • Uno: Όταν ένας παίκτης είναι έτοιμος να ρίξει ένα φύλλο και να μείνει με ένα πρέπει να πει uno αλλιώς στον επόμενο γύρο θα λάβει αυτόματα 3 κάρτες.
  • Draw: Ένας παίκτης δικαιούται σε κάθε γύρο να τραβήξει μία κάρτα από τον σωρό ακόμα και όταν κάτω υπάρχει draw two card και δεν έχεις την ανάλογη απάντηση.
  • Pass: Για να πατήσει κάποιος παίκτης pass πρέπει να έχει τραβήξει την μία κάρτα από τον σωρό και μετά να αποφασίσει εάν θέλει να παίξει ή όχι.

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

  • deck/remaining_deck(card_id, card_symbol, card_color, card_code)
  • player(player_name, username, uno_status, token, last_action)
  • hand(player_name, card_id)
  • table_deck(table_id, card_code, p_name, wild_card_color)
  • game_status(status, p_turn, draw_counter, plus_counter, result, last_change)

Περισσότερες πληροφορίες για τους πίνακες εδώ

Η εφαρμογή απαπτύχθηκε μέχρι το τέλος πιστεύουμε, πιθανόν να υπάρχουν bugs που δεν έχουν βρεθεί. Προς το παρόν το παιχνίδι παίζεται κανονικά για δύο άτομα υλοποιημένο με τους κανόνες του.

Τρόπος Παιχνιδιού

Για να ξεκινήσει το παιχνίδι πατάμε το Start/Reset button. Στη συνέχεια κάνουμε login με το επιθυμητό username και επιλέγουμε παίκτη. Για την πραγματοποίηση μίας κίνησης γράφουμε στο textbox τον κωδικό της κάρτας (πχ. Reverse μπλε-> RB, Skip κοκκινο-> SR) και να πατήσουμε το Do Move button. Εάν η κάρτα που επιθυμούμε να ρίξουμε είναι wildcard πρέπει να επιλέξουμε και ένα χρώμα (πχ. Wild draw four και χρώμα πράσινο-> 4W G, Wild και χρώμα κίτρινο-> NW Y). Άλλοι συνδυασμοί στο textbox δεν επιτρέπονται και η κίνηση δεν πραγματοποιείται, οπότε πρέπει να επιλέξεις σωστή κίνηση. Στα δεξιά του Do Move μας δείχνει τον παίκτη που έχει σειρά. Για τις λειτουργίες uno, draw, pass υπάρχουν τα αντίστοιχα κουμπιά. Για τα reverse/skip αφού τα ρίξει ένας παίκτης έχει το δικαίωμα να ξανά γράψει στο textbox για νέα κίνηση.

Συντελεστές

Προγραμματιστής 1: georgestinis - mysql-Jquery-PHP API

Προγραμματιστής 2: MariosSkoufitsas - Jquery-PHP API

Περιγραφή API

Methods

Game

Ανάγνωση Παιχνιδιού

GET /game/

Επιστρέφει το Game με τις κάρτες των παικτών και το κεντρικό χαρτί στο τραπέζι.

Αρχικοποίηση Παιχνιδιού

POST /game/

Αρχικοποιεί το παιχνίδι. Γίνονται reset τα πάντα σε σχέση με το παιχνίδι. Και ξανά μοιράζει τα φύλλα. Επιστρέφει το Game.

Card

Πραγματοποίηση κίνησης

PUT /game/card/:card_code/ για απλή κίνηση
PUT /game/card/:card_code/:card_color για κίνηση wildcard

Πραγματοποιεί την κίνηση της κάρτας card_code στο table_card, και αν το card_code είναι wildcard δίνει και το επιλεγμένο χρώμα. Προφανώς ελέγχεται η κίνηση αν είναι νόμιμη καθώς και αν είναι η σειρά του παίκτη να παίξει με βάση της σειρά του παίκτη. Επιστρέφει τα στοιχεία από το Game με τις καινούριες αλλαγές.

Json Data:

Field Description Required
card_code Το φύλλο που θα ρίξουμε yes
card_color Το χρώμα του wildcard no

Draw

Τράβηγμα φύλλου

PUT /game/draw

Παίρνει ένα φύλλο από το deck και το τοποθετεί στον παίκτη που το πάτησε. Ελέγχει εάν δικαιούται να πατήσει draw. Επιστρέφει τα στοιχεία από το Game με τις καινούριες αλλαγές.

Pass

Αδυναμία κίνησης

PUT /game/pass

Ενημερώνει ότι δεν μπορεί να παίξει κάποιο χαρτί. Ελέγχεται αν έχει πατήσει 1 φορά το draw για να ενεργοποιηθέι το pass, επίσης ελέγχει εάν το pass πατήθηκε ως αδυναμία κίνησης έναντι κάποιου +2 ή +4 φύλλου και λαμβάνει τις απαραίτητες κάρτες αυτόματα και παραχωρεί την σειρά του. Επιστρέφει τα στοιχεία από το Game με τις καινούριες αλλαγές.

Uno

Εμφάνιση Uno

GET /game/uno

Επιστρέφει την κατάσταση uno του παίκτη που παίζει.

Δήλωση μίας κάρτας

PUT /game/uno

Αλλάζει την κατάσταση uno ελέγχοντας εάν επιτρέπεται να πατηθεί. Επιστρέφει την κατάσταση uno του παίκτη που παίζει.

Player

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

GET /players/:p

Επιστρέφει τα στοιχεία του παίκτη p ή όλων των παικτών αν παραληφθεί. Το p μπορεί να είναι 'p1' ή 'p2'.

Καθορισμός στοιχείων παίκτη

PUT /players/:p

Json Data:

Field Description Required
username Το username για τον παίκτη p. yes
pname Η σειρά που επέλεξε ο παίκτης p. yes

Επιστρέφει τα στοιχεία του παίκτη p και ένα token. Το token πρέπει να το χρησιμοποιεί ο παίκτης καθόλη τη διάρκεια του παιχνιδιού.

Status

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

GET /status/

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

Entities

Deck


Το deck είναι ένας πίνακας, ο οποίος στο κάθε στοιχείο έχει τα παρακάτω:

Attribute Description Values
card_id H μοναδική τιμή της κάρτας 1..108
card_symbol Το σύμβολο της κάρτας '0','1','2','3','4','5','6','7','8','9','+4','+2','R','S','N'
card_color To χρώμα της κάρτας 'R', 'Y', 'B', 'G', 'W'
card_code Ο συνολικός κωδικός της κάρτας String

Remaining_deck


Το remaining_deck είναι ένας πίνακας με τα εναπομείναντα φύλλα που μένουν στο παιχνίδι, ο οποίος στο κάθε στοιχείο έχει τα παρακάτω:

Attribute Description Values
card_id H μοναδική τιμή της κάρτας 1..108
card_symbol Το σύμβολο της κάρτας '0','1','2','3','4','5','6','7','8','9','+4','+2','R','S','N'
card_color To χρώμα της κάρτας 'R', 'Y', 'B', 'G', 'W'
card_code Ο συνολικός κωδικός της κάρτας String

Players


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

Attribute Description Values
player_name Ποιος παίκτης είναι 'p1', 'p2'
username Όνομα παίκτη String
uno_status Η κατάσταση του uno 'not active', 'active'
token To κρυφό token του παίκτη. Επιστρέφεται μόνο τη στιγμή της εισόδου του παίκτη στο παιχνίδι HEX
last_action Τελευταία αλλαγή/ενέργεια του παίκτη timestamp

Hand


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

Attribute Description Values
player_name Ποιος παίκτης είναι 'p1', 'p2'
card_id H μοναδική τιμή της κάρτας 1..108

Table_deck


Το φύλλο του τραπεζιού έχει τα παρακάτω στοιχεία:

Attribute Description Values
table_id Μοναδικός αύξων αριθμός 1...
card_code Ο συνολικός κωδικός της κάρτας String
p_name Ποιος παίκτης είναι 'p1', 'p2'
wild_card_color Το χρώμα που θα πάρει η wildcard 'R', 'Y', 'B', 'G'

Game_status


H κατάσταση παιχνιδιού έχει τα παρακάτω στοιχεία:

Attribute Description Values
status Κατάσταση 'not active', 'initialized', 'started', 'ended', 'aborded'
p_turn Ποιανού παίκτη είναι η σειρά που παίζει 'B','W',null
draw_counter Μετρητής τραβήγματος φύλλου 0, 1
plus_counter Μετρητής +2/+4 φύλλου 0, 2, 4, ...
result Ο παίκτης που κέρδισε 'p1','p2',null
last_change Τελευταία αλλαγή/ενέργεια στην κατάσταση του παιχνιδιού timestamp

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages