Το κεφάλαιο σε pdf.
Κατεβάστε το
Ερωτήσεις Κεφαλαίου
Απαντήστε τις
Στο Κεφάλαιο 4 προγραμματίσαμε ένα ποντίκι ώστε να κινείται με τυχαίο τρόπο. Σε αυτό το κεφάλαιο θα προσθέσουμε ένα τυράκι και θα πρέπει όταν το ποντίκι ακουμπήσει το τυράκι το τυράκι να εξαφανίζεται (τρώγεται).
Εισάγετε μια νέα μορφή (Actor) με όνομα cheese και εικόνα pizza_cheese.png. Η μορφή αυτή δεν θα έχει κάποιο πρόγραμμα θα προγραμματίσουμε τη μορφή mouse να την εξαφανίζει όταν την ακουμπήσει. Για να καταλάβει η μορφή mouse αν ακουμπάει μια άλλη μορφή υπάρχει η μέθοδος isTouching(). Για να περιορίσουμε την εντολή ώστε να ανιχνεύει αν αυτό που ακούμπησε ήταν αντικείμενο της κλάσης cheese μπορούμε να χρησιμοποιήσουμε τη μέθοδο ως εξής:
isTouching(cheese.class)
Kώδικας 5.1:
//Random movement move(1); if (Greenfoot.getRandomNumber(100)>50) { turn(90); } //Check if it is touching cheese if (isTouching(cheese.class)) { System.out.println("Touching"); }
Θα δείτε ότι την πρώτη φορά που θα ακουμπήσει η μορφή mouse την μορφή cheese θα εμφανιστεί ένα παράθυρο με τη λέξη Touching, από εκείνη τη στιγμή και μετά στο παράθυρο θα εμφανίζεται η λέξη κάθε φορά που το ποντίκι ακουμπάει το τυράκι.
Αντί να εμφανίζεται η λέξη Touching το ποντίκι θα έπρεπε να εξαφανίζει το τυράκι. Αυτό μπορεί να γίνει με την εντολή removeTouching που επίσης θα χρησιμοποιηθεί με όρισμα cheese.class.
Kώδικας 5.2:
//Random movement move(1); if (Greenfoot.getRandomNumber(100)>50) { turn(90); } //Check if it is touching cheese if (isTouching(cheese.class)) { removeTouching(cheese.class); }
Μπορούμε να χρησιμοποιήσουμε δικές μας μεθόδους για τις ομάδες των εντολών που επιτελούν μια συγκεκριμένη λειτουργία. Οι μέθοδοι εφόσον ασχολούνται μόνο με την κίνηση και δεν υπολογίζουν κάποιο αποτέλεσμα μπορούν να μην επιστρέφουν τίποτε. Έτσι δηλώνονται με void ονομα_συνάρτησης().
Οι νέες μέθοδοι θα δηλωθούν έξω από το σώμα της act(). Είναι η πρώτη φορά που θα γράψουμε κώδικα έξω από τη μέθοδο act οπότε θα χρειαστεί ιδιαίτερη προσοχή.
Kώδικας 5.3:
public void act() { // Add your action code here. randomMove(); touchingCheese(); } void randomMove(){ move(1); if (Greenfoot.getRandomNumber(100)>50) { turn(90); } } void touchingCheese(){ if (isTouching(cheese.class)) { removeTouching(cheese.class); } }
Για να δημιουργήσουμε αντικείμενα μιας κλάσης, όπως θυμάστε, πατάμε δεξί κλικ στο εικονίδιο της κλάσης και στη συνέχεια new όνομα_κλάσης(). Έτσι, εμφανίζεται ένα αντικείμενο της επιλεγμένης κλάσης και το τοποθετούμε πάνω στο πλέγμα. Αυτό μπορεί να γίνει και με την εντολή addObject(), με την εντολή αυτή δεν θα χρειάζεται να βάζουμε τα αντικείμενα χειροκίνητα κάθε φορά αλλά θα εμφανίζονται αυτόματα κάθε φορά που πατάμε Compile. Η εντολή addObject εκτελείται μέσα στον constructor του world (δεξί κλικ στην υποκλάση του world και επιλέγετε Open Editor).
Η εντολή addObject() συντάσσεται ως εξής:
addObject(new όνομα_κλάσης(),θέση_x,θέση_y);
Με το new όνομα_κλάσης() δημιουργείται ένα αντικείμενο αυτής της κλάσης και με την εντολή addObject το αντικείμενο αυτό εισάγεται σε συγκεκριμένη θέση στο πλέγμα.
Για παράδειγμα, μπορούμε να κάνουμε το ποντίκι να εμφανίζεται στη μέση της οθόνης κάθε φορά.
Kώδικας 5.4:
super(8, 8, 60); addObject(new mouse(), 4, 4);