φυλλο εργασιας 3

Download Report

Transcript φυλλο εργασιας 3

ΕΙΔΙΚΑ ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 03

Σε αυτό το ΦΕ θα μάθουμε πώς αναγνωρίζουμε αν είμαστε σε επαφή με κάποιον άλλο ηθοποιό (actor) και στη συνέχεια να τον εξαφανίζουμε από τον κόσμο (world) και πώς να κάνουμε τον κώδικά μας πιο ευανάγνωστο χρησιμοποιώντας μεθόδους. 1.

2.

Ανοίγουμε το σενάριο που δημιουργήσαμε στο ΦΕ02 Θα προσθέσουμε μία νέα κλάση που θα την ονομάσουμε

Worm

. Η κλάση

Worm

θα προέρχεται και αυτή από την κλάση

Αctor

. Δεξί κλικ στην κλάση

Actor

Επιλέγουμε

New Subclass

Τα ονόματα των κλάσεων έχουμε συμφωνήσει να ξεκινούν με κεφαλαίο γράμμα Στο πλαίσιο διαλόγου που εμφανίζεται γράφουμε το όνομα της κλάσης και επιλέγουμε για εικόνα τη “worm.png” Στη συνέχεια κλικ στο

Οκ

Βλέπουμε ότι η νέα κλάση προστέθηκε αλλά εμφανίζεται με πλάγιες ρίγες Αυτό σημαίνει ότι θα πρέπει να κάνουμε

Compile

(

Μεταγλώττιση

) για να ισχύουν οι αλλαγές Η κλάση Worm δεν θα έχει κώδικα. Δηλαδή τα σκουλήκια θα παραμένουν στο σημείο που τοποθετήσαμε 3.

Θα επεκτείνουμε τον κώδικα της κλάσης

Crab

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

4.

Στο τέλος της μεθόδου act() θα προσθέσουμε κώδικα που θα ελέγχει αν το καβούρι έρχεται σε επαφή με κάποιο σκουλήκι θα χρησιμοποιήσουμε τη μέθοδο

getOneObjectAtOffeset

() Η μέθοδος αυτή δέχεται τρεις παραμέτρους Χ – η Χ συντεταγμένη σχετική με τη θέση του αντικειμένου Υ— η Υ συντεταγμένη σχετική με τη θέση του αντικειμένου Cls – η κλάση του αντικειμένου που ψάχνουμε Και επιστρέφει Ένα αντικείμενο που βρίσκεται στη συγκεκριμένη θέση ή null αν δεν βρει τίποτα Επειδή θέλουμε να δούμε τι υπάρχει ακριβώς από κάτω μας θα βάλουμε

μηδέν

στις δύο πρώτες και στην τρίτη την κλάση

Worm

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

Actor worm;

Ο κώδικας που θα γράψω έχει ως εξής:

Actor worm; worm = getOneObjectAtOffeset(0,0,Worm.class);

Προσθέστε τον κώδικα και μεταγλωττίστε. Βάλτε μερικά worms και ένα crab. Εκτελέστε το σενάριο. Τι παρατηρείτε; Χρειάζεται ακόμη κάτι για να φτάσουμε στο επιθυμητό αποτέλεσμα

5.

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

null

. Έτσι λοιπόν αν η τιμή δεν είναι

null

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

If (worm != null) { } World world; world=getWorld(); world.removeObject(worm);

6.

Μεταγλωττίστε το σενάριο. Τοποθετείστε μερικά σκουλήκια και ένα καβούρι και δοκιμάστε την εφαρμογή. 7.

O κώδικας που χρησιμοποιούμε στη μέθοδο act() χωρίζεται σε δύο τμήματα. Το πάνω τμήμα του κώδικα ασχολείται με την κίνηση και το κάτω με το φάγωμα των σκουληκιών Θα γράψουμε δύο μεθόδους για την συμπεριφορά. Τη μέθοδο moveAndTurn() και τη μέθοδο eat(), τις οποίες θα παραθέσουμε μετά τη μέθοδο act(). Η μέθοδος act() πάρει την παρακάτω μορφή:

public void act() { moveAndTurn(); } eat();

Οι δύο μέθοδοι που θα γράψουν δεν έχουν παραμέτρους και δεν επιστρέφουν τιμές. Μπορούν λοιπόν να δηλωθούν όπως η μέθοδος act(). Προσπαθήστε να γράψετε τις δύο μεθόδους και δείτε πόσο πιο ευανάγνωστος γίνεται ο κώδικάς μας!!