鱼C论坛

 找回密码
 立即注册
查看: 2186|回复: 1

[作品展示] 乌龟吃鱼游戏

[复制链接]
发表于 2021-4-30 19:42:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import random

  2. class Fish:
  3.     number = 10
  4.     step = 1
  5.     position_list = list()
  6.     def position(self):
  7.         for i in range(self.number):
  8.             x = random.randint(1, 10)
  9.             y = random.randint(1,10)
  10.             self.position_list.append([x,y])

  11.     def change(self):
  12.         for i in range(self.number):
  13.             turn = random.randint(0,3)

  14.             if turn == 0:                         #行动逻辑
  15.                 x = self.position_list[i][0] + self.step
  16.                 y = self.position_list[i][1]
  17.                 if x > 10:
  18.                     x = self.position_list[i][0] - self.step
  19.             elif turn == 1:
  20.                 x = self.position_list[i][0]
  21.                 y = self.position_list[i][1] + self.step
  22.                 if y > 10:
  23.                     y = self.position_list[i][1] - self.step
  24.             elif turn == 2:
  25.                 x = self.position_list[i][0] - self.step
  26.                 y = self.position_list[i][1]
  27.                 if x < 0:
  28.                     x = self.position_list[i][0] + self.step
  29.             elif turn == 3:
  30.                 x = self.position_list[i][0]
  31.                 y = self.position_list[i][1] - self.step
  32.                 if y < 0:
  33.                     y = self.position_list[i][1] + self.step

  34.             self.position_list[i] = [x,y]

  35. class Tortoise:
  36.     position_list = list()
  37.     strength = 100

  38.     def position(self):
  39.         x = random.randint(1, 10)
  40.         y = random.randint(1, 10)
  41.         self.position_list.append([x, y])

  42.     def change(self):
  43.         turn = random.randint(0, 3)
  44.         step = random.randint(1, 2)

  45.         if turn == 0:  # 行动逻辑
  46.             x = self.position_list[0][0] + step
  47.             y = self.position_list[0][1]
  48.             if x > 10:
  49.                 x = self.position_list[0][0] - step
  50.         elif turn == 1:
  51.             x = self.position_list[0][0]
  52.             y = self.position_list[0][1] + step
  53.             if y > 10:
  54.                 y = self.position_list[0][1] - step
  55.         elif turn == 2:
  56.             x = self.position_list[0][0] - step
  57.             y = self.position_list[0][1]
  58.             if x < 0:
  59.                 x = self.position_list[0][0] + step
  60.         elif turn == 3:
  61.             x = self.position_list[0][0]
  62.             y = self.position_list[0][1] - step
  63.             if y < 0:
  64.                 y = self.position_list[0][1] + step

  65.         self.position_list[0] = [x, y]
  66.         self.strength -= 1

  67.     def eating(self):

  68.         if self.position_list[0] in Fish.position_list:
  69.             count = Fish.position_list.count(self.position_list[0])
  70.             print("乌龟在", self.position_list[0], "位置吃掉了%d只鱼" % (count))
  71.             Fish.position_list.remove(self.position_list[0])
  72.             Fish.number -= count
  73.             self.strength += count * 20
  74.             if self.strength > 100:
  75.                 self.strength = 100


  76. print("欢迎进入乌龟吃鱼小游戏!")
  77. A = Fish()
  78. B = Tortoise()
  79. A.position()
  80. B.position()
  81. while A.position_list != [] and B.strength != 0:
  82.     B.eating()
  83.     A.change()
  84.     B.change()
  85.     B.eating()
  86. if A.position_list == []:
  87.     print("鱼被吃完啦!好厉害的乌龟???")
  88. if B.strength == 0:
  89.     print("好菜的乌龟,不行啊,还得继续努力!")
复制代码


总算是有点在创造的实感了 ,大家是怎么实现的呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-2 19:14:53 | 显示全部楼层
还不错哦,加油!  做的挺漂亮。   
边界返回的功能还没加进去。
移动方向的代码我是这么处理的:
d = r.choice([(1,0),(-1,0),(0,1),(0,-1)]) #四个方向
new_x = self.x + d[0]
new_y = self.y + d[1]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 23:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表