background image

5.3 Υλοποιώντας το δικτυακό παιχνίδι 

[105] 

 

να  στέλνει  μηνύματα  προς  όλους  τους  διαθέσιμους  πελάτες  για  να 
ετοιμαστούν.  Τα  μηνύματα  αυτά  είναι  πακέτα  δεδομένων  που  “πετάνε” 
μέσω του δικτύου Bluetooth ή Wi-Fi των συσκευών. 

Τα  πακέτα  δικτύου  που  λαμβάνονται  στην  Objective  C, 

διαχειρίζονται  από  ένα  αντικείμενο  που  ονομάζεται  “χειριστής 
λαμβανόντων πακέτων” (data receive handler). Ο διακομιστής πρέπει να 
στείλει  ένα  μεγάλο  όγκο  μηνυμάτων  στους  πελάτες  πριν  ξεκινήσει  το 
παιχνίδι,  αλλά  για  να  μην  ορίσουμε  ως  “data  receive  handler”  τον 
controller του πελάτη, δημιουργούμε μια νέα κλάση με το όνομα “Game” 
τύπου “NSObject”. Αυτή θα είναι η κλάση που διαχειρίζεται τα πακέτα 
του “GKSession”, καθώς και τη λογική του παιχνιδιού. 

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

πελάτη  σε  “Συνδεδεμένος”  και  ενημερώνουμε  το  διακομιστή  με  το 
“peerID” του πελάτη. 

 

 Επίσης  δημιουργούμε  ένα  πακέτο  δεδομένων,  το  οποίο  αφορά  το 

όνομα που δηλώνει ο πελάτης καθώς και το “peerID” και ενημερώνουμε 
τον  κεντρικό  controller  ότι  ο  πελάτης  είναι  έτοιμος  να  ξεκινήσει  το 
παιχνίδι. 

 

Δημιουργούμε μια μέθοδο τύπου –(void) στον κεντρικό controller η 

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