鱼C论坛

 找回密码
 立即注册
查看: 1928|回复: 0

[技术交流] 《零基础入门学习Python》乌龟吃鱼游戏代码

[复制链接]
发表于 2017-12-5 13:41:30 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 payton24 于 2017-12-5 13:43 编辑

虽然写得有点乱,还是记录一下吧,毕竟捣鼓了不少时间才弄出来。
对比标准答案,后面还是有很多改进空间的,先记下来,有空再优化一下,哈哈!
1.没有把游戏场景的坐标单独列出来;
2.没有把常用设置值标记得更清晰些;
3.乌龟和鱼的初始坐标也可以调用随机参数;
4.类里面没有调用__init__参数。

  1. #游戏编程
  2. ##游戏场景为(x,y): x=[0,10], y=[0,10]
  3. ##游戏生成1只乌龟和10条鱼
  4. ##乌龟和鱼的移动方向均随机
  5. ##乌龟的最大移动能力是2(可随机选择1或2移动),鱼的最大移动能力是1
  6. ##移动到场景边缘,自动反向移动
  7. ##乌龟的初始体力值为100(上限)
  8. ##乌龟每移动一次,体力耗费1
  9. ##乌龟和鱼的坐标重叠时,乌龟吃掉鱼,此时乌龟体力增加20
  10. ##鱼暂不计算体力
  11. ##当乌龟体力值为0,或鱼儿的数量为0时游戏结束。

  12. import random
  13. class Turtle:   #定义乌龟类
  14.     energy = 100   #初始体力为100
  15.     direction = [5,0]  #初始坐标为[5,0]
  16.    
  17.     def move(self):
  18.         z = random.randint(0,1)           #z是随机选定direction[0]或direction[0]的参数
  19.         step = random.choice([-2,-1,1,2]) #step是乌龟的随机步数
  20.         self.direction[z] += step         #实现乌龟的随机移动   
  21.         self.energy -=1                   #乌龟移动一下,体力耗费1
  22.         if self.direction[z]<0 or self.direction[z]>10:  #如果越界
  23.             self.direction[z]= self.direction[z]-step*2  ##反向移动
  24.         print('体力【{}】'.format(self.energy),end=' ')     ##调试用
  25.         print(tuple(self.direction),end='   ')  ##调试用
  26.             
  27.     def eat(self,mfishnumber):
  28.         fn=mfishnumber
  29.         if self.direction == f[i].direction: #如果乌龟和鱼的坐标重叠
  30.             fn -=1   #鱼的数量减少1
  31.             self.energy +=20     #调试用
  32.         return fn        

  33. class Fish:    #定义鱼类
  34.     direction=[5,10]
  35.    
  36.     def move(self):
  37.         z=random.randint(0,1)           #z是随机选定direction[0]或direction[0]的参数
  38.         step = random.choice([-1,1])    #step是鱼的随机步数         
  39.         self.direction[z] += step       #实现鱼的随机移动
  40.         if self.direction[z]<0 or self.direction[z]>10:  #如果越界
  41.             self.direction[z]= self.direction[z]-step*2  ##反向移动
  42.         print(self.direction,end='')  ##调试用
  43.                
  44. print('-----------------------------趣味游戏:乌龟吃鱼------------------------------')
  45. t =Turtle()                 #生成一个乌龟
  46. f = []
  47. mfishnumber=10                    #指定鱼的数量
  48. for i in range(mfishnumber):
  49.     f.append(Fish())             #生成鱼的实例
  50. ##    print(f)   #调试用

  51.    
  52. game=True                  #游戏运行标记
  53. while game==True:           #游戏主循环
  54.     t.move()                 #移动乌龟
  55.     print('鱼:',end='')  ##调试用
  56.     for i in range(mfishnumber):      
  57.         f[i].move()          #移动鱼
  58.         mfishnumber = t.eat(mfishnumber)   #并将鱼的数量返回给mfishnumber
  59.     if t.energy == 0 or mfishnumber== 0:         #停止游戏的条件
  60.         game=False
  61.     print()  ##调试用
  62. print('---------------------------------游戏结束啦----------------------------------')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-31 04:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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