|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我仿写了小甲鱼的代码,但是运行结果不是一下全吃完小鱼游戏通过,就是一条鱼也没吃掉直接失败,偶尔吃掉几条小鱼之后游戏失败。而在修改了一个类中的函数调用之后就恢复正常了。
最初的代码:
- import random as r
- limit_x = [0,10]
- limit_y = [0,10]
- mo = [1,2,-1,-2]
- class wugui:
- def __init__(self):
- self.power = 100
- self.x = r.randint(limit_x[0],limit_x[1])
- self.y = r.randint(limit_y[0],limit_y[1])
-
- def move(self):
- new_x = self.x + r.choice([1,2,-1,-2])
- new_y = self.y + r.choice([1,2,-1,-2])
- if new_x < limit_x[0]:
- self.x = limit_x[0] - (new_x - limit_x[0])
- elif new_x > limit_x[1]:
- self.x = limit_x[1] - (new_x - limit_x[1])
- else:
- self.x = new_x
- if new_y < limit_y[0]:
- self.y = limit_y[0] - (new_y - limit_y[0])
- elif new_y > limit_y[1]:
- self.y = limit_y[1] - (new_y - limit_y[1])
- else:
- self.y = new_y
- self.power -= 1
- return (self.x,self.y)
- def eat(self):
- self.power += 20
- if self.power > 100:
- self.power = 100
- class xiaoyu:
- def __init__(self):
- self.x = r.randint(limit_x[0],limit_x[1])
- self.y = r.randint(limit_y[0],limit_y[1])
-
- def move(self):
- new_x = self.x + r.choice([1,-1])
- new_y = self.y + r.choice([1,-1])
- if new_x < limit_x[0]:
- self.x = limit_x[0] - (new_x - limit_x[0])
- elif new_x > limit_x[1]:
- self.x = limit_x[1] - (new_x - limit_x[1])
- else:
- self.x = new_x
- if new_y < limit_y[0]:
- self.y = limit_y[0] - (new_y - limit_y[0])
- elif new_y > limit_y[1]:
- self.y = limit_y[1] - (new_y - limit_y[1])
- else:
- self.y = new_y
- return (self.x,self.y)
- wu = wugui()
- yuer = []
- for i in range(10):
- yu = xiaoyu()
- yuer.append(yu)
- while True:
- if not len(yuer):
- print('鱼儿被吃完了,游戏结束!')
- break
- if not wu.power:
- print('小乌龟体力耗尽,游戏结束!')
- break
- for eachfish in yuer[:]:
- if eachfish.move() == wu.move():
-
- wu.eat()
- yuer.remove(eachfish)
- print('有一条鱼儿被吃掉了!')
复制代码
修改后正常的代码,区别在倒数第四行
- import random as r
- limit_x = [0,10]
- limit_y = [0,10]
- mo = [1,2,-1,-2]
- class wugui:
- def __init__(self):
- self.power = 100
- self.x = r.randint(limit_x[0],limit_x[1])
- self.y = r.randint(limit_y[0],limit_y[1])
-
- def move(self):
- new_x = self.x + r.choice([1,2,-1,-2])
- new_y = self.y + r.choice([1,2,-1,-2])
- if new_x < limit_x[0]:
- self.x = limit_x[0] - (new_x - limit_x[0])
- elif new_x > limit_x[1]:
- self.x = limit_x[1] - (new_x - limit_x[1])
- else:
- self.x = new_x
- if new_y < limit_y[0]:
- self.y = limit_y[0] - (new_y - limit_y[0])
- elif new_y > limit_y[1]:
- self.y = limit_y[1] - (new_y - limit_y[1])
- else:
- self.y = new_y
- self.power -= 1
- return (self.x,self.y)
- def eat(self):
- self.power += 20
- if self.power > 100:
- self.power = 100
- class xiaoyu:
- def __init__(self):
- self.x = r.randint(limit_x[0],limit_x[1])
- self.y = r.randint(limit_y[0],limit_y[1])
-
- def move(self):
- new_x = self.x + r.choice([1,-1])
- new_y = self.y + r.choice([1,-1])
- if new_x < limit_x[0]:
- self.x = limit_x[0] - (new_x - limit_x[0])
- elif new_x > limit_x[1]:
- self.x = limit_x[1] - (new_x - limit_x[1])
- else:
- self.x = new_x
- if new_y < limit_y[0]:
- self.y = limit_y[0] - (new_y - limit_y[0])
- elif new_y > limit_y[1]:
- self.y = limit_y[1] - (new_y - limit_y[1])
- else:
- self.y = new_y
- return (self.x,self.y)
- wu = wugui()
- yuer = []
- for i in range(10):
- yu = xiaoyu()
- yuer.append(yu)
- while True:
- if not len(yuer):
- print('鱼儿被吃完了,游戏结束!')
- break
- if not wu.power:
- print('小乌龟体力耗尽,游戏结束!')
- break
- there = wu.move()
- for eachfish in yuer[:]:
- if eachfish.move() == there:
-
- wu.eat()
- yuer.remove(eachfish)
- print('有一条鱼儿被吃掉了!')
复制代码
|
|