按以下要求定义一个乌龟类和鱼类并尝试编写游戏
·假设游戏场景范围(x,y)为0<=x<=10,0<=y<=10
·游戏生成1只乌龟和10条鱼
·它们的移动方向均随机
·乌龟的最大移动能力是2(他可以随机选择1还是2移动),鱼儿的最大移动能力是1
·当移动到场景边缘,自动向反方向移动
·乌龟初始体力为100(上线)
·乌龟每移动一次,体力消耗1
·当乌龟和鱼的坐标重合,乌龟吃掉鱼,乌龟体力增加20
·鱼暂时不计算体力
·当乌龟体力值为0(挂了)或鱼的数量为0 ,游戏结束
1 import random as r 2 3 lay_x =[0,10] 4 lay_y =[0,10] 5 6 class Turple: 7 def __init__(self): #初始化Turple能量和位置 8 self.power = 100 9 self.x = r.randint(lay_x[0],lay_x[1]) 10 self.y = r.randint(lay_y[0],lay_y[1]) 11 def eat(self): 12 self.power += 20 13 if self.power >= 100: 14 self.power = 100 15 def move(self): 16 #随机计算方向并移动到新位置(x,y) 17 new_x = self.x +r.choice([1,2,-1,-2]) 18 new_y = self.y + r.choice([1,2,-1,-2]) 19 20 #检查移动后xy轴边界 21 if new_x < lay_x[0]: 22 self.x = lay_x[0]-(new_x -lay_x[0]) 23 elif new_x >lay_x[1]: 24 self.x = lay_x[1]-(new_x -lay_x[1]) 25 else: 26 self.x = new_x 27 28 if new_y < lay_y[0]: 29 self.y = lay_y[0]-(new_y -lay_y[0]) 30 elif new_y >lay_y[1]: 31 self.y = lay_y[1]-(new_y -lay_y[1]) 32 else: 33 self.y = new_y 34 35 self.power -= 1 #体力消耗 36 return (self.x,self.y) #返回移动新位置 37 class Fish: 38 def __init__(self): #初始化鱼位置 39 self.x = r.randint(lay_x[0],lay_x[1]) 40 self.y = r.randint(lay_y[0],lay_y[1]) 41 def move(self): 42 #随机计算方向并移动到新位置(x,y) 43 new_x = self.x +r.choice([1,-1]) 44 new_y = self.y + r.choice([1,-1]) 45 46 #检查移动后xy轴边界 47 if new_x < lay_x[0]: 48 self.x = lay_x[0]-(new_x -lay_x[0]) 49 elif new_x >lay_x[1]: 50 self.x = lay_x[1]-(new_x -lay_x[1]) 51 else: 52 self.x = new_x 53 54 if new_y < lay_y[0]: 55 self.y = lay_y[0]-(new_y -lay_y[0]) 56 elif new_y >lay_y[1]: 57 self.y = lay_y[1]-(new_y -lay_y[1]) 58 else: 59 self.y = new_y 60 61 return (self.x,self.y) #返回移动新位置 62 if __name__ == '__main__': 63 turple = Turple() 64 fish = [] 65 for i in range(10): 66 fish_new = Fish() 67 fish.append(fish_new) 68 while True: 69 if len(fish) == 0: 70 # if not len(fish): 71 print("鱼被吃光了") 72 break 73 if turple.power == 0: 74 # if not turple.power: 75 print("乌龟被累死了") 76 break 77 pos = turple.move() 78 for each_fish in fish: 79 if each_fish.move() == pos: 80 print(each_fish.move(),pos) 81 fish.remove(each_fish) 82 turple.eat()
随机执行结果:
(2, 1) (3, 2) (2, 8) (1, 9) (0, 10) (1, 9) (3, 5) (2, 4) (1, 8) (2, 7) (10, 7) (9, 6) (5, 0) (4, 1) (3, 10) (4, 9) (6, 10) (7, 9) (4, 9) (3, 10) 鱼被吃光了