1. Εισαγωγή

Στόχος του παρόντος είναι η παρουσίαση του εργαλείου σχεδίασης στρατηγικής για το παιχνίδι Pacman με πραγματικά ρομπότ, τα οποία δημιουργήθηκαν από την ομάδα ρομποτικής Robotics 4 All και προπτυχιακούς φοιτητές του τμήματος Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης.

Το εργαλείο επιτρέπει σε οποιονδήποτε επιθυμεί να παίξει το θρυλικό παιχνίδι Pacman στη μοντέρνα ρομποτική εκδοχή του, να επικεντρωθεί στη στρατηγική του τόσο για το ρόλο του Pacman όσο και για το ρόλο του φαντάσματος. Λόγω του τρόπου δημιουργίας του δεν απαιτούνται γνώσεις Ρομποτικής ή Μηχανικής Λογισμικού παρά μόνο χρήση λογικής, καθώς η επαλήθευση ορθότητας των γραφικών εφαρμογών και η μετατροπή τους σε εκτελέσιμο κώδικα είναι αυτόματη. Ακολούθως παρουσιάζονται οι κανόνες της παρούσας έκδοσης του παιχνιδιού, η τεκμηρίωση της γραφικής γλώσσας σχεδίασης στρατηγικής μέσω παραδειγμάτων και ο κατάλογος επεξήγησης σφαλμάτων που εμφανίζονται στον χρήστη κατά την επαλήθευση ορθότητας της εφαρμογής του από το παρεχόμενο εργαλείο. Στο τέλος του παρόντος ο αναγνώστης μπορεί να βρει χρήσιμα tips χρήσης του εργαλείου.

2. Κανόνες Παιχνιδιού

Προκειμένου να διεξαχθεί ένας αγώνας ανάμεσα σε δύο παίκτες, απαιτείται από τον καθένα μία στρατηγική για τον Pacman και μία για το φάντασμα. Συνεπώς κάθε αγώνας αποτελείται από δύο γύρους, σε κάθε έναν από τους οποίους οι ρόλοι των παικτών εναλλάσσονται προκειμένου το παιχνίδι να είναι δίκαιο. Το παιχνίδι διεξάγεται σε μία πίστα όπως η ακολούθως απεικονιζόμενη, είτε σε περιβάλλον προσομοίωσης είτε σε φυσική πίστα, η οποία αποτελείται από ένα σύνολο τυχαία διασυνδεδεμένων κόμβων.

Σε κάθε γύρο του παιχνιδιού τόσο ο Pacman όσο και το φάντασμα ξεκινούν για λόγους δικαιοσύνης από τον ίδιο κόμβο και έχουν πάντοτε τον ίδιο προσανατολισμό (κατεύθυνση του απεικονιζόμενου μαύρου βέλους). Τόσο ο Pacman όσο και το φάντασμα μπορούν να κάνουν δύο ειδών απλές κινήσεις. Αφενός μπορούν να μετακινηθούν από έναν κόμβο σε ένα γειτονικό, αφετέρου μπορούν να κάνουν μια περιστροφή στον κόμβο που βρίσκονται την εκάστοτε στιγμή είτε προς τα αριστερά είτε προς τα δεξιά. Προκειμένου να μετακινηθεί ένας παίχτης από έναν κόμβο σε ένα γειτονικό, πρέπει οι δύο κόμβοι να συνδέονται με μια γραμμή και ο προσανατολισμός του παίχτη (μαύρο βέλος) να δείχνει προς τον επιθυμητό κόμβο.

Σε κάποιους από τους κόμβους της πίστας δύναται να υπάρχουν bonus ή πόντοι. Συγκεκριμένα, σε 10 κόμβους της πίστας υπάρχουν κάρτες πόντων (χρωματιστά σύμβολα με κερασάκια) κάθε μία από τις οποίες περιέχει ένα σύνολο από πόντους. Κάποιες κάρτες πόντων έχουν 200 πόντους, κάκποιες 300 πόντους και μία 500. Το σύνολο των πόντων στην πίστα σε κάθε γύρο είναι 2400. Πόντους μπορεί να συλλέγει μόνο ο Pacman. Προκειμένου ο Pacman να συλλέξει πόντους, πρέπει να βρεθεί πάνω σε ένα κόμβο στον οποίο βρίσκεται μία κάρτα πόντων. Κάθε φορά που μία κάρτα πόντων συλλέγεται από τον Pacman αφαιρείται από την πίστα και απομένει ένας απλός κόμβος.

Από την άλλη, κάθε bonus, το οποίο απεικονίζεται με μωβ χρώμα, αντιστοιχεί σε ένα bonus πόντο. Οι bonus πόντοι συλλέγονται όπως και οι πόντοι, καθώς ένα παίκτης μετακινείται πάνω στον κόμβο που υπάρχει bonus πόντος, ενώ και πάλι μετά τη συλλογή του ο κόμβος μετατρέπεται σε απλό κόμβο. Καθώς κάθε παίκτης συλλέγει bonus πόντους, μπορεί να τους χρησιμοποιήσει κατά το δοκούν και ανά πάσα στιγμή προκειμένου να επωφεληθεί στο πλαίσιο του εξελισσόμενου γύρου με έναν από τους ακόλουθους τρόπους:

  1. Ακινητοποίηση αντιπάλου: εφόσον ένας παίκτης (είτε ο Pacman είτε το φάντασμα) χρησιμοποιήσει bonus πόντους προκειμένου να ακινητοποιήσει τον αντίπαλο, οι πόντοι που χρησιμοποίησε αφαιρούνται από τους διαθέσιμους bonus πόντους του και ο αντίπαλος παραμένει ακινητοποιημένος για ένα χρονικό διάστημα. Το χρονικό διάστημα ακινητοποίησης του είναι ανάλογο του αριθμού των χρησιμοποιούμενων bonus πόντων. Με τη χρήση ενός πόντου bonus ο αντίπαλος ακινητοποιείται για χρονικό διάστημα που αντιστοιχεί περίπου σε 4 απλές κινήσεις (μετακίνηση από κόμβο σε κόμβο ή περιστροφή στον κόμβο). Με χρήση κάθε επιπλέον bonus πόντου αυξάνεται αντίστοιχα το διάστημα ακινητοποίησης ώστε να αντιστοιχεί σε 8 απλές κινήσεις, 12, 16 κ.τ.λ. Ο μέγιστος αριθμός bonus πόντων που μπορεί να χρησιμοποιηθεί σε μία κίνηση παίκτη, είναι 5 και αντιστοιχούν σε 20 απλές κινήσεις. Πιθανώς εναπομείναντες bonus πόντοι δύνανται να χρησιμοποιηθούν σε επόμενη κίνηση του παίκτη.
  2. Πολλαπλασιασμό πόντων: ο Pacman μπορεί να αξιοποιήσει bonus πόντους που έχει συλλέξει για να πολλαπλασιάσει τους πόντους που έχει μια δεδομένη χρονική στιγμή. Σε μία κίνηση μπορούν να χρησιμοποιηθούν 2, 3, 4 ή 5 bonus πόντοι για τον ανάλογο πολλαπλασιαμό πόντων. Για παράδειγμα εάν μια δεδομένη χρονική στιγμή ο Pacman έχει 1000 πόντους και χρησιμοποιήσει 2 bonus πόντους για πολλαπλασιασμό, θα έχει 2000 πόντους, για 3 θα έχει 3000 πόντους κ.τ.λ. Πιθανώς εναπομείναντες bonus πόντοι δύνανται να χρησιμοποιηθούν σε επόμενη κίνηση του παίκτη.
  3. Τερματισμό παιχνιδιού: εφόσον ένας παίκτης (είτε ο Pacman είτε το φάντασμα) έχει μαζέψει τουλάχιστον 6 bonus πόντους, μπορεί να προκαλέσει τον άμεσο τερματισμό του παιχνιδιού. Είτε προκαλέσει τον τερματισμό του παιχνιδιού ο Pacman είτε το φάντασμα το αποτέλεσμα είναι το ίδιο. Ο γύρος τελειώνει και ο Pacman διατηρεί όσους πόντους είχε συλλέξει ενώ το φάντασμα λαμβάνει το 25% των πόντων που θα λάμβανε αν έπιανε τον Pacman εκείνη τη στιγμή (βλέπε συνθήκες τερματισμού).

Συνθήκες Τερματισμού ενός γύρου

Προκειμένου να ολοκληρωθεί ένας γύρος παιχνιδιού, πρέπει να συμβεί ένα από τα ακόλουθα:

  1. Συλλογή όλων των πόντων: αν ο Pacman συλλέξει όλους τους διαθέσιμους πόντους της πίστας, οι οποίοι ανέρχονται στους 2400, τότε ο γύρος τερματίζεται με το Pacman να λαμβάνει όλους τους πόντους, ενώ το φάντασμα 0. Εφόσον ο Pacman χρησιμοποίησε κατά τη διάρκεια του παιχνιδιού τη δυνατότητα πολλαπλασιασμού πόντων, προφανώς οι πόντοι του στο τέλος του γύρου θα είναι περισσότεροι από 2400.
  2. Το φάντασμα πιάνει τον Pacman: αν το φάντασμα βρεθεί στον ίδιο κόμβο με τον Pacman, θεωρείται πως τον έπιασε. Σε αυτή την περίπτωση ο γύρος τερματίζεται άμεσα, ο Pacman διατηρεί όσους πόντους μάζεψε μέχρι εκείνη τη στιγμή και το φάντασμα λαμβάνει τόσους πόντους ανάλογα με το πόσο γρήγορα έπιασε τον Pacman. Οι μέγιστοι πόντοι που μπορεί να λάβει το φάντασμα με αυτόν τον τρόπο είναι 2400 (αν έπιανε τον Pacman στιγμιαία κατά την εκκίνηση του γύρου). Συνεπώς, αν το φάντασμα πιάσει τον Pacman ενώ απομένει ο μισός χρόνος για τη λήξη του γύρου, θα πάρει 1200 πόντους, αν απομένει το 75% του χρόνου θα πάρει 1800 πόντους κ.τ.λ.
  3. Λήξη χρόνου γύρου: Κάθε γύρος έχει μία μέγιστη χρονική διάρκεια η οποία ορίζεται στα δύο λεπτά. Εφόσον παρέλθουν τα δύο λεπτά και δεν έχει προκύψει προηγουμένως κάποια από τις προαναφερθείσες συνθήκες τερματισμού, ο γύρος ολοκληρώνεται. Στην περίπτωση αυτή, ο Pacman διατηρεί όσους πόντους είχε συλλέξει και το φάντασμα δε λαμβάνει πόντους.

Νικητής αγώνα

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

3. Σχεδίαση στρατηγικής με το εργαλείο Pacman4All

3.1 Χρησιμοποιώντας το εργαλείο Pacman4All

