|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 payton24 于 2017-12-5 13:43 编辑
虽然写得有点乱,还是记录一下吧,毕竟捣鼓了不少时间才弄出来。
对比标准答案,后面还是有很多改进空间的,先记下来,有空再优化一下,哈哈!
1.没有把游戏场景的坐标单独列出来;
2.没有把常用设置值标记得更清晰些;
3.乌龟和鱼的初始坐标也可以调用随机参数;
4.类里面没有调用__init__参数。
- #游戏编程
- ##游戏场景为(x,y): x=[0,10], y=[0,10]
- ##游戏生成1只乌龟和10条鱼
- ##乌龟和鱼的移动方向均随机
- ##乌龟的最大移动能力是2(可随机选择1或2移动),鱼的最大移动能力是1
- ##移动到场景边缘,自动反向移动
- ##乌龟的初始体力值为100(上限)
- ##乌龟每移动一次,体力耗费1
- ##乌龟和鱼的坐标重叠时,乌龟吃掉鱼,此时乌龟体力增加20
- ##鱼暂不计算体力
- ##当乌龟体力值为0,或鱼儿的数量为0时游戏结束。
- import random
- class Turtle: #定义乌龟类
- energy = 100 #初始体力为100
- direction = [5,0] #初始坐标为[5,0]
-
- def move(self):
- z = random.randint(0,1) #z是随机选定direction[0]或direction[0]的参数
- step = random.choice([-2,-1,1,2]) #step是乌龟的随机步数
- self.direction[z] += step #实现乌龟的随机移动
- self.energy -=1 #乌龟移动一下,体力耗费1
- if self.direction[z]<0 or self.direction[z]>10: #如果越界
- self.direction[z]= self.direction[z]-step*2 ##反向移动
- print('体力【{}】'.format(self.energy),end=' ') ##调试用
- print(tuple(self.direction),end=' ') ##调试用
-
- def eat(self,mfishnumber):
- fn=mfishnumber
- if self.direction == f[i].direction: #如果乌龟和鱼的坐标重叠
- fn -=1 #鱼的数量减少1
- self.energy +=20 #调试用
- return fn
- class Fish: #定义鱼类
- direction=[5,10]
-
- def move(self):
- z=random.randint(0,1) #z是随机选定direction[0]或direction[0]的参数
- step = random.choice([-1,1]) #step是鱼的随机步数
- self.direction[z] += step #实现鱼的随机移动
- if self.direction[z]<0 or self.direction[z]>10: #如果越界
- self.direction[z]= self.direction[z]-step*2 ##反向移动
- print(self.direction,end='') ##调试用
-
- print('-----------------------------趣味游戏:乌龟吃鱼------------------------------')
- t =Turtle() #生成一个乌龟
- f = []
- mfishnumber=10 #指定鱼的数量
- for i in range(mfishnumber):
- f.append(Fish()) #生成鱼的实例
- ## print(f) #调试用
-
- game=True #游戏运行标记
- while game==True: #游戏主循环
- t.move() #移动乌龟
- print('鱼:',end='') ##调试用
- for i in range(mfishnumber):
- f[i].move() #移动鱼
- mfishnumber = t.eat(mfishnumber) #并将鱼的数量返回给mfishnumber
- if t.energy == 0 or mfishnumber== 0: #停止游戏的条件
- game=False
- print() ##调试用
- print('---------------------------------游戏结束啦----------------------------------')
复制代码 |
|