小游戏:乌龟吃鱼

按以下要求定义一个乌龟类和鱼类并尝试编写游戏
·假设游戏场景范围(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)
鱼被吃光了
posted @ 2018-12-03 15:29  阳光宝贝-沐沐  阅读(433)  评论(0编辑  收藏  举报