Με το εργαλείο Pacman4All είναι εφικτή η σχεδίαση στρατηγικών για τον Pacman και το φάντασμα δίχως να απαιτούνται γνώσεις ρομποτικής, μηχανικής λογισμικού ή/και προγραμματισμού. Στην παρακάτω εικόνα απεικονίζεται η γραφική διεπαφή μέσω της οποίας οι παίκτες μπορούν να καταστρώσουν τις στρατηγικές τους. Η γραφική διεπαφή αποτελείται από τέσσερις περιοχές οι οποίες επεξηγούνται ακολούθως.

  1. Λίστα στρατηγικών: Στην περιοχή εντός του κόκκινου πλαισίου φαίνεται η λίστα με τους φακέλους στρατηγικών του παίκτη. Σε κάθε φάκελο μπορεί να υπάρχει μόνο μία στρατηγική και μπορεί να είναι είτε για το φάντασμα είτε για τον Pacman.
  2. Καμβάς σχεδίασης στρατηγικής: Ο καμβάς σχεδίασης στρατηγικής βρίσκεται εντός της μπλε περιοχής. Στον καμβά μπορεί να υπάρχουν πάνω από μία ταμπέλες (tabs), μία για κάθε στρατηγική.
  3. Εντολές σχεδίασης στρατηγικής: Στην πράσινη περιοχή βρίσκονται οι διαθέσιμες γραφικές εντολές για τη σχεδίαση στρατηγικής. Οι διαθέσιμες εντολές είναι διαφορετικές ανάλογα αν η επιλεγμένη ταμπέλα είναι για στρατηγική Pacman ή για το φάντασμα.
  4. Ιδιότητες επιλεγμένης εντολής: Τέλος στην περιοχή που σημειώνεται με μωβ χρώμα ο παίκτης βλέπει κάθε στιγμή τις ιδιότητες που μπορεί να παραμετροποιήσει για μία γραφική εντολή εντός του καμβά σχεδίασης στρατηγικών που έχει επιλέξει.

Προκειμένου ο παίκτης να σχεδιάσει μία στρατηγική πρέπει να επιλέξει και να σύρει(drag and drop) στον καμβά στρατηγικής τις γραφικές εντολές που επιθυμεί. Οι διαθέσιμες εντολές βρίσκονται στην εργαλειοθήκη “Robot State" που σημειώνεται με μωβ. Κάθε μία από αυτές δηλώνει την ενέργεια που θέλει να κάνει ο παίκτης (κάθε εντολή επεξηγείται στις ακόλουθες ενότητες). Για παράδειγμα στην παρακάτω εικόνα, ο παίκτης που σχεδιάζει μία στρατηγική για το φάντασμα, έχει επιλέξει αμέσως μόλις ξεκινήσει ο γύρος του παιχνιδιού το φάντασμα να ξεκινήσει να κυνηγά τον Pacman.

Η μετάβαση από μία εντολή σε μία άλλη σημειώνεται με ένα βέλος (όπως το πράσινο της εικόνας). Για τη δημιουργία της μετάβασης ο παίκτης πρέπει να επιλέξει το εργαλείο “Transition" που σημειώνεται στη μπλε περιοχή και ακολούθως να κάνει αριστερό κλικ στην εντολή από την οποία θα ξεκινά και να σύρει μέχρι την εντολή όπου θα καταλήγει η μετάβαση, όπου και θα απελευθερώσει το ποντίκι. Συνεπώς στην πιο πάνω περίπτωση ο παίκτης επέλεξε το Transition, έκανε πρώτα κλικ στην εντολή Start και ακολούθως έσυρε το ποντίκι στην εντολή Capture Pacman όπου και το απελευθέρωσε.

3.2 Σχεδίαση σύνθετων στρατηγικών

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

Στην περίπτωση αυτή ο παίκτης σχεδιάζει μια στρατηγική για τον Pacman. Σε αυτήν έχει επιλέξει 4 εντολές. Την υποχρεωτική εντολή Start, την εντολή Go for bonus για να συλλέξει bonus πόντους, την εντολή Go for points για να συλλέξει πόντους και την εντολή ακινητοποίησης του φαντάσματος (οι εντολές επεξηγούνται αναλυτικά στις ακόλουθες ενότητες). Όπως δείχνει η παραπάνω εικόνα κάποιες από τις εντολές επιδέχονται επιπλέον παραμετροποίησης (π.χ. η εντολή Go for points) και για το λόγο αυτό παρέχεται επιπλέον χώρος σε αυτήν (επισημαίνεται με μπλε).

Μέσα σε αυτή την περιοχή ο παίκτης μπορεί να τοποθετήσει (drag and drop) μία ή περισσότερες από τις διαθέσιμες συμπεριφορές που παρέχονται στην εργαλειοθήκη “Behavior Toolbar" (επισημαίνεται με μπλε στο δεξί μέρος). Αυτές οι συμπεριφορές καθορίζουν την ιδιαίτερη συμπεριφορά που επιθυμεί ο παίκτης κατά την εκτέλεση μιας εντολής. Για παράδειγμα, στη συγκεκριμένη περίπτωση ο παίκτης επέλεξε, καθώς ο Pacman πηγαίνει για πόντους (εντολή Go for points), να διαλέξει με τέτοιο τρόπο τον κόμβο-στόχο με πόντους που θα πάει, έτσι ώστε α) κατά το δυνατόν να αποφεύγει το φάντασμα και ταυτόχρονα β) να διαλέξει τον κόμβο με πόντους που είναι πιο κοντά. Οι συμπεριφορές επεξηγούνται αναλυτικά στις επόμενες ενότητες.

Επιπλέον στη συγκεκριμένη περίπτωση ο παίκτης επέλεξε να χρησιμοποιεί, όταν το φάντασμα τον πλησιάζει, μερικούς bonus πόντους ώστε να το ακινητοποιεί, ευελπιστώντας πως έτσι θα το αποφύγει. Για το σκοπό αυτό επέλεξε την εντολή “Ghost Immobilization" από την εργαλειοθήκη με τις εντολές που χρησιμοποιούν bonus πόντους (πορτοκαλί περιοχή). Πως όμως εκπληρώνεται η επιθυμία του παίκτη η χρήση bonus για την ακινητοποίηση του φαντάσματος να γίνεται μόνο όταν το φάντασμα είναι “κοντά"?

