63
Εχθροί
Εικόνα 28.Καταδίωξη από εχθρό
Στη συνέχεια, υλοποιήθηκε η κλάση Enemies(). Η κλάση αυτή είναι υπεύθυνη για τη
δημιουργία και τη διαχείριση της συμπεριφοράς των εχθρών του παιχνιδιού.
Η update_animation(self, delta_time) οπτικοποιεί την κίνηση του εχθρού μέσω
εναλλαγής των εικόνων animation. Το χρονόμετρο self.animation_timer αυξάνεται με βάση το
delta_time, δηλαδή τον χρόνο που έχει περάσει από το τελευταίο καρέ. Όταν το χρονόμετρο
υπερβεί την τιμή self.animation_speed, η εικόνα αλλάζει (self.current_image_index),
δημιουργώντας εφέ κίνησης, ενώ το self.animation_timer μηδενίζεται. Η χρήση του «%»
εξασφαλίζει την ορθή εναλλαγή των εικόνων, προσδίδοντας ομαλή και ρεαλιστική κίνηση του
εχθρού.
def update_animation(self, delta_time):
self.animation_timer += delta_time
if self.animation_timer >= self.animation_speed:
self.current_image_index = (self.current_image_index + 1) % len(self.images)
self.animation_timer = 0
Η collides_with_obstacle(self, target_pos, obstacles) ελέγχει αν ο εχθρός για κάθε νέα
θέση του (target_pos) συγκρούεται με κάποιο εμπόδιο. Αρχικά, δημιουργείται ένα ορθογώνιο
(target_rect) που ορίζει την πιθανή νέα θέση του εχθρού. Στη συνέχεια, η colliderect()
συγκρίνει αυτό το ορθογώνιο με τα ορθογώνια των εμποδίων (obstacle_rect). Εάν εντοπιστεί
κάποια σύγκρουση, η μέθοδος επιστρέφει True, διαφορετικά επιστρέφει False.