background image

5.7 Παίζοντας δικτυακά την εφαρμογή 

[116] 

 

ελέγχεται από το διακομιστή και αν ο πρώτος παίκτης απαντήσει σωστά, 
αυξάνεται  το  σκορ  του  κατά  ένα  βαθμό.  Ταυτόχρονα  ενημερώνεται  η 
κεντρική ετικέτα ότι κάποιος παίκτης απάντησε σωστά και εμφανίζεται η 
επόμενη  ερώτηση.  Αν  ο  πρώτος  παίκτης  δεν  απαντήσει  σωστά  τότε 
ενημερώνεται η κεντρική ετικέτα με το μήνυμα “Another player choose”. 
Αν τέλος δεν απαντήσει κανείς σωστά εμφανίζεται η επόμενη ερώτηση. 
Για  να  λειτουργήσει  σωστά  το  παιχνίδι  ελέγχουμε  κάθε  επιλογή  των 
παικτών από το “peerID” τους. Έτσι κάθε παίκτης έχει το δικαίωμα μόνο 
μιας επιλογής απάντησης. 

Τέλος,  όπως  και  στην  απλή  μορφή  της  εφαρμογής,  το  παιχνίδι 

τελειώνει  όταν  περάσει  ο  επιθυμητός  χρόνος  ή  όταν  τελειώσουν  οι 
ερωτήσεις  που  έθεσε  ο  διαχειριστής.  Τότε  οι  χρήστες  περνάνε  στην 
κατάσταση  “Game  Over”.  Η  κατάσταση  αυτή  αποτελείται  από  μια 
μέθοδο  τύπου  -(void)  που  ενημερώνει  όλους  του  πελάτες  με  το  όνομα 
του νικητή. Επειδή δεν χρειάζεται επιπλέον δεδομένα, δημιουργούμε ένα 
νέο τύπο πακέτου με το όνομα “PacketTypeGameOver” και καθαρίζουμε 
την οθόνη όλων των παικτών. 

 

Ακόμη  υπάρχει  και  το  κουμπί  εξόδου  για  το  διαχειριστή  και  τους 

πελάτες.  Αν  κάποιος  πελάτης  επιλέξει  να  εγκαταλείψει  το  παιχνίδι, 
περνάει  στην  κατάσταση  “Quitting”  και  το  όνομα  του  δεν  εμφανίζεται 
πλέον  στον  controller  του  παιχνιδιού.  Δημιουργούμε  μια  καινούργια 
μέθοδο με το όνομα clientDidDisconnect στην κλάση “Game”, κατά την 
οποία  αφαιρούμε  το  αντικείμενο  του  παίκτη  και  το  όνομα  του  από  το 
λεξικό.  Δημιουργούμε  ένα  νέο  πακέτο  με  το  όνομα  “Packet-
OtherClientQuit”  .  Στην  ίδια  μέθοδο,  στέλνουμε  αυτό  το  πακέτο  στους 
υπόλοιπους πελάτες για να τους ενημερώσουμε ότι κάποιος εγκατέλειψε 
το παιχνίδι όπως φαίνεται στον παρακάτω κώδικα.