Όπως φαίνεται στην παραπάνω εικόνα, οι μεταβάσεις από μία εντολή σε μία άλλη μπορεί να έχουν κάποια συνθήκη. Αυτές λοιπόν που έχουν μία απλή συνθήκη που πρέπει να ικανοποιηθεί για να εκτελεστεί η μετάβαση από μία εντολή σε μία άλλη σημειώνονται με πορτοκαλί χρώμα. Οι μεταβάσεις που περιέχουν πιο περίτεχνες συνθήκες ωστόσο σημειώνονται με μωβ. Σε αντίθετη περίπτωση, όταν δηλαδή μια μετάβαση δεν έχει κάποια συνθήκη σημειώνεται με πράσινο. Σε όλες τις περιπτώσεις που υπάρχει μία συνθήκη ή ένας συνδυασμός συνθηκών, αυτή η συνθήκη εμφανίζεται επάνω στο βέλος της μετάβασης. Για παράδειγμα η μετάβαση από την εντολή Go for bonus στην εντολή Ghost Immobilization γίνεται μόνο όταν η απόσταση σε κόμβους από τον αντίπαλο είναι μικρότερη από 5 (“DIST_TO_OPP < 5").

Όποτε ο παίκτης δημιουργεί ένα νέο βέλος μετάβασης από μία ενέργεια σε μία άλλη, αυτή εξ΄ορισμού δεν έχει κάποια συνθήκη. Για να προσθέσει ο παίκτης μια ή περισσότερες συνθήκες σε μία μετάβαση πρέπει να κάνει διπλό κλικ πάνω στο βέλος της μετάβασης που επιθυμεί. Τότε ανοίγει μία νέα καρτέλα στον καμβά σχεδίασης στρατηγικής, όπως φαίνεται στην παρακάτω εικόνα.

Στη συγκεκριμένη περίπτωση ο παίκτης επέλεξε να προσθέσει στη μετάβαση ένα συνδυασμό συνθηκών. Για το σκοπό αυτό ο παίκτης πρέπει να εναπωθέσει (drag and drop) στον καμβά σχεδίασης ένα “ConditionGroup" από την εργαλειοθήκη που σημειώνεται με μπλε περίγραμμα. Τότε εμφανίζεται το γαλάζιο ορθογώνιο στον καμβά, μέσα στο οποίο ο παίκτης μπορεί να εναποθέσει μία ή περισσότερες συνθήκες ή συνδυασμούς συνθηκών κατά το δοκούν. Στην περίπτωση αυτή ο παίκτης επέλεξε να χρησιμοποιήσει ένα συνδυασμό δύο απλών συνθηκών. Η μία ελέγχει αν οι bonus πόντοι του παίκτη είναι ίσοι με μηδέν (εντός του κόκκινου ορθογωνίου), ενώ η άλλη ελέγχει αν η απόσταση του παίκτη από τον κοντινότερο κόμβο με bonus είναι μικρότερη από ότι ο κοντινότερος κόμβος με πόντους. Η εργαλειοθήκη με τις διαθέσιμες συνθήκες επισημαίνεται με κόκκινο περίγραμμα δεξιά στην εικόνα. Η πλήρης επεξήγηση των συνθηκών παρέχεται σε ακόλουθες ενότητες.

3.3 Επαληθεύοντας την ορθότητα της στρατηγικής.

Καθώς ο παίκτης προσθέτει εντολές και συνθήκες στη στρατηγική του για να αυξήσει τις πιθανότητες νίκης, τόσο αυξάνεται η πιθανότητα η εφαρμογή να περιέχει ατέλειες και λογικά σφάλματα τα οποία είναι πιθανό να οδηγήσουν σε μη επιθυμητή συμπεριφορά του Pacman ή του φαντάσματος. Προς αποφυγή τέτοιων καταστάσεων το εργαλείο Pacman4All παρέχει τη δυνατότητα επαλήθευσης της στρατηγικής.

Όπως δείχνει η παραπάνω εικόνα, προκειμένου ο παίκτης να επαληθεύσει την ορθότητα της στρατηγικής του, πρέπει να πατήσει δεξί κλικ σε οποιοδήποτε σημείο του καμβά στρατηγικής δεν περιέχει κάποια εντολή (στον κενό χώρο) και ακολούθως να κάνει κλικ στην επιλογή “Validate diagram" όπως επισημαίνεται εντός του πορτοκαλί περιγράμματος. Τότε το εργαλείο Pacman4All κάνει πολλαπλούς λογικούς ελέγχους και εφόσον εντοπίσει προβλήματα, τα επισημαίνει με κόκκινο σύμβολο Χ (επισημαίνεται εντός μπλε κύκλου).

Ταυτόχρονα ο παίκτης μπορεί να δει το σύνολο των σφαλμάτων στην καρτέλα “Problems" στο κάτω μέρος της διεπαφής εντός του μπλε ορθογωνίου. Κάθε σφάλμα συνοδεύεται από μία περιγραφή που βοηθά τον παίκτη να διορθώσει το λάθος και από ένα κωδικό προβλήματος (Ï€.χ. BA1, RS2 όπως στην εικόνα), με τον οποίο ο παίκτης μπορεί να αναζητήσει επιπλέον βοήθεια για την επίλυση του σφάλματος στην τελευταία ενότητα του παρόντος. Τέλος εάν ο παίκτης κάνει διπλό κλικ σε ένα από τα μηνύματα σφάλματος της στρατηγικής του, τότε επιλέγεται αυτόματα η γραφική εντολή που έχει το πρόβλημα στον καμβά σχεδίασης προς διευκόλυνση του χρήστη.

3.4 Παραγωγή εφαρμογής

Το τελικό στάδιο πριν την έναρξη του αγώνα είναι η (αυτόματη) παραγωγή του λογισμικού για τον Pacman και το φάντασμα. Τονίζεται πως πριν ο παίκτης προχωρήσει στην παραγωγή του κώδικα πρέπει προηγουμένως να έχει επιδιορθώσει όλα τα προβλήματα που έχουν εντοπιστεί κατά την επαλήθευση της στρατηγικής, ειδάλλως δύναται να παραχθεί λογισμικό που δε θα έχει την επιθυμητή συμπεριφορά. Όπως δείχνει η παρακάτω εικόνα, για να παραχθεί το λογισμικό μιας στρατηγικής, ο παίκτης πρέπει να επιλέξει το αρχείο με κατάληξη “pacmanmetamodel" στο φάκελο της, να πατήσει δεξί κλικ και στη συνέχεια να πατήσει στην επιλογή “Generate Code". Κατόπιν θα εμφανιστεί ο φάκελος “output" όπως φαίνεται εντός του πορτοκαλί πλαισίου, ο οποίος περιέχει το απαιτούμενο λογισμικό. Τονίζεται πως αυτή η διαδικασία παραγωγής λογισμικού πρέπει να ακολουθηθεί για κάθε επιθυμητή στρατηγική, Ï€.χ. μια φορά για τον Pacman και μία για το φάντασμα.

4 Εντολές Pacman4All

4.1. Start

Περιγραφή:

Η χρήση της εντολής Start υποδηλώνει το σημείο από το οποίο θα αρχίσει να εκτελείται η εκάστοτε στρατηγική.

Ιδιότητες:

Το σύμβολο Start δεν έχει καμία ιδιότητα.

4.2. Capture Pacman

Περιγραφή:

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

Ιδιότητες:

Η εντολή Capture Pacman δεν έχει καμία παραμετροποιήσιμη ιδιότητα.

4.3. Go for bonus

Περιγραφή:

Η χρήση της εντολής Go For bonus έχει ως αποτέλεσμα ο παίκτης (Pacman/φάντασμα) να μετακινηθεί προς έναν από τους κόμβους της πίστας η οποία έχει έναν bonus πόντο. Συνεπώς όπως φαίνεται στην παρακάτω εικόνα θα μετακινηθεί προς κάποιον από τους κόμβους που είναι επισημασμένοι με μπλε κύκλο. Το ποιος από αυτούς θα επιλεγεί, εξαρτάται από το σύνολο των συμπεριφορών που ο παίκτης έχει προσθέσει στη συγκεκριμένη εντολή Go For bonus, π.χ. απόσταση από τον αντίπαλο, κοντινότερο bonus κτλ. Οι συμπεριφορές επεξηγούνται σε επόμενη ενότητα του παρόντος.

Σημείωση: εφόσον κατά την προσπάθεια λήψης bonus από τον Pacman, ο Pacman περάσει πάνω από κόμβο που έχει πόντους, συλλέγει και τους πόντους.

Ιδιότητες:

  1. behaviors: περιέχει το σύνολο συμπεριφορών οι οποίες καθορίζουν το bonus κόμβο που θα επιλεγεί από το σύνολο των διαθεσιμων την τρέχουσα στιγμή στην πίστα. Οι πιθανές επιλογές είναι Distance from Points, Distance from Ghost/Pacman, Distance from Bonuses, Number of Escape Routes.

4.4. Go for points

Περιγραφή:

Η χρήση της εντολής Go For points έχει ως αποτέλεσμα ο παίκτης (Pacman/φάντασμα) να μετακινηθεί προς έναν από τους κόμβους της πίστας ο οποίος έχει πόντους. Συνεπώς όπως φαίνεται στην παρακάτω εικόνα θα μετακινηθεί προς κάποιον από τους κόμβους που είναι επισημασμένοι με κόκκινο κύκλο. Το ποιος από αυτούς θα επιλεγεί, εξαρτάται από το σύνολο των συμπεριφορών που ο παίκτης έχει προσθέσει στη συγκεκριμένη εντολή Go For points, π.χ. απόσταση από τον αντίπαλο, κοντινότερο bonus κτλ. Οι συμπεριφορές επεξηγούνται σε επόμενη ενότητα του παρόντος. Η εντολή Go for Points μπορεί να χρησιμοποιηθεί μόνο από τον Pacman.

Σημείωση: εφόσον κατά την προσπάθεια λήψης πόντων από τον Pacman, ο Pacman περάσει πάνω από κόμβο που έχει bonus, συλλέγει και το bonus.

Ιδιότητες:

  1. behaviors: περιέχει το σύνολο συμπεριφορών οι οποίες καθορίζουν τον κόμβο με πόντους που θα επιλεγεί από το σύνολο των διαθεσιμων την τρέχουσα στιγμή στην πίστα. Οι πιθανές επιλογές είναι Distance from Points, Distance from Ghost/Pacman, Distance from Bonuses, Number of Escape Routes.

4.5. Wander

Περιγραφή:

Η χρήση της εντολής Wander έχει ως αποτέλεσμα ο παίκτης (Pacman/φάντασμα) να μετακινηθεί προς οποιοδήποτε κόμβο της πίστας. Συνεπώς όπως φαίνεται στην παρακάτω εικόνα θα μετακινηθεί προς οποιοδήποτε από τους 86 κόμβους και όχι αναγκαστικά προς κόμβο πόντων ή κόμβο bonus. Το ποιος από αυτούς θα επιλεγεί, εξαρτάται από το σύνολο των συμπεριφορών που ο παίκτης έχει προσθέσει στη συγκεκριμένη εντολή Wander, π.χ. απόσταση από τον αντίπαλο, κοντινότερο bonus κτλ. Οι συμπεριφορές επεξηγούνται σε επόμενη ενότητα του παρόντος.

Σημείωση 1: εφόσον κατά την προσπάθεια περιήγησης στην πίστα από τον Pacman, ο Pacman περάσει πάνω από κόμβο που έχει bonus ή πόντους, συλλέγει και το bonus ή τους πόντους αντίστοιχα.

Σημείωση 2: εφόσον κατά την προσπάθεια περιήγησης στην πίστα από το φάντασμα, το φάντασμα περάσει πάνω από κόμβο που έχει bonus, συλλέγει και το bonus.

Ιδιότητες:

  1. behaviors: περιέχει το σύνολο συμπεριφορών οι οποίες καθορίζουν τον κόμβο που θα επιλεγεί από το σύνολο των διαθεσιμων την τρέχουσα στιγμή στην πίστα. Οι πιθανές επιλογές είναι Distance from Points, Distance from Ghost/Pacman, Distance from Bonuses, Number of Escape Routes.

5. Συμπεριφορές.

5.1 Distance from Points

Περιγραφή: Η χρήση της συμπεριφοράς Distance from points έχει ως αποτέλεσμα να επιλεγεί ως κόμβος-στόχος, κάποιος ο οποίος πληροί κάποιο κριτήριο απόστασης από πόντους όπως φαίνεται στις ιδιότητες πιο κάτω. Στην περίπτωση συνεπώς που η συμπεριφορά αυτή χρησιμοποιηθεί σε εντολή Go For Points, Go for Bonus ή Wandering θα επιλεγεί κάποιος κόμβος πόντων/μπονους ή οποιοδήποτε κόμβος της πίστας με βάση το κριτήριο αυτό.

Ιδιότητες:

  1. Importance: υποδηλώνει πόσο σημαντική θα πρέπει να θεωρηθεί η συγκεκριμένη συμπεριφορά, αν σε μία εντολή χρησιμοποιηθεί μαζί με άλλες συμπεριφορές. Μία συμπεριφορά με Importance HIGH ισοδυναμεί με 2 Importance NORMAL και με 4 συμπεριφορές με Importance LOW.
  2. Type: υποδηλώνει τον τύπο απόστασης από κόμβους πόντων που θα χρησιμοποιηθεί για να επιλεγεί ο κόμβος στόχος.
    1. TO_CLOSEST_POINTS: δημιουργεί την τάση να πάει προς τον πιο κοντινό κόμβο με πόντους από την τρέχουσα θέση του Pacman/Φαντάσματος.
    2. TO_MOST_POINTS: δημιουργεί την τάση να πάει προς τον κόμβο με τους περισσότερους πόντους.
    3. TO_HIGH_SCORE_AREA: δημιουργεί την τάση να πάει προς περιοχή η οποία βρίσκεται κατά μέσο όρο κοντά σε αρκετούς κομβους με πόντους.

5.2 Distance from Pacman/Φάντασμα

Περιγραφή:

Η συμπεριφορά Distance from Pacman/Φάντασμα έχει την τάση αντιστοίχως να μετακινεί το φάντασμα ή τον Pacman προς τον αντίπαλο ή μακρυά από αυτόν. Στην περίπτωση συνεπώς που η συμπεριφορά αυτή χρησιμοποιηθεί σε εντολή Go For Points, Go for Bonus ή Wandering θα επιλεγεί κάποιος κόμβος πόντων/μπόνους ή οποιοδήποτε κόμβος της πίστας με βάση το κριτήριο αυτό.

Ιδιότητες:

  1. Importance: υποδηλώνει πόσο σημαντική θα πρέπει να θεωρηθεί η συγκεκριμένη συμπεριφορά, αν σε μία εντολή χρησιμοποιηθεί πάνω από μία. Μία συμπεριφορά με Importance HIGH ισοδυναμεί με 2 Importance NORMAL και με 4 συμπεριφορές με Importance LOW.
  2. Type: υποδηλώνει τον τύπο απόστασης από τον αντίπαλο που θα χρησιμοποιηθεί για να επιλεγεί ο κόμβος στόχος.
    1. MAX: η επιλογή κόμβου γίνεται με βάση τη μέγιστη απόσταση από τον αντίπαλο, συνεπώς η συμπεριφορά θα έχει την τάση να απομακρύνει τον παίκτη από τον αντίπαλο.
    2. MIN: η επιλογή κόμβου γίνεται με βάση την ελάχιστη απόσταση από τον αντίπαλο, συνεπώς η συμπεριφορά θα έχει την τάση ο παίκτης να προσεγγίζει τον αντίπαλο.

5.3 Distance from Bonuses

Περιγραφή:

Η συμπεριφορά Distance from Bonuses έχει την τάση να μετακινεί τον παίκτη με βάση κάποιο κριτήριο απόστασης από κόμβους bonus όπως αναλύεται στις ιδιότητες. Στην περίπτωση συνεπώς που η συμπεριφορά αυτή χρησιμοποιηθεί σε εντολή Go For Points, Go for Bonus ή Wandering θα επιλεγεί κάποιος κόμβος πόντων/μπονους ή οποιοδήποτε κόμβος της πίστας με βάση το κριτήριο αυτό.

Ιδιότητες:

  1. Importance: υποδηλώνει πόσο σημαντική θα πρέπει να θεωρηθεί η συγκεκριμένη συμπεριφορά, αν σε μία εντολή χρησιμοποιηθεί πάνω από μία. Μία συμπεριφορά με Importance HIGH ισοδυναμεί με 2 Importance NORMAL και με 4 συμπεριφορές με Importance LOW.
  2. Type: υποδηλώνει τον τύπο απόστασης από κόμβους bonus που θα χρησιμοποιηθεί για να επιλεγεί ο κόμβος στόχος.
    1. TO_CLOSEST_BONUS: η επιλογή κόμβου γίνεται με βάση τον κόμβο bonus που έχει την ελάχιστη απόσταση από την τρέχουσα θέση του παίκτη.
    2. TO_HIGH_BONUS_AREA: δημιουργεί την τάση να πάει ο παίκτης προς περιοχή η οποία βρίσκεται κατά μέσο όρο κοντά σε αρκετούς κομβους με bonus.

5.4 Number of Escape Routes

Περιγραφή:

Η συμπεριφορά Number of Escape Routes έχει την τάση να μετακινεί τον παίκτη προς κόμβους οι οποίοι έχουν αρκετές διεξόδους διαφυγής. Στην περίπτωση συνεπώς που η συμπεριφορά αυτή χρησιμοποιηθεί σε εντολή Go For Points, Go for Bonus ή Wandering θα επιλεγεί κάποιος κόμβος πόντων/μπόνους ή οποιοδήποτε κόμβος της πίστας αντίστοιχα ο οποίος θα έχει αρκετές διεξόδους διαφυγής.

Ιδιότητες:

  1. Importance: υποδηλώνει πόσο σημαντική θα πρέπει να θεωρηθεί η συγκεκριμένη συμπεριφορά, αν σε μία εντολή χρησιμοποιηθεί πάνω από μία. Μία συμπεριφορά με Importance HIGH ισοδυναμεί με 2 Importance NORMAL και με 4 συμπεριφορές με Importance LOW.
  2. Search Depth: δηλώνει το βάθος αναζήτησης διεξόδων από κάθε δυνατό κόμβο της πιστας. Συνεπώς, όσο μεγαλύτερη η τιμή αυτής της παραμέτρου, τόσο ο εκάστοτε κόμβος θα διαθέτει περισσότρες διεξόδους διαφυγής, άρα θα βρίσκεται κεντρικότερα. Ως αποτέλεσμα, ο παίκτης θα τείνει να κατευθύνεται προς κεντρικότερα σημεία.

6. Εντολές χρήσης bonus

6.1 Pacman/Ghost Immobilization

Περιγραφή:

Με τη χρήση της εντολής Pacman/Ghost immobilization ο παίκτης ακινητοποιεί τον αντίπαλο για χρονικό διάστημα ανάλογο των bonus πόντων που επιθυμεί να χρησιμοποιήσει.

Ιδιότητες:

  1. type: πρόκειται για το είδος ακινητοποίησης του αντιπάλου
    1. x1: χρησιμοποιείται ένας bonus πόντος και ο αντίπαλος ακινητοποιείται για χρονική διάρκεια που αντιστοιχεί σε περίπου 4 απλές κινήσεις (μετάβαση από κόμβο σε κόμβο/περιστροφή).
    2. x2: χρησιμοποιούνται δύο bonus πόντοι και ο αντίπαλος ακινητοποιείται για χρονική διάρκεια που αντιστοιχεί σε περίπου 8 απλές κινήσεις.
    3. x3: χρησιμοποιούνται τρεις bonus πόντοι και ο αντίπαλος ακινητοποιείται για χρονική διάρκεια που αντιστοιχεί σε περίπου 12 απλές κινήσεις.
    4. x4: χρησιμοποιούνται τέσσερις bonus πόντοι και ο αντίπαλος ακινητοποιείται για χρονική διάρκεια που αντιστοιχεί σε περίπου 16 απλές κινήσεις.
    5. x5: χρησιμοποιούνται πέντε bonus πόντοι και ο αντίπαλος ακινητοποιείται για χρονική διάρκεια που αντιστοιχεί σε περίπου 20 απλές κινήσεις.

6.2 Multiply Points

Περιγραφή:

Με τη χρήση της εντολής Multiply Points ο Pacman μπορεί να πολλαπλασιάσει τους πόντους που έχει την τρέχουσα χρονική στιγμή κατά τρόπο ανάλογο με τη χρήση bonus πόντων όπως επεξηγείται στις ιδιότητες.

Ιδιότητες:

  1. type: πρόκειται για τον συντελεστή πολλαπλασιασμού των πόντων
    1. x2: χρησιμοποιούνται δύο bonus πόντοι και ο Pacman διπλασιάζει τους πόντους του.
    2. x3: χρησιμοποιούνται τρεις bonus πόντοι και ο Pacman τριπλασιάζει τους πόντους του.
    3. x4: χρησιμοποιούνται τέσσερις bonus πόντοι και ο Pacman τετραπλασιάζει τους πόντους του.
    4. x5: χρησιμοποιούνται πέντε bonus πόντοι και ο Pacman πενταπλασιάζει τους πόντους του.

6.3 End Round

Περιγραφή:

Με τη χρήση της εντολής End Round τόσο ο Pacman όσο και το φάντασμα μπορούν να χρησιμοποιήσουν έξι bonus πόντους και να προκαλέσουν τον άμεσο τερματισμό του παιχνιδιού.

Ιδιότητες:

Η εντολή χρήσης bonus End Round δεν έχει ιδιότητες.

7 Δημιουργία Συνθηκών Μετάβασης

7.1 Condition

Περιγραφή:

Με τη χρήση condition ο παίκτης μπορεί να προσθέσει συνθήκες στις μεταβάσεις από μία εντολή σε άλλη, έτσι ώστε αυτές να πραγματοποιούνται μόνο όταν η συνθήκη αληθεύει.

Ιδιότητες:

  1. Operator: πρόκειται για τον τελεστή σύγκρισης που θα χρησιμοποιηθεί ανάμεσα στους δύο τελεστέους της συνθήκης.
    1. EQUAL: η συνθήκη είναι αληθής αν και μόνο αν οι δύο τελεστέοι της είναι ίσοι.
    2. NOT_EQUAL: η συνθήκη είναι αληθής αν και μόνο αν οι δύο τελεστέοι της διαφέρουν μεταξύ τους.
    3. GREATER: η συνθήκη είναι αληθής αν και μόνο αν ο αριστερός τελεστέος είναι μεγαλύτερος από το δεξιό.
    4. GREATER_OR_EQUAL: η συνθήκη είναι αληθής αν και μόνο αν ο αριστερός τελεστέος είναι μεγαλύτερος ή ίσος από το δεξιό.
    5. LOWER: η συνθήκη είναι αληθής αν και μόνο αν ο αριστερός τελεστέος είναι μικρότερος από το δεξιό.
    6. LOWER_OR_EQUAL: η συνθήκη είναι αληθής αν και μόνο αν ο αριστερός τελεστέος είναι μικρότερος ή ίσος από το δεξιό.

7.2 Game Variable

Περιγραφή:

Ο όρος Game Variable αντιπροσωπεύει την τιμή κάποιας ποσότητας του παιχνιδιού μια δεδομένη χρονική στιγμή. Οι διαθέσιμες ποσότητες καταγράφονται στις ιδιότητες.

Ιδιότητες:

  1. Variable: πρόκειται για τον τύπο μεταβλητής που μπορεί να λάβει μία από τις παρακάτω τιμές:
    1. TIME: πρόκειται για το χρόνο που απομένει μέχρι τον τερματισμό ενός γύρου παιχνιδού σε δευτερόλεπτα.
    2. MY_BONUS: οι bonus πόντοι του παίκτη.
    3. OPP_BONUS: οι bonus πόντοι του αντιπάλου.
    4. MY_POINTS: οι πόντοι του παίκτη.
    5. OPP_POINTS: οι πόντοι του αντιπάλου.
    6. UNTAKEN_POINT_CARDS: το πλήθος των κόμβων της πίστας που έχουν ακόμη πόντους.
    7. UNTAKEN_BONUS_CARDS: το πλήθος των κόμβων της πίστας που έχουν ακόμη μπόνους πόντους.
    8. UNTAKEN_POINTS: το πλήθος των πόντων που υπάρχουν ακόμη στην πίστα.
    9. UNTAKEΝ_BONUS: το πλήθος των κόμβων της πίστας που έχουν ακόμη bonus.
    10. DIST_TO_OPP: η απόσταση σε κόμβους του παίκτη από τον αντίπαλό του.
    11. DIST_TO_CLOSEST_POINTS: η απόσταση σε κόμβους του παίκτη από τον κοντινότερο κόμβο με πόντους.
    12. DIST_TO_CLOSEST_BONUS: η απόσταση σε κόμβους του παίκτη από τον κοντινότερο κόμβο με bonus.
    13. DIST_TO_MOST_POINTS: η απόσταση σε κόμβους του παίκτη από τον κόμβο με τους περισσότερους πόντους.
    14. IS_OPP_FROZEN: μεταβλητή η οποία δηλώνει αν ο αντίπαλος την τρέχουσα χρονική στιγμή είναι ακινητοποιημένος λόγω της χρήσης εντολής Pacman/Ghost Immobilization. Λαμβάνει την τιμή 1 εάν ο αντίπαλος είναι ακινητοποιημένος και την τιμή 0 εάν ο αντίπαλος δεν είναι ακινητοποιημένος.

7.3 Condition Group

Περιγραφή:

Το Condition Group αντικατροπτίζει ένα συνδυασμό από συνθήκες (conditions) ή/και άλλα Condition Groups έτσι ώστε ο παίκτης να δημιουργήσει πιο σύνθετες συνθήκες μετάβασης από μία εντολή σε μία άλλη.

Ιδιότητες:

  1. Evaluation Type: πρόκειται για τη λογική πράξη που θα εκτελεστεί ανάμεσα στις συνθήκες (Conditions) και ομάδες συνθηκών (Condition Groups) του συγκεκριμένου Condition Group. Με τη λογική αυτή πράξη ελέγχεται αν το Condition Group είναι άληθές ή όχι, και συνεπώς αν η μετάβαση στην εντολή στόχο πρέπει να πραγματοποιηθεί ή όχι.
    1. AND: πρόκειται για το “λογικό και" ανάμεσα στις συνθήκες. Στην περίπτωση αυτή η ομάδα συνθηκών αληθεύει αν και μόνο αν όλες οι περιεχόμενες συνθήκες/ομάδες συνθηκών είναι αληθείς.
    2. OR: πρόκειται για το “λογικό ή" ανάμεσα στις συνθήκες. Στην περίπτωση αυτή η ομάδα συνθηκών αληθεύει αν και μόνο αν έστω μία από τις περιεχόμενες συνθήκες/ομάδες συνθηκών είναι αληθής.
    3. XOR: στην περίπτωση αυτή η ομάδα συνθηκών αληθεύει αν και μόνο αν η μία από τις δύο επιτρεπτές συνθήκες/ομάδες συνθηκών είναι αληθής και η άλλη είναι ψευδής.
    4. NOT: στην περίπτωση αυτή η ομάδα συνθηκών αληθεύει αν και μόνο αν η μία επιτρεπτή συνθήκη/ομάδα συνθηκών είναι ψευδής.

7.4 Value

Περιγραφή:

Πρόκειται για μια αριθμητική τιμή που μπορεί να χρησιμοποιηθεί στη δημιουργία μιας συνθήκης για τη σύγκρισή της με την τρέχουσα τιμή μιας μεταβλητής του παιχνιδιού (Game Variable).

Ιδιότητες:

  1. Value: πρόκειται για την αριθμητική τιμή.

Δομικοί Περιορισμοί:

Ο όρος Value δεν έχει δομικούς περιορισμούς.

Συμπεριφορικοί Περιορισμοί:

Ο όρος Value δεν έχει δομικούς περιορισμούς.

8 Επεξήγηση σφαλμάτων

8.1 Error Code PA1

Περιγραφή: Σε κάθε στρατηγική πρέπει να υπάρχει μόνο ένα σημείο έναρξης. Για το λόγο αυτό, πρέπει να υπάρχει μόνο μία εντολή Start στο διάγραμμα.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα:

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

8.2 Error Code PA3

Περιγραφή: Στο διάγραμμα της στρατηγικής που κατασκευάζετε για το Pacman πρέπει να δηλώσετε πως αφορά το Pacman και όχι το φάντασμα. Για το λόγο αυτό, πρέπει το Player Type στο διάγραμμα να είναι επιλεγμένο ως Pacman.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, κάντε κλικ σε ένα κενό σημείο στον καμβά σχεδίασης στρατηγικής. Έπειτα, επιλέξτε από το μενού στο κάτω μέρος της οθόνης την καρτέλα Properties και εκεί επιλέξτε ως Player Type τον Pacman.

8.3 Error Code PA4

Περιγραφή: Στο διάγραμμα της στρατηγικής που κατασκευάζετε για το φάντασμα πρέπει να δηλώσετε πως αφορά το φάντασμα και όχι τον Pacman. Για το λόγο αυτό, πρέπει το Player Type στο διάγραμμα να είναι επιλεγμένο ως φάντασμα.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, κάντε κλικ σε ένα κενό σημείο στον καμβά σχεδίασης στρατηγικής. Έπειτα, επιλέξτε από το μενού στο κάτω μέρος της οθόνης την καρτέλα Properties και εκεί επιλέξτε ως Player Type το Ghost.

8.4 Error Code RS2

Περιγραφή: Κάθε μία εντολή μπορεί να έχει μόνο μία μετάβαση (Transition) χωρίς συνθήκη ή συνδυασμό συνθηκών προς μία άλλη εντολή.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, πρέπει να αποφασίσετε ποια μετάβαση χωρίς συνθήκες επιθυμείτε να διατηρήσετε στη στρατηγική σας. Έπειτα, επιλέξτε τις κενές μεταβάσεις, αφήνοντας εκτός επιλογής εκείνη τη μετάβαση που αποφασίσατε, και προχωρήστε στη διαγραφή τους (delete).

8.5 Error Code RS3

Περιγραφή: Μία εντολή δε γίνεται να περιέχει παραπάνω από μία συμπεριφορές που να αφορούν την απόσταση από τον αντίπαλο (είτε pacman είτε φάντασμα). Για το λόγο αυτό δε γίνεται να υπάρχουν σε μία εντολή παραπάνω από μία συμπεριφορές Distance from Pacman ή Distance from Ghost.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, πρέπει να αποφασίσετε ποια συμπεριφορά σχετικά με την απόσταση από τον αντίπαλο επιθυμείτε να διατηρήσετε στη στρατηγική σας. Έπειτα, επιλέξτε όποια άλλη συμπεριφορά του ίδιου τύπου υπάρχει και διαγράψτε την (delete).

8.6 Error Code RS4

Περιγραφή: Μία εντολή δε γίνεται να περιέχει παραπάνω από μία συμπεριφορές που να αφορούν την απόσταση από τους πόντους της πίστας, με την ίδια ιδιότητα. Για το λόγο αυτό δε γίνεται να υπάρχουν σε μία εντολή παραπάνω από μία συμπεριφορές Distance from Points με το ίδιο type.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, υπάρχουν διαφορετικές επιλογές που μπορείτε να ακολουθήσετε. Στην πρώτη περίπτωση, πρέπει να αποφασίσετε ποια συμπεριφορά Distance from Points επιθυμείτε να διατηρήσετε στη στρατηγική σας, να επιλέξετε τις υπόλοιπες και να τις διαγράψετε. Στη δεύτερη περίπτωση, πρέπει να αναθεωρήσετε τις ιδιότητες των συμπεριφορών Distance from Points που θέλετε να έχει το ρομπότ σε αυτή την εντολή και να τροποποιήσετε τις συμπεριφορές απόστασης, ώστε να έχουν όλες διαφορετική ιδιότητα (type).

8.7 Error Code RS5

Περιγραφή: Μία εντολή δε γίνεται να περιέχει παραπάνω από μία συμπεριφορές που να αφορούν τις διεξόδους διαφυγής από έναν κόμβο. Για το λόγο αυτό δε γίνεται να υπάρχουν σε μία εντολή παραπάνω από μία συμπεριφορές Escape Routes.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, πρέπει να αποφασίσετε ποια συμπεριφορά Escape Routes επιθυμείτε να διατηρήσετε στη στρατηγική σας, να επιλέξετε τις υπόλοιπες και να τις διαγράψετε.

8.8 Error Code RS6

Περιγραφή: Μία εντολή δε γίνεται να περιέχει παραπάνω από μία συμπεριφορές που να αφορούν την απόσταση από τους bonus πόντους της πίστας, με την ίδια ιδιότητα. Για το λόγο αυτό δε γίνεται να υπάρχουν σε μία εντολή παραπάνω από μία συμπεριφορές Distance from Bonuses με το ίδιο type.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, υπάρχουν διαφορετικές επιλογές που μπορείτε να ακολουθήσετε. Στην πρώτη περίπτωση, πρέπει να αποφασίσετε ποια συμπεριφορά Distance from Bonuses επιθυμείτε να διατηρήσετε στη στρατηγική σας, να επιλέξετε τις υπόλοιπες και να τις διαγράψετε. Στη δεύτερη περίπτωση, πρέπει να αναθεωρήσετε τις ιδιότητες των συμπεριφορών Distance from Bonuses που θέλετε να έχει το ρομπότ σε αυτή την εντολή και να τροποποιήσετε τις συμπεριφορές απόστασης, ώστε να έχουν όλες διαφορετική ιδιότητα (type).

8.9 Error Code RS8

Περιγραφή: Δε γίνεται να υπάρχει στο διάγραμμα εντολή χωρίς να είναι προσπελάσιμη. Για το λόγο αυτό δε γίνεται να υπάρχει εντολή που να μην είναι στόχος κάποιας μετάβασης (Transition).

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, υπάρχουν διαφορετικές επιλογές που μπορείτε να εκτελέσετε. Στην πρώτη περίπτωση, πρέπει να τροποποιήσετε τη στρατηγική σας, και να προσθέσετε μία μετάβαση, επιλέγοντας το Transition από το Transition Toolbar, η οποία θα ξεκινά από μία άλλη εντολή και θα έχει ως στόχο την εντολή που υπάρχει το σφάλμα. Στη δεύτερη περίπτωση, πρέπει να αναθεωρήσετε και πάλι τη στρατηγική σας και να σβήσετε την εντολή που προκαλεί το σφάλμα.

8.10 Error Code RS9

Περιγραφή: Η εντολή αυτή πρέπει να περιέχει τουλάχιστον μία συμπεριφορά. Για το λόγο αυτό, η εντολή πρέπει να εχει τουλάχιστον ένα από τα παρακάτω: Distance from Points, Distance from Bonuses, Number of Escape Routes, Distance from Pacman/Ghost.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, πρέπει να προσθέσετε στην εντολή μία συμπεριφορά της επιλογής σας από το Behavior Toolbar.

8.11 Error Code RS10

Περιγραφή: Όλες οι μεταβάσεις αυτής της εντολής πρέπει να περιέχουν τουλάχιστον μία συνθήκη ή έναν συνδυασμό συνθηκών.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, πρέπει να αναθεωρήσετε τη στρατηγική σας και να αποφασίσετε ή να διαγράψετε κάποια κενή μετάβαση ή να της προσθέσετε συνθήκες. Στην πρώτη περίπτωση, πρέπει να επιλέξετε τις μεταβάσεις που δε θέλετε να έχετε πλέον στη στρατηγική σας και να τις διαγράψετε. Στη δεύτερη περίπτωση, πρέπει να κάνετε διπλό κλικ σε κάθε κενή μετάβαση και να προσθέσετε είτε μία συνθήκη από το Condition Toolbar, είτε ένα συνδυασμό συνθηκών, προσθέτοντας ένα Condition Group από το ConditionGroup Toolbar.

8.12 Error Code RS11

Περιγραφή: Η εντολή περιέχει μόνο μία συμπεριφορά, η οποία αφορά την απόσταση του παίκτη από τους bonus πόντους της πίστας. Αν όμως κατά την εκτέλεση της εντολής πάψουν να υπάρχουν διαθέσιμα μπόνους στην πίστα η εντολή δε θα μπορεί να εκτελεστεί σωστά. Πρέπει λοιπόν να προστεθεί μία μετάβαση που να περιλαμβάνει απόκλειστικά τη σύνθηκη UNTAKEN_BONUS = 0 και να έχει ως στόχο μία από τις εντολές Wander ή Go for points αν σχεδιάζετε στρατηγική για Pacman ή Wander/Capture Pacman περίπτωση που σχεδιάζετε στρατηγική για το φάντασμα.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, πρέπει να προσθέσετε μία μετάβαση (Transition) από το Transition Toolbar. Σε περίπτωση που σχεδιάζετε στρατηγική για το pacman, η μετάβαση πρέπει να ξεκινά από την εντολή με το πρόβλημα και να κατευθύνεται σε μία εντολή Wander ή Go for Points, ενώ αν σχεδιάζετε στρατηγική για το φάντασμα σε μία εντολή Wander ή Capture Pacman. Έπειτα, κάνετε διπλό κλικ στη μετάβαση που μόλις δημιουργήσατε, και προσθέστε μία συνθήκη τύπου Equal από το Condition Toolbar. Συνεχίζοντας, προσθέστε δύο τελεστές, έναν Game Variable και έναν Value, ώστε να σχηματίσετε τη συνθήκη UNTAKEN_BONUS = 0.

8.13 Error Code S2

Περιγραφή: Μία εντολή Start πρέπει να έχει τουλάχιστον μία μετάβαση (Transition) προς κάποια άλλη εντολή

Επιδιόρθωση: Εάν δεν υπάρχει ήδη, προσθέστε τουλάχιστον μία επιπλέον εντολή στο διάγραμμα και στην συνέχεια προσθέστε μία μετάβαση από την εντολή Start προς μία οποιαδήποτε άλλη εντολή.

8.14 Error Code S3

Περιγραφή: Μία εντολή Start δεν μπορεί να διαθέτει μετάβαση προς μία εντολή χρήσης bonus (Pacman/Ghost Immobilization, Multiply Points ή End Round).

Επιδιόρθωση: Εντοπίστε την μετάβαση (Transition) η οποία αρχίζει από την εντολή Start και καταλήγει σε κάποια εντολή χρήσης bonus. Επιλέξτε το βέλος της εν λόγω μετάβασης και διαγράψτε το (delete).

8.15 Error Code BA1

Περιγραφή: Μία εντολή Go for bonus θα πρέπει πάντα να διαθέτει μία μετάβαση (Transition), η οποία να συμπεριλαμβάνει την εντολή “UNTAKEN_BONUS_CARDS = 0" ή την “UNTAKEN_BONUS = 0" προς μία άλλη εντολή Wander, Capture Pacman ή Gor for points.

Προσοχή, στην περίπτωση που σχεδιάζετε στρατηγική για τον Pacman θα πρέπει η εντολή-στόχος της συγκεκριμένης μετάβασης, να είναι μία εντολή χρήσης bonus, Go for points ή μία εντολή Wander. Εάν η στρατηγικη που σχεδιάζετε αφορά το Ghost, τότε η εντολή στην οποία καταλήγει η συγκεκριμένη μετάβαση μπορεί να είναι εντολή χρήσης bonus, εντολή Wander ή εντολή Capture Pacman.

Επιδιόρθωση: Υπάρχουν δύο πιθανοί τρόποι να επιλύσετε το σφάλμα.

  • Ο πρώτος είναι να εντοπίσετε την εντολή η οποία προκαλεί το σφάλμα και να κατασκευάσετε μία νέα μετάβαση από την συγκεκριμένη εντολή προς μία άλλη εντολή-στόχο. Η εντολή-στόχος πρέπει να έιναι εντολή χρήσης Bonus, Go for points ή εντολή Wander στην περίπτωση του Pacman. Αντίθετα για το φάντασμα, η εντολή-στόχος μπορεί να είναι εντολη Capture Pacman, Wander ή χρήσης Bonus. Εάν δεν υπάρχει ήδη μία κατάλληλη εντολή για να ορίσετε την μετάβαση προς αυτήν, τότε θα πρέπει να δημιουργήσετε μία νέα.
  • Διαφορετικά, επιλέξτε μία από τις υπάρχουσες μεταβάσεις που έχετε δημιουργήσει και τροποποιήστε την κατάλληλα, ώστε να περιέχει μία από τις εντολές “UNTAKEN_BONUS_CARDS = 0" ή την “UNTAKEN_BONUS = 0".

8.16 Error Code SM1

Περιγραφή: Μία εντολή Multiply Points πρέπει να διαθέτει τουλάχιστον μία μετάβαση προς κάποια άλλη εντολή

Επιδιόρθωση: Προσθέστε μία μετάβαση από την εντολή MultiplyPoints προς μία οποιαδήποτε άλλη εντολή.

8.17 Error Code SM2.n

Περιγραφή: Αν μια εντολή Multiply Points δε διαθέτει κάποια μετάβαση χωρίς συνθήκη σε εντολή που δεν αφορά χρήση μπόνους, πρέπει να διαθέτει μία μετάβαση, η οποια θα περιέχει μόνο τη συνθήκη “MY_BONUS < n", και δε θα καταλήγει σε εντολή χρήσης μπόνους. To n συμβολίζει τον αριθμό με τον οποίο θα πολλαπλασιαστούν οι πόντοι (πχ αν n = 2 ,θέλουμε διπλασιασμό των πόντων).

Επιδιόρθωση: Εντοπίστε την εντολή MultiplyPoints που προκαλεί το σφάλμα. Ανάλογα με την στρατηγική που θέλετε να αναπτύξετε μπορείτε να δημιουργήσετε ένα Transition που δε θα καταλήγει σε εντολή χρήσης μπόνους, είτε με μοναδική συνθήκη “MY_BONUS < n " είτε χωρίς καμία συνθήκη.

8.18 Error Code EM1

Περιγραφή: Μία εντολή Pacman/Ghost Immobilization πρέπει να διαθέτει τουλάχιστον μία μετάβαση προς κάποια άλλη εντολή

Επιδιόρθωση: Προσθέστε μία μετάβαση από την εντολή Pacman/Ghost Immobilization προς μία οποιαδήποτε άλλη εντολή.

8.19 Error Code EM2.n

Περιγραφή: Αν μια εντολή Pacman/Ghost Immobilization δε διαθέτει κάποια μετάβαση χωρίς συνθήκη σε εντολή που δεν αφορά χρήση μπόνους, πρέπει να διαθέτει μία μετάβαση, η οποια θα περιέχει μόνο τη συνθήκη “MY_BONUS < n", και δε θα καταλήγει σε εντολή χρήσης μπόνους. To n αφορά την επιλογή σας όσον αφορά τον χρόνο της ακινητοποίησης (πχ αν έχετε επιλέξει Type = x2 το n = 2).

Επιδιόρθωση: Εντοπίστε την εντολή Pacman/Ghost Immobilization που προκαλεί το σφάλμα. Ανάλογα με την στρατηγική που θέλετε να αναπτύξετε μπορείτε να δημιουργήσετε ένα Transition που δε θα καταλήγει σε εντολή χρήσης μπόνους, είτε με μοναδική συνθήκη “MY_BONUS < n" είτε χωρίς καμία συνθήκη.

8.20 Error Code ER1

Περιγραφή: Μία συμπεριφορά Number of Escape Routes έχει ένα χαρακτηριστικό με το όνομα Search Depth. Η τιμή που θα λάβει το αντίστοιχο χαρακτηριστικό (το Search Depth) πρέπει να είναι θετική (αυστηρά > 0).

Επιδιόρθωση: Επιλέξτε την συμπεριφορά που προκαλεί το σφάλμα και θα εμφανιστούν στο μενού στο κάτω μέρος της οθόνης (στην καρτέλα Properties) οι τιμές των χαρακτηριστικών της. Στο πεδίο με όνομα Search Depth θέστε μία θετική τιμή (αυστηρά > 0). Το σφάλμα έχει πλέον αποκατασταθεί.

8.21 Error Code ER2

Περιγραφή: Η συμπερφιρά Number of Escape Routes περιέχει τη μεταβλητή Search Depth για τη οποία έχει τεθεί μέγιστη δυνατή τιμή 5.

Επιδιόρθωση: Εντοπίστε τη συμπεριφορά Number of Escape Routes η οποία προκαλεί το σφάλμα και τροποποιήστε την τιμή της μεταβλητής Search Depth εντός του ορίου 0-6

8.22 Error Code CG1

Περιγραφή: Ένα Condition Group που έχει ως Evaluation Type το XOR θα πρέπει να περιέχει ακριβώς δύο συνθήκες/Condition Groups ή μία συνθήκη και ένα Condition Group. Σε κάθε περίπτωση πρέπει να περιέχει ακριβώς δύο στοιχεία.

Επιδιόρθωση: Διαγράψτε ή προσθέστε Conditions ή Condition Groups προκειμένου τα στοιχεία που περιέχονται μέσα στο συγκεκριμένο ConditionGroup να είναι δύο.

8.23 Error Code CG2

Περιγραφή: Ένα Condition Group που έχει ως Evaluation Type το NOT θα πρέπει να περιέχει ακριβώς μία συνθήκη, ή ένα Condition Group.

Επιδιόρθωση: Διαγράψτε ή προσθέστε μία/πολλές συνθήκες ή ConditionGroups προκειμένου το ConditionGroup να περιέχει ένα μόνο Condition/ConditionGroup.

8.24 Error Code CG3

Περιγραφή: Ένα Condition Group που έχει ως Evaluation Type το AND ή το OR θα πρέπει να περιέχει τουλάχιστον μία συνθήκη, ή τουλάχιστον δύο Condition Groups, ή τουλάχιστον μία συνθήκη και ένα ConditionGroup.

Επιδιόρθωση: Προσθέστε όσες συνθήκες (Conditions) ή Condition Groups απαιτούνται προκειμένου τα περιεχόμενα του συγκεκριμένου ConditionGroup να έιναι τουλάχιστον δύο.

8.25 Error Code CD1

Περιγραφή: Μία συνθήκη (Condition) δεν μπορεί να κάνει σύγκριση μεταξύ δύο αριθμητικών τιμών (Value). Για τον λόγο αυτό ένα Condition δεν πρέπει να έχει δύο τελεστές τύπου Value.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, επιλέξτε έναν από τους δύο αριθμητικούς τελεστές (Value) και διαγράψτε τον (delete). Στην θέση του προσθέστε έναν τελεστή Game Variable από το Operand Toolbar.

8.26 Error Code CD2

Περιγραφή: Μία συνθήκη (Condition) δεν έχει νόημα να κάνει σύγκριση μεταξύ δύο Game Variable τα οποία έχουν τον ίδιο τύπο μεταβλητής (Variable). Για τον λόγο αυτό ένα Condition δεν πρέπει να έχει δύο τελεστές GameVariable με την ίδια τιμή στο πεδίο Variable.

Επιδιόρθωση: Προκειμένου να διορθωθεί το σφάλμα, επιλέξτε τον έναν από τους δύο τελεστές και είτε αλλάξτε τον τύπο μεταβλητής (Variable) του (πχ από TIME σε MY_BONUS) είτε διαγράξτε τον. Αν διαγράψετε τον τελεστή, στην θέση του πρέπει να ορίσετε έναν αριθμητικό τελεστή (Value).

8.27 Error Code CD3

Περιγραφή: Μία συνθήκη (Condition) η οποία περιέχει έναν τελεστή με τύπο μεταβλητής TIME δεν έχει νόημα να συγκρίνει αυτόν τον τελεστή με οτιδήποτε άλλο πέραν μιας αριθμητικής τιμής (Value). Για τον λόγο αυτόν, αν μια συνθήκη περιλαμβάνει τελεστή με Variable = TIME, τότε υποχρεωτικά ο άλλος τελεστής πρέπει να έιναι τύπου Value και η τιμή του να είναι εντός των ορίων 0.0-120.0 sec.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι τύπου Game Variable τότε πρέπει να τον διαγράψετε (delete) και στην συνέχεια να προσθέσετε στην θέση του έναν τελεστή τύπου Value με θετική τιμή. Εάν πάλι, ο άλλος τελεστής έιναι ήδη τύπου Value μεταβάλετε την τιμή του ώστε να ισχύει “0.0 <= Value <= 120.0".

8.28 Error Code CD4

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αναφέρεται στους πόντους του παίκτη σας, δεν έχει νόημα να συγκρίνεται με άλλου τύπου μεταβλητές. Για τον λόγο αυτό, αν μία συνθήκη περιέχει έναν τελεστή με Variable = MY_POINTS, τότε ο άλλος τελεστής πρέπει να είναι είτε μία μη αρνητική τιμή (Value), είτε ένας τελεστής με μεταβλητή τύπου (Variable) ίση με OPP_POINTS, ή UNTAKEN_POINTS.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί θετική (αυστηρά μεγαλύτερη του 0). Εάν πάλι, ο άλλος τελεστής είναι τύπου Variable τότε θα πρέπει να θέσετε την μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές OPP_POINTS ή UNTAKEN_POINTS.

8.29 Error Code CD5

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αναφέρεται στους πόντους του αντιπάλου, δεν έχει νόημα να συγκρίνεται με άλλου τύπου μεταβλητή. Για τον λόγο αυτό, αν μία συνθήκη περιέχει έναν τελεστή με Variable = OPP_POINTS, τότε ο άλλος τελεστής πρέπει να είναι είτε μία μη αρνητική τιμή (Value), είτε ένας τελεστής με μεταβλητή τύπου (Variable) ίση με MY_POINTS, ή UNTAKEN_POINTS.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί μη αρνητική. Εάν πάλι, ο άλλος τελεστής είναι τύπου GameVariable τότε θα πρέπει να θέσετε τη μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές MY_POINTS ή UNTAKEN_POINTS.

8.30 Error Code CD6

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αναφέρεται στο bonus του παίχτη σας, δεν έχει νόημα να συγκρίνεται με άλλου τύπου μεταβλητή. Για τον λόγο αυτό, αν μία συνθήκη περιέχει έναν τελεστή με Variable = MY_BONUS, τότε ο άλλος τελεστής πρέπει να είναι είτε μία μη αρνητική τιμή (Value), είτε ένας τελεστής με μεταβλητή τύπου (Variable) ίση με OPP_BONUS, ή UNTAKEN_BONUS.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί θετική (αυστηρά μεγαλύτερη του 0). Εάν πάλι, ο άλλος τελεστής είναι τύπου Variable τότε θα πρέπει να θέσετε την μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές OPP_BONUS ή UNTAKEN_BONUS.

8.31 Error Code CD7

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αναφέρεται στο bonus του αντιπάλου, δεν έχει νόημα να συγκρίνεται με άλλου τύπου μεταβλητή. Για τον λόγο αυτό, αν μία συνθήκη περιέχει έναν τελεστή με Variable = OPP_BONUS, τότε ο άλλος τελεστής πρέπει να είναι είτε μία μη αρνητική τιμή (Value), είτε ένας τελεστής με μεταβλητή τύπου (Variable) ίση με MY_BONUS, ή UNTAKEN_BONUS.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί μη αρνητική. Εάν πάλι, ο άλλος τελεστής είναι τύπου GameVariable τότε θα πρέπει να θέσετε την μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές MY_BONUS ή UNTAKEN_BONUS.

8.32 Error Code CD8

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αναφέρεται στο πλήθος των κόμβων της πίστας που έχουν ακόμη πόντους, δεν έχει νόημα να συγκρίνεται με άλλου τύπου μεταβλητές ή αρνητικές τιμές. Για τον λόγο αυτό όταν η συνθήκη περιέχει τελεστή, του οποίου η μεταβλητή τύπου (Variable) είναι ίση με UNTAKEN_POINTS_CARDS θα πρέπει ο άλλος τελεστής να είναι μία μη αρνητική τιμή (Value).

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί μη αρνητική καθώς και να επιλέξετε μία μη αρνητική τιμή. Εάν πάλι, ο άλλος τελεστής είναι τύπου GameVariable τότε θα πρέπει να τον διαγράψετε και στην θέση του να προσθέσετε έναν αριθμητικό τελεστή (Value) με θετική τιμή.

8.33 Error Code CD9

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αναφέρεται στο πλήθος των πόντων που έχουν απομείνει στην πίστα, έχει νόημα να συγκριθεί μόνο με μια μη αρνητική τιμή, τους πόντους του παίκτη σας ή του αντιπάλου. Για τον λόγο αυτό κάθε συνθήκη που περιέχει τελεστή με μεταβλητή τύπου (Variable) ίση με UNTAKEN_POINTS θα πρέπει να έχει ως δεύτερο τελεστή έναν αριθμητικό τελεστή (Value) με μη αρνητική τιμή, ή έναν τελεστή τύπου Game Variable, του οποίου η μεταβλητή τύπου (Variable) είναι ίση με MY_POINTS ή OPP_POINTS.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί μη αρνητική. Εάν πάλι, ο άλλος τελεστής είναι τύπου GameVariable τότε θα πρέπει να θέσετε την μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές MY_POINTS ή OPP_POINTS.

8.34 Error Code CD10

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αναφέρεται στο πλήθος των κόμβων με μπόνους που έχουν απομείνει στην πίστα, έχει νόημα να συγκριθεί μόνο με έναν τελεστή με μια αριθμητική τιμή, τα bonus του παίκτη σας ή του αντιπάλου. Για τον λόγο αυτό κάθε συνθήκη που περιέχει τελεστή με μεταβλητή τύπου (Variable) ίση με UNTAKEN_BONUS θα πρέπει να έχει ως δεύτερο τελεστή έναν αριθμητικό τελεστή (Value) με μη αρνητική τιμή, ή έναν τελεστή τύπου Game Variable, του οποίου η μεταβλητή τύπου (Variable) είναι ίση με MY_BONUS ή OPP_BONUS.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί μη αρνητική. Εάν πάλι, ο άλλος τελεστής είναι τύπου GameVariable τότε θα πρέπει να θέσετε την μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές MY_BONUS ή OPP_BONUS.

8.35 Error Code CD11

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αφορά απόσταση από τον αντίπαλο, θα πρέπει να συγκρίνεται με αριθμητική τιμή ή τελεστές που αφορουν απόσταση. Για τον λόγο αυτό κάθε συνθήκη που περιέχει τελεστή με Variable = DIST_TO_OPP θα πρέπει να περιέχει ως δεύτερο τελεστή μία αριθμητική τιμή (Value) με μη αρνητική τιμή, ή έναν τελεστή Game Variable με μεταβλητή τύπου (Variable) ίση με DIST_TO_CLOSEST_POINTS, DIST_TO_CLOSEST_BONUS ή DIST_TO_MOST_POINTS.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί μη αρνητική. Εάν πάλι, ο άλλος τελεστής είναι τύπου GameVariable τότε θα πρέπει να θέσετε την μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές DIST_TO_CLOSEST_POINTS, DIST_TO_CLOSEST_BONUS ή DIST_TO_MOST_POINTS.

8.36 Error Code CD12

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αφορά απόσταση από τον κοντινότερο κόμβο με πόντους, θα πρέπει να συγκρίνεται με αριθμητική τιμή ή τελεστές που αφορουν απόσταση. Για τον λόγο αυτό κάθε συνθήκη που περιέχει τελεστή με Variable = DIST_TO_CLOSEST_POINTS θα πρέπει να περιέχει ως δεύτερο τελεστή μία αριθμητική τιμή (Value) με μη αρνητική τιμή, ή έναν τελεστή Game Variable με μεταβλητή τύπου (Variable) ίση με DIST_TO_OPP, DIST_TO_CLOSEST_BONUS ή DIST_TO_MOST_POINTS.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί μη αρνητική. Εάν πάλι, ο άλλος τελεστής είναι τύπου GameVariable τότε θα πρέπει να θέσετε την μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές DIST_TO_OPP, DIST_TO_MOST_POINTS ή DIST_TO_CLOSEST_BONUS.

8.37 Error Code CD13

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αφορά απόσταση από τον κοντινότερο κόμβο με bonus, θα πρέπει να συγκρίνεται με αριθμητική τιμή ή τελεστές που αφορουν απόσταση. Για τον λόγο αυτό κάθε συνθήκη που περιέχει τελεστή με Variable = DIST_TO_CLOSEST_BONUS θα πρέπει να περιέχει ως δεύτερο τελεστή μία αριθμητική τιμή (Value) με μη αρνητική τιμή, ή έναν τελεστή Game Variable με μεταβλητή τύπου (Variable) ίση με DIST_TO_CLOSEST_POINTS, DIST_TO_MOST_POINTS ή DIST_TO_OPP.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί μη αρνητική. Εάν πάλι, ο άλλος τελεστής είναι τύπου GameVariable τότε θα πρέπει να θέσετε την μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές DIST_TO_CLOSEST_POINTS, DIST_TO_MOST_POINTS ή DIST_TO_OPP.

8.38 Error Code CD14

Περιγραφή: Ο τελεστής μιας συνθήκης (Condition), ο οποίος αφορά απόσταση από τον κόμβο με τους περισσότερους πόντους, θα πρέπει να συγκρίνεται με αριθμητική τιμή ή τελεστές που αφορουν απόσταση. Για τον λόγο αυτό κάθε συνθήκη που περιέχει τελεστή με Variable = DIST_TO_MOST_POINTS θα πρέπει να περιέχει ως δεύτερο τελεστή μία αριθμητική τιμή (Value) με μη αρνητική τιμή, ή έναν τελεστή Game Variable με μεταβλητή τύπου (Variable) ίση με DIST_TO_CLOSEST_POINTS, DIST_TO_CLOSEST_BONUS ή DIST_TO_OPP.

Επιδιόρθωση: Εάν ο άλλος τελεστής είναι αριθμητική τιμή (Value) τότε θα πρέπει να μεταβάλετε την τιμή του, ώστε αυτή να καταστεί μη αρνητική. Εάν πάλι, ο άλλος τελεστής είναι τύπου GameVariable τότε θα πρέπει να θέσετε την μεταβλητή τύπου (Variable) του τελεστή, ίση με μία από τις επιλογές DIST_TO_CLOSEST_POINTS, DIST_TO_OPP ή DIST_TO_CLOSEST_BONUS.

8.39 Error Code CD15

Περιγραφή: Μία συνθήκη (Condition) ορίζεται ως LEFT_OPERAND <'operator'> RIGHT_OPERAND. Δεν είναι λοιπόν δυνατόν να υπάρξει συνθήκη η οποία να έχει δύο αριστερούς ή δύο δεξιούς τελεστές (operands).

Επιδιόρθωση: Επιλέξτε τον έναν από τους δύο τελεστές της συνθήκης στην οποία εμφανίζεται το σφάλμα. Μετά την επιλογή του, εμφανίζεται στην καρτέλα ιδιότητες η τιμή Type. Αν η τιμή του πεδίου είναι LEFT αλλάξτε την σε RIGHT και αντίστροφα.

8.40 Error Code CD16

Περιγραφή: Μία συνθήκη (Condition) η οποία περιλαμβάνει τη μεταβλητή του παιχνιδιού IS_OPP_FROZEN πρέπει να είναι τύπου “EQUAL" ή “ΝΟΤ EQUAL".

Επιδιόρθωση: Επιλέξτε τη συνθήκη στην οποία εμφανίζεται το σφάλμα. Μετά την επιλογή της, εμφανίζεται στην καρτέλα ιδιότητες η τιμή Operator. Αλλάξτε την τιμή στο πεδίο αυτό, ώστε να είναι “EQUAL" ή “NOT EQUAL" .

8.41 Error Code CD17

Περιγραφή: Μία συνθήκη (Condition) η οποία περιλαμβάνει τη μεταβλητή του παιχνιδιού IS_OPP_FROZEN πρέπει να συγκρίνεται μόνο με μία τιμή Value, 0.0 ή 1.0. Η τιμή 0.0 αντιστοιχεί στην περίπτωση που ο αντίπαλος δεν είναι ακινητοποιημένος, ενώ η τιμή 1.0 υποδηλώνει την ακινητοποίηση του.

Επιδιόρθωση: Επιλέξτε τη συνθήκη στην οποία εμφανίζεται το σφάλμα. Σε περίπτωση που συγκρίνετε στη συνθήκη αυτή τη μεταβλητή IS_OPP_FROZEN με μία άλλη μεταβλητή του παιχνιδού, τότε διαγράψτε την άλλη μεταβλητή και προσθέστε μία τιμή (Value), με την τιμή 0.0 ή 1.0. Διαφορετικά, εάν έχετε ήδη μία τιμή Value στην οποία έχετε θέσει τιμή διαφορετική από 0.0 ή 1.0, τροποποιήστε την, ώστε να έχει μία από τις δύο τιμές.

8.42 Error Code IVR

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

Επιδιόρθωση: Πατήστε διπλό κλικ για να ανοίξει το διάγραμμα συνθηκών της εν λόγω μετάβασης. Στο νέο διάγραμμα που έχετε ανοίξει κάντε εκ νέου validate και διορθώστε τα λάθη που εμφανίζονται, ακολουθώντας τις οδηγίες επιδιόρθωσης, ανάλογα με τους κωδικούς σφαλμάτων που εμφανίζονται.

8.43 Error Code ELT-RS10

Περιγραφή: Μια εντολή τύπου Wander, EnemyCapture, Go for bonus, ή Go for points δεν μπορεί να έχει καμία μετάβαση που έχει συνθήκες οι οποίες αληθεύουν για οποιαδήποτε τιμή των μεταβλητών (GameVariable) τους (λογικό λάθος).

Επιδιόρθωση: Εντοπίστε την μετάβαση (ή τις μεταβάσεις) της οποίας η συνθήκη αληθεύει σε κάθε περίπτωση, ανεξαρτήτως από τις τιμές που παίρνουν οι μεταβλητές τους. Μεταβάλετε τις συνθήκες αυτής της μετάβασης (ή μεταβάσεων) ώστε αυτό να μην συμβαίνει.

8.44 Error Code ELT-RS2

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

Επιδιόρθωση: Εντοπίστε την μετάβαση (ή τις μεταβάσεις) της οποίας η συνθήκη αληθεύει σε κάθε περίπτωση, ανεξαρτήτως από τις τιμές που παίρνουν οι μεταβλητές τους. Μεταβάλετε τις συνθήκες αυτής της μετάβασης (ή μεταβάσεων) ώστε αυτό να μην συμβαίνει.

8.45 Error Code ELC-RS10

Περιγραφή: Μια εντολή τύπου Wander, EnemyCapture, Go for bonus, ή Go for points δεν μπορεί να έχει καμία μετάβαση της οποία οι συνθήκες δεν αληθεύουν για οποιαδήποτε τιμή μεταβλητών (GameVariable) τους (λογικό λάθος).

Επιδιόρθωση: Εντοπίστε την μετάβαση (ή τις μεταβάσεις) της οποίας η συνθήκη είναι ψευδής σε κάθε περίπτωση, ανεξαρτήτως από τις τιμές που παίρνουν οι μεταβλητές τους. Μεταβάλετε τις συνθήκες αυτής της μετάβασης (ή μεταβάσεων) ώστε αυτό να μην συμβαίνει.

8.46 Error Code ELC-RS2

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

Επιδιόρθωση: Εντοπίστε την μετάβαση (ή τις μεταβάσεις) της οποίας η συνθήκη έιναι ψευδής σε κάθε περίπτωση, ανεξαρτήτως από τις τιμές που παίρνουν οι μεταβλητές τους. Μεταβάλετε τις συνθήκες αυτής της μετάβασης (ή μεταβάσεων) ώστε αυτό να μην συμβαίνει.

8.47 Error Code RS14

Περιγραφή: Η εντολή τύπου Bonus Use (Pacman/Ghost Immobilization, Multiply Points ή End Round) που προκαλεί το σφάλμα, έχει μία η περισσότερες μεταβάσεις (Transition), των οποίων οι συνθήκες δεν ικανοποιούνται ποτέ. Αυτό δεν επιτρέπται για εντολές τύπου Bonus Use.

Επιδιόρθωση: Εντοπίστε την μετάβαση (ή τις μεταβάσεις) της οποίας η συνθήκη έιναι ψευδής σε κάθε περίπτωση, ανεξαρτήτως από τις τιμές που παίρνουν οι μεταβλητές τους. Μεταβάλετε τις συνθήκες αυτής της μετάβασης (ή μεταβάσεων) ώστε αυτό να μην συμβαίνει.

8.48 Error Code RS15

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

Επιδιόρθωση: Εντοπίστε τις μεταβάσεις των οποίων οι συνθήκες είναι εννοιολογικά ίδιες και μεταβάλλεται τις συνθήκες μίας εξ αυτών.

8.49 Error Code TRS1

Περιγραφή: Μία μετάβαση(Transition) είναι δυνατό να περιέχει είτε μόνο μία συνθήκη είτε μόνο ένα group από συνθήκες.

Επιδιόρθωση: Εντοπίστε τη μετάβαση η οποία περιέχει ένα group από συνθήκες και μία συνθήκη εκτός αυτού και τροποποιήστε την κατάλληλα, σβήνοντας είτε το ένα είτε το άλλο, ανάλογα με τη στρατγική που επιθυμείτε να ακολουθήσετε.

9 Επεξήγηση προειδοποιήσεων

9.1 Warning Code PA5

Περιγραφή: Έχετε επιλέξει μία εντολή χρήσης bonus, χωρίς ωστόσο να υπάρχει εντολή για συλλογή bonus. Στο διάγραμμα πρέπει να προστεθεί μία εντολή Go for bonus ή να σβήσετε την εντολή χρήσης bonus. Διαφορετικά, η χρήση μπόνους θα καταστεί δυνατή μόνο εάν τυχαία ο παίκτης βρεθεί σε κόμβο που έχει μπόνους.

Επιδιόρθωση: Προκειμένου να διορθωθεί το πιθανό αυτό σφάλμα, εάν επιθυμείτε να διατηρήσετε την εντολή χρήσης bonus, τότε προσθέστε μία εντολή Go for bonus από το Robot State Toolbar. Διαφορετικά, μπορείτε να επιλέξετε και να διαγράψετε την εντολή χρήσης bonus (delete).

9.1 Warning Code RS13

Περιγραφή: Η εντολή στην οποία εμφανίζεται αυτό το σφάλμα έχει μία ή περισσότερες μεταβάσεις (Transitions) των οποίων οι συνθήκες πληρούνται πάντα (ανεξαρτήτως των μεταβλητών που εμφανίζονται εντός των συνθηκών).

Επιδιόρθωση: Πιθανότατα να χρησιμοποιείτε συνθήκες εντός ενός Transition για να προσδιορίσετε πότε αυτό θα συμβεί (όταν οι συνθήκες πληρούνται). Δεν έχει, λοιπόν, νόημα οι συνθήκες να έιναι πάντα αληθείς. Συνεπώς, σας προτείνουμε να εντοπισετε και στην συνέχεια να μεταβάλετε τις συνθήκες εντός μίας (ή περισσότερων) μεταβάσεων προκειμένου να μην έιναι πάντα αληθείς.

10 Tips & Tricks

10.1 Εξαφάνιση/Εμφάνιση της καρτέλας Properties και Problems

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

10.2 Εμφάνιση μηνύματος κατά την καταχώρηση τιμής Value

Περιγραφή: Το σύστημα έχει υλοποιηθεί με τρόπο, ώστε να δέχεται δεκαδικές τιμές στον τελεστή Value. Εάν προσπαθήσετε να καταχωρήσετε ακέραια τιμή, είναι πιθανό να εμφανιστεί το παρακάτω μήνυμα στην οθόνη σας.

Τότε, κάνετε κλικ στην επιλογή “Use new value from the model" και συνεχίστε κανονικά τη σχεδίαση της στρατηγικής σας.

10.3 Επιλογή διαφορετικής εντολής-στόχου σε ένα Transition

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

10.4 Επεξήγηση του μεγέθους της πίστας

Περιγραφή: Το μέγεθος της πίστας δεν είναι προκαθορισμένο. Για το ακριβές μέγεθος αυτή ρωτήστε τους διαιτητές των αγώνων. Πάντως συνήθως είναι τάξης μεγέθους 6 x 10 κόμβων. Οι αποστάσεις μεταξύ των κόμβων είναι πάντοτε σταθερές, ωστόσο ένας κόμβος μπορεί να μην ενώνεται με όλους τους διπλανούς του. Αυτό σημαίνει πως θα πρέπει να λάβετε υπόψη σας τις διαδρομές που μπορεί να ακολουθήσει το ρομπότ μέσω των γραμμών που εννώνουν τους κόμβους. Μια ενδεικτική πίστα φαίνεται στην παρακάτω εικόνα.

Προσοχή, όταν σχεδιάζετε τη στρατηγική σας, να θυμάστε πως η στροφή στον ίδιο κόμβο θεωρείται κίνηση του ρομπότ!

10.5 Αντιγραφή-Επικόλληση

Περιγραφή: Έχετε δημιουργήσει ορισμένες εντολές (States) ή συνδυασμούς συνθηκών (Condition Groups) και θέλετε να τα χρησιμοποιήσετε ξανά μέσα στη στρατηγική σας; Ο πιο γρήγορος τροπος για το να κάνετε αυτό είναι φυσικά μέσω της διαδικασίας copy-paste. Το πρώτο βήμα είναι να επιλέξετε τα στοιχεία που επιθυμείτε να αντιγράψετε, κρατώντας πατημένο το πλήκτρο CTR. Έπειτα πατήστε τα πλήκτρα CTR+C και αφού κάνετε κλικ σε ένα κενό σημείο στο διάγραμμα (λευκό background), πατήστε τα πλήκτρα CTR+V. Η αντιγραφή των στοιχείων θα έχει πλέον πραγματοποιηθεί.

Προσοχή:

  • Μέσω αυτής της διαδικασίας θα αντιγραφούν όλα εκείνα τα επιμέρους στοιχεία που αφορούν τα επιλεγμένα στοιχεία σας. Για παράδειγμα, εάν μία εντολή περιέχει μία μετάβαση, τότε αντιγράφοντας και επικολλώντας την εντολή, θα αναπαραχθεί αυτόματα και η μετάβαση της. Συνεπώς, πρέπει να προσέξετε πολύ ποια στοιχεία επιθυμείτε να κρατήσετε μετά την επικόλληση.
  • Εάν επιλέξετε πολλά στοιχεία, τότε κατά την επικόλληση όλα τα στοιχεία αναπαράγονται γραφικά το ένα πάνω στο άλλο. Θα πρέπει συνεπώς ακολούθως να τα τοποθετήσετε στις επιθυμητές θέσεις.
  • Η αντιγραφή – επικόλληση λειτουργεί κανονικά αποκλειστικά και μόνο σε μία στρατηγική. Δεν πρέπει σε καμία περίπτωση να αντιγράψετε στοιχεία από μία στρατηγική για τον Pacman σε στρατηγική για το φάντασμα και αντιστρόφως.

10.6 Διαδοχική Χρήση Bonus

Περιγραφή: Όπως έχει παρουσιαστεί παραπάνω οι εντολές χρήσης bonus δεν περιλαμβάνουν συμπεριφορές, καθώς εκτελούνται ακαριαία.

Εάν λοιπόν θέλετε να παραμείνετε σε μία εντολή χρήσης bonus όσο ικανοποιείται μία συνθήκη, τότε και μόνο τότε μπορείτε να προσθέσετε μία μετάβαση η οποία θα ξεκινά και θα καταλήγει στην ίδια εντολή. Μία τέτοια περίπτωση απεικονίζεται στην ακόλουθη εικόνα.

Προσοχή, σε αυτή την περίπτωση να μην παραλείψετε να θέσετε σωστές συνθήκες ελέγχου, ώστε να μη χρησιμοποιήσετε καταλάθος όλους τους bonus πόντους σας σε μία εντολή.