supposed to do with it?
Chris: Just put it against your ear.
Wait(100);
Ophelia: Oh my God! This... this changes
everything!
return
@1
Ophelia: It still sounds absolutely
insane, but...
Ophelia: I can’t simply ignore hard
evidence!
option-off 1
return
@2
Ophelia: Absolutely! Who else knows
about it?
Chris: Including you and me?
Ophelia: Yes.
Chris: Two.
Ophelia: Right. I guess we have a lot of
work to do then.
Chris: Whatever you do, don’t let the
other teachers suspect you.
option-on 3
return
@3
Ophelia: Lead the way.
stop
Προσοχή στο κενό πριν από την εντολή
Wait, διότι δηλώνει στο dialog script πως
ακολουθεί global εντολή.
ΠΡΟβΛΕΨΗ ΓΙΑ ΚΑΘΕ ΚΛΙΚ
ΠΑΝΩ ΣΤΟ ΧΑΡΑΚΤΗΡΑ
Είμαστε έτοιμοι να γράψουμε τα
interactions. Πατάμε το κουμπί Events
στο Project Grid της Ophelia, στη συνέ-
χεια σε αυτό που βρίσκεται δίπλα στη
φράση Look at character και στη συνάρ-
τηση cOphe_Look() που δημιουργείται
πληκτρολογούμε:
if (ShowOpheliaTheBall==false) Display
(“
Ophelia eyes you suspiciously.”);
else Display(“She returns your gaze
with obvious confidence.”);
Πατάμε το πλήκτρο που βρίσκεται δί-
πλα στο Interact character και στη συ-
νάρτηση cOphe_Interact() που δημιουρ-
γείται γράφουμε:
if (ShowOpheliaTheBall==false) Display
(“
You’re pretty sure she wouldn’t like
that.”);
else {
Display(“You give her a reassuring light
squeeze on the shoulder.”);
Display(“She smiles at you thinly.”);
}
Πατάμε το πλήκτρο που βρίσκεται δί-
πλα στο Talk to character και στη συνάρ-
τηση cOphe_Talk() που δημιουργείται πλη-
κτρολογούμε:
if (ShowOpheliaTheBall==false) {
cChris.Say(“Will you just listen to
me?”);
cOphe.Say(“I’ve heard enough. You
should seek professional help.”);
}
else cOphe.Say(“Just lead the way,
Chris.”);
Τέλος, πατάμε το πλήκτρο που βρίσκε-
ται δίπλα στο Use inventory on character
και στη συνάρτηση cOphe_UseInv() που
δημιουργείται πληκτρολογούμε:
if (ShowOpheliaTheBall==false) {
if (cChris.ActiveInventory==iball) {
cChris.Walk(cOphe.x-20, cOphe.y-20,
eBlock);
cChris.FaceCharacter(cOphe);
GiveScore(11);
ShowOpheliaTheBall=true;
dClaireAndJanitor.Start();
cOphe.FollowCharacter(cChris, 10, 40);
}
else cOphe.Say(“Sir, I have no interest
in your possessions.”);
}
else {
if (cChris.ActiveInventory==iball)
cOphe.Say(“I believe you already,
please don’t make me listen to that
horrible sound again!”);
else cOphe.Say(“No, hold on to it, you
look like you need it more.”);
}
Ας αναλύσουμε τον κώδικα που μόλις
γράψαμε. Όταν η μεταβλητή
ShowOpheliaTheBall είναι false, σημαίνει
ότι δεν έχουμε δείξει ακόμα την μπαλίτσα
στην Ophelia. Αν το αντικείμενο που κά-
ναμε use επάνω της δεν είναι η μπαλίτσα,
φροντίζουμε να δώσει την απάντηση ότι
δεν ενδιαφέρεται για τα υπάρχοντά μας.
Αν όμως είναι, τότε λαμβάνει χώρα η εξής
ακολουθία γεγονότων: Ο Chris πλησιάζει
στο σημείο στο οποίο βρίσκεται, την αντι-
κρίζει και ξεκινά ο διάλογος που γράψαμε
προηγουμένως, ενώ η μεταβλητή
ShowOpheliaTheBall γίνεται true και ο
παίκτης παίρνει 11 πόντους στο σκορ του.
Από τη στιγμή που ο διάλογος ολοκληρω-
θεί, η Ophelia θα ακολουθεί τον Chris
όπου πηγαίνει. Η δεύτερη παράμετρος
που βλέπετε στη συνάρτηση
FollowCharacter ορίζει την απόσταση σε
pixels στην οποία θα πλησιάζει ο χαρα-
κτήρας αυτόν που ακολουθεί, ενώ η τρίτη
μεταβλητή παίρνει τιμές από 0 έως 99 και
υποδηλώνει την προθυμία με την οποία
τον ακολουθεί. Όσο μικρότερη τιμή δώ-
σουμε, τόσο λιγότερο θα κοντοστέκεται η
Ophelia πριν ακολουθήσει τον Chris. Ση-
μειώστε ότι φροντίζουμε να γράψουμε και
αποκρίσεις για την περίπτωση που ο παί-
κτης επιχειρήσει να κάνει use αντικείμενα
πάνω της, αφού ο Chris κερδίσει την εμπι-
στοσύνη της.
PC
135
PC Master
ΔΕΚEΜβΡΙΟΣ 2012:
Αρχικοποίηση adventure game, δημιουργία δωματίου, ορισμός
hotspots.
ΙΑΝΟυAΡΙΟΣ 2013:
Έξοδοι δωματίων, hotspot interaction, συνθήκες ελέγχου, global
variables, αντικείμενα, inventory items.
ΦΕβΡΟυAΡΙΟΣ 2013:
Δημιουργία χαρακτήρων, walkable areas, scaling levels, walk-
behinds.
ΜΑΡΤΙΟΣ 2013:
Character interaction, αλληλεπίδραση inventory-χαρακτήρων, δημι-
ουργία διαλόγων.
ΑΠΡΙΛΙΟΣ 2013:
Global script, συναρτήσεις on_key_press(), dialog_request() και
unhandled_event(), διαχείριση room events.
ΜAΪΟΣ 2013:
Αλλαγή cursor σε Exit icon πάνω από έξοδο, room regions, συνάρτηση
repeatedly_execute, δημιουργία introduction και cutscenes.
IOYNIOΣ 2013:
User interface, δημιουργία menu bar με GUI buttons και πληροφορίες
σκορ & text variable.
IOYΛIOΣ 2013:
Μουσικά αρχεία, ηχητικά εφέ, πολλαπλά κανάλια ήχου, φωνές ηθοποιών.
ΑυΓΟυΣΤΟΣ 2013:
AGS Resources, modules, plugins, εισαγωγή και τροποποίηση ενός
module, Dialog Designer utility.
ΣΕΠΤΕΜβΡΙΟΣ 2013:
Σχεδιασμός GUI για εύκολο debugging και τεστάρισμα του
παιχνιδιού, εκμάθηση GUI components.
ΟΚΤΩβΡΙΟΣ 2013:
Κοντινή επισκόπηση και interaction με επιμέρους στοιχεία
ενός inventory item.
ΣΤΑ ΠΡΟΗΓΟΥΜΕΝΑ ΤΕΥΧΗ
To τετ-α-τετ στην αποθήκη.