εξυπηρετεί. Ονομάστε το Cockpit, κάντε
διπλό κλικ επάνω του και στη συνάρτηση
Button7_OnClick που θα δημιουργηθεί
πληκτρολογήστε:
player.ChangeView(18);
player.AddInventory(imirror);
player.AddInventory(isquirtgun);
player.AddInventory(itooth);
player.AddInventory(iducky);
ArticleDelivered=1;
cClaire.ChangeRoom(-1);
player.ChangeRoom(3);
player.x=100;
player.y=100;
gDeb.Visible=0;
Σώστε το παιχνίδι σας, εκτελέστε το και
βεβαιωθείτε πως πατώντας το κουμπί τα
πάντα εκτελούνται σωστά. Εννοείται πως
για να γίνει αυτό, θα πρέπει να υπάρχουν
οι παραπάνω υποθετικές μεταβλητές που
αναφέρουμε, δηλαδή το δωμάτιο, τα αντι-
κείμενα και η Global Variable ArticleDeliv-
ered. Ακόμα καλύτερα, μπορείτε να χρη-
σιμοποιήσετε μεταβλητές που έχετε ήδη
χρησιμοποιήσει στο PC Master’s Saga.
Η μέθοδος αυτή έχει ένα προφανές μει-
ονέκτημα: Κάθε φορά που θα θέλετε να
δοκιμάσετε κάτι διαφορετικό, θα πρέπει
να αλλάζετε τον κώδικά σας ανάλογα.
Επίσης, αν θέλετε να τεστάρετε πολλά
sections διαδοχικά, θα χρειαστεί να προ-
σθέσετε ισάριθμο αριθμό κουμπιών. Υπάρ-
χει πιο λειτουργικός τρόπος για να γίνουν
όλα αυτά, κι αυτός είναι να χρησιμοποιή-
σουμε text box αντί για button.
Όπως ακριβώς και προηγουμένως,
φτιάξτε ένα text box και label και προ-
σαρμόστε τα ανάλογα με τα χρώματα, τις
θέσεις και τις διαστάσεις που θέλετε. Κά-
ντε διπλό κλικ πάνω στο box και στη συ-
νάρτηση TextBox2_OnActivate που θα δη-
μιουργηθεί πληκτρολογήστε:
if (TextBox2.Text==”1”) {
player.ChangeView(18);
player.AddInventory(imirror);
player.AddInventory(isquirtgun);
player.AddInventory(itooth);
player.AddInventory(iducky);
ArticleDelivered=1;
cClaire.ChangeRoom(-1);
player.ChangeRoom(3);
player.x=100;
player.y=100;
TextBox2.Text=”“;
gDeb.Visible=0;
}
else if (TextBox2.Text==”2”) {
player.ChangeView(1);
player.AddInventory(ipuppet);
player.AddInventory(ibazooka);
LaundryDone=1;
player.ChangeRoom(16);
player.x=217;
player.y=80;
TextBox2.Text=”“;
gDeb.Visible=0;
}
else TextBox2.Text=”“;
Αυτό που κάνουμε ουσιαστικά είναι το
εξής: Ζητάμε από το χρήστη –εμάς δηλα-
δή, ή τον beta tester μας– να εισάγει
έναν αριθμό και αντιστοιχούμε μία σειρά
από εντολές σε κάθε έναν από τους πιθα-
νούς αριθμούς. Με αυτή τη μέθοδο, μπο-
ρούμε να εισάγουμε άπειρες διαφορετι-
κές περιπτώσεις και να τις δοκιμάζουμε
κατά το δοκούν. Την τελευταία πρόταση
τη βάζουμε για την περίπτωση που εισα-
χθεί κάτι διαφορετικό από τους πιθανούς
αριθμούς, ώστε σε περίπτωση λανθασμέ-
νης εισαγωγής να «καθαρίσει» το πεδίο
χωρίς όμως να κλείσει το GUI.
Αν επιχειρήσετε να εκτελέστε το παι-
χνίδι, θα διαπιστώσετε πως υπάρχει ένα
πρόβλημα. Οτιδήποτε πληκτρολογούμε,
εμφανίζεται και στα δύο text boxes. Αυτό
συμβαίνει διότι έχουμε τοποθετήσει δύο
text boxes στο ίδιο GUI, χωρίς να γνωρίζει
ο κώδικάς μας ποιο θέλουμε να είναι
ενεργό. Ως συνήθως, υπάρχουν πολλοί
τρόποι για να το διορθώσουμε αυτό. Θα
επιλέξουμε έναν που θα μας διδάξει μία
ακόμα λειτουργία.
Δημιουργούμε άλλο ένα κουμπί και του
δίνουμε ως Text τη λέξη Mood. Κάνουμε
διπλό κλικ επάνω του και στη συνάρτηση
Button7_OnClick που δημιουργείται πλη-
κτρολογούμε:
if (Button7.Text==”Section”) {
Button7.Text=”Mood”;
TextBox1.Enabled=true;
TextBox2.Enabled=false;
}
else {
Button7.Text=”Section”;
TextBox1.Enabled=false;
TextBox2.Enabled=true;
}
Τι κάνει λοιπόν αυτό το κουμπί; Όταν το
πατάμε, ελέγχει τι αναγράφεται πάνω του.
Αν αναγράφεται η λέξη Section, την αλλά-
ζει σε Mood, ενεργοποιεί το αντίστοιχο
text box και απενεργοποιεί το άλλο. Αντί-
στροφα, αν αναγράφεται η λέξη Mood την
αλλάζει σε Section και ενεργοποιεί/απε-
νεργοποιεί καταλλήλως. Βλέπουμε, λοι-
πόν, ότι το AGS μάς δίνει τη δυνατότητα
να αλλάζουμε ακόμα και την εμφάνιση
των κουμπιών μας όταν τα πατάμε.
Το επόμενο πράγμα που πρέπει να κά-
νουμε, είναι να βεβαιωθούμε πως όταν
ανοίγει το GUI μας, μόνο ένα από τα text
boxes θα είναι ενεργοποιημένο. Βρίσκου-
με ξανά το σημείο στο οποίο ανοίγαμε το
GUI μας στην on_key_press και αλλάζου-
με την εντολή μας ως εξής:
if ((game.debug_mode==1) &&
(
keycode==GetASCIINumber(CtrlW))) {
TextBox1.Enabled=true;
TextBox2.Enabled=false;
gDeb.Visible=1;
}
Εκτός από τη δημιουργία ενός εξαιρετι-
κά χρήσιμου Debug Panel, μάθαμε πώς
χειριζόμαστε τα διάφορα components
ενός GUI. Με τον ίδιο τρόπο, μπορείτε να
κατασκευάσετε ό,τι panels θέλετε, ανά-
λογα με το παιχνίδι που θέλετε να δημι-
ουργήσετε.
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.
ΣΤΑ ΠΡΟΗΓΟΥΜΕΝΑ ΤΕΥΧΗ
Έτσι φαίνεται το Debug GUI στο παιχνίδι μας.