Page 135 - PC Master τ. 281

135
PC Master
Θέλετε να φτιάξετε το δικό σας παιχνίδι,
αλλά δεν ξέρετε από πού να αρχίσετε; Το AGS
είναι το τέλειο εργαλείο και ο Άλκης Πολυράκης
ο ιδανικός καθηγητής. Αν είστε επιμελείς και
δεν χάσετε μαθήματα, σύντομα θα μπορείτε να
καυχιέστε ότι είστε κaι εσείς ένας game developer!
το πλήκτρο Properties και βεβαιωνόμαστε
ότι η επιλογή Clickable στο τμήμα Design
είναι ορισμένη στο True. Σε διαφορετική
περίπτωση, ο χαρακτήρας μας θα είναι άυ-
λος και δεν θα μπορούμε να χρησιμοποιή-
σουμε κάποιον cursor επάνω του στη
διάρκεια του παιχνιδιού. Στη συνέχεια, πά-
ντα στο Project Grid, πατάμε το γνωστό
πλέον πλήκτρο των Events. Εδώ θα ορί-
σουμε τι ακριβώς θα συμβαίνει όποτε ο
παίκτης κάνει κλικ πάνω στον Chris. Ξεκι-
νάμε με την επιλογή Look at Character, η
οποία δημιουργεί τη συνάρτηση
cChris_Look(). Πληκτρολογούμε την περι-
γραφή που θέλουμε να μας δίνει το παι-
χνίδι όταν εξετάζουμε τον εαυτό μας:
Display(“Although you are having a bad
hair day, you look more or less
presentable.”);
Αν τρέξουμε το παιχνίδι πατώντας F5
και χρησιμοποιήσουμε το Look icon του
Verb Coin πάνω στον Chris, θα πάρουμε
την απάντηση που πληκτρολογήσαμε. Ευ-
θύς αμέσως όμως διαπιστώνουμε ότι μία
μόνο απάντηση για το σύνολο του παιχνι-
διού μπορεί να γίνει κουραστική. Μία λύ-
ση είναι να συγκροτήσουμε έναν αριθμό
περιγραφών, οι οποίες θα εμφανίζονται
τυχαία κάθε φορά. Πιέζουμε το Look at
Character ξανά και πληκτρολούμε τα
εξής:
int randdescr=Random(4);
if (randdescr==0) Display(“Although
you are having a bad hair day, you look
more or less presentable.”);
else if (randdescr==1) Display(“You are
Chris Bucketbird, a columnist at the
hair styling magazine Comb U Press.”);
else if (randdescr==2) {
Display(“You feel pretty and witty and
bright!”);
Display(“Unfortunately, this is hardly
what you look like.”);
}
else if (randdescr==3) Display(“You
need a mirror to do that.”);
else Display(“It’s not the eye of Sauron,
don’t abuse it!”);
Στην πρώτη γραμμή του κώδικά μας ορί-
ζουμε την ακέραια μεταβλητή randdescr.
Η εντολή Random, κάθε φορά που καλεί-
ται, επιστρέφει μία τιμή από 0 έως τον
αριθμό που περικλείουμε στην παρένθεση.
Στη συνέχεια, δίνουμε μία διαφορετική πε-
ριγραφή για καθεμία από τις πέντε τιμές
που μπορεί να πάρει η μεταβλητή μας. Πα-
ρατηρούμε ότι για την τιμή 2 έχουμε δύο
εντολές Display, κάτι που σημαίνει ότι
πρώτα θα εμφανιστεί η πρώτη και έπειτα η
δεύτερη. Προσοχή στις αγκύλες που χρη-
σιμοποιούμε για να περικλείσουμε περισ-
σότερες από μία γραμμές στο else if μας.
Αν θέλουμε, μπορούμε να τρέξουμε το
παιχνίδι για να βεβαιωθούμε ότι όλα λει-
τουργούν σωστά.
Πατάμε πάνω στην επιλογή Interact
Character, για να ορίσουμε μία αντίδραση
σε περίπτωση που ο Use cursor του Verb
Coin αγγίξει τον πρωταγωνιστή μας. Στην
function cChris_Interact() που δημιουργεί-
ται, γράφουμε το all-time classic:
cChris.Say(“Hands off!”);
Εδώ δεν επιλέξαμε μία απάντηση του
narrator, αλλά δώσαμε το λόγο στον ίδιο
τον Chris με την εντολή Say. Βέβαια με τις
ρυθμίσεις που έχουμε τη δεδομένη στιγμή,
οι δύο περιπτώσεις ταυτίζονται, έτσι ο
παίκτης δεν καταλαβαίνει διαφορά. Για να
μην εμφανίζεται η περιγραφή του narrator
ως speech, πηγαίνουμε στα General
Settings και θέτουμε το Text Output-
>Always display text as speech σε False.
Σειρά έχει η επιλογή Talk to character,
που δημιουργεί τη συνάρτηση
cChris_Talk(). Ας αφήσουμε και πάλι τον
Chris να μας τα πει:
cChris.Say(“Talking to myself soothes
me, but it’s rather embarrassing when
people notice.”);
Η ΑΛΛΗΛΕΠΙΔΡΑΣΗ INVENTORY
ΚΑΙ ΧΑΡΑΚΤΗΡΩΝ
Τέλος, απομένει να ορίσουμε τι θα γίνε-
ται στην περίπτωση που θα χρησιμοποιη-
θεί ένα αντικείμενο πάνω στον ήρωά μας.
Τα inventory items που έχουμε μέχρι στιγ-
μής είναι δύο: το iball που δημιουργήσαμε
εμείς και το iBagNickels που προϋπάρχει
στο template στο οποίο εργαζόμαστε. Πα-
τάμε πάνω στο Use inventory on charac-
ter, και στην cChris_UseInv() που προκύ-
πτει, γράφουμε:
if (cChris.ActiveInventory==iball)
Display(“No time to play, you have work
to do!”);
else if (cChris.ActiveInventory=
=iBagNickels) Display(“Swallowing the
nickels is not a good idea.”);
else Display(“You are already carrying
the %s.”,cChris.ActiveInventory.Name);
Προσέξτε ότι τη στιγμή της ενέργειας,
δεν μπορούμε να γνωρίζουμε ποιο αντι-
κείμενο χρησιμοποιείται και έτσι γράφου-
με τις παραπάνω συνθήκες ελέγχου για να
δώσουμε την κατάλληλη απάντηση. Επει-
δή αναμένεται να μαζέψουμε πολλά αντι-
κείμενα στο inventory μας στη διάρκεια
του PC Master Saga, είναι πρακτικά αδύ-
νατον να έχουμε διαφορετική απάντηση
για καθένα, γι’ αυτό καταλήγουμε με το
else, δηλαδή με αυτό που θα εμφανίζεται
αν το αντικείμενο είναι οποιοδήποτε άλλο
από αυτά που αναφέρουμε νωρίτερα. Πα-
ρατηρούμε ότι με τη string μεταβλητή %s
εμπεριέχουμε και το όνομα του αντικειμέ-
νου στην ατάκα του narrator. Για περισσό-
Χρησιμοποιώντας inventory items σε χαρακτήρα.