diff gamelib/animal.py @ 29:2e88c680672c

Minimal fox raid logic
author Neil Muller <drnlmuller@gmail.com>
date Sun, 30 Aug 2009 18:46:46 +0000
parents ac3a74352b74
children f5f74f1f3a0b
line wrap: on
line diff
--- a/gamelib/animal.py	Sun Aug 30 18:23:40 2009 +0000
+++ b/gamelib/animal.py	Sun Aug 30 18:46:46 2009 +0000
@@ -1,6 +1,7 @@
 """Class for the various animals in the game"""
 
 import pygame
+import random
 from pgu.vid import Sprite
 
 import data
@@ -43,9 +44,37 @@
 
     def __init__(self, pos):
         image = pygame.image.load(data.filepath('sprites/fox.png'))
+        self.full = False
         Animal.__init__(self, image, pos)
 
     def move(self, gameboard):
         """Foxes will aim to move towards the closest henhouse or free
           chicken"""
-        return self.pos
+        if self.full:
+            return
+        # Find the closest chicken
+        min_dist = 999
+        min_vec = None
+        closest = None
+        for chicken in gameboard.chickens:
+            vec = (chicken.pos[0] - self.pos[0], chicken.pos[1] - self.pos[1])
+            dist = abs(vec[0]) + abs(vec[1])
+            if dist < min_dist:
+                min_dist = dist
+                min_vec = vec
+                closest = chicken
+        xpos, ypos = self.pos
+        if min_vec[0] < 0:
+            xpos -= 1
+        elif min_vec[0] > 0:
+            xpos += 1
+        if min_vec[1] < 0:
+            ypos -= 1
+        elif min_vec[1] > 0:
+            ypos += 1
+        if closest.pos == self.pos:
+            gameboard.remove_chicken(closest)
+            self.full = True
+        self.pos = (xpos, ypos)
+        
+