- 假设游戏场景为范围(x, y)为0<=x<=10,0<=y<=10
- 游戏生成1只乌龟和10条鱼
- 它们的移动方向均随机
- 乌龟的最大移动能力是2(Ta可以随机选择1还是2移动),鱼儿的最大移动能力是1
- 当移动到场景边缘,自动向反方向移动
- 乌龟初始化体力为100(上限)
- 乌龟每移动一次,体力消耗1
- 当乌龟和鱼坐标重叠,乌龟吃掉鱼,乌龟体力增加20
- 鱼暂不计算体力
- 当乌龟体力值为0(挂掉)或者鱼儿的数量为0游戏结束
#我开始的代码——>怎么运行都是鱼儿被吃光了(呜呜呜 有没有大神帮我看看怎么回事)
import random
#创建乌龟类
class Tur:
#属性 设置初始体力 以及初始坐标
def __init__(self):
self.power=100
self.x=random.randint(0,10)
self.y=random.randint(0,10)
#上下左右四个方向的移动模块
#向上移动 移动的同时 随机生成一步还是两步
def move_up(self):
distance=random.randint(1,2)
if (self.y+distance)<=10 and (self.power-1)>=0:
self.y+=distance
self.x=self.x
self.power=self.power-1
return (self.x,self.y)
else:
pass
#向下移动
def move_down(self):
distance=random.randint(1,2)
if (self.y-distance)>=0 and (self.power-1)>=0:
self.y-=distance
self.x=self.x
self.power=self.power-1
return (self.x,self.y)
else:
pass
#向左移动
def move_left(self):
distance=random.randint(1,2)
if (self.x-distance)>=0 and (self.power-1)>=0:
self.x-=distance
self.y=self.y
self.power=self.power-1
return (self.x,self.y)
else:
pass
#向右移动
def move_right(self):
distance=random.randint(1,2)
if (self.x+distance)<=10 and (self.power-1)>=0:
self.x+=distance
self.y=self.y
self.power=self.power-1
return (self.x,self.y)
else:
pass
#定义随机移动函数
def randomly(self):
num=random.randint(1,4)
if num==1:
self.move_up()
elif num==2:
self.move_down()
elif num==3:
self.move_left()
else:
self.move_right()
#建立吃鱼儿的函数
def eat_fish(self):
print('鱼儿被吃掉咯!\n')
self.power+=20
if self.power>100:
self.power=100#体力值上限为100
#创建鱼的类
class Fish:
#创建方法
def __init__(self):
#产生初始位置
self.x=random.randint(0,10)
self.y=random.randint(0,10)
#向上移动
def move_up(self):
if (self.y+1)<=10:
self.y+=1
self.x=self.x
return (self.x,self.y)
else:
pass
#向下移动
def move_down(self):
if (self.y-1)>=0:
self.y-=1
self.x=self.x
return (self.x,self.y)
else:
pass
#向左移动
def move_left(self):
if (self.x-1)>=0:
self.x-=1
self.y=self.y
return (self.x,self.y)
else:
pass
#向右移动
def move_right(self):
if (self.x+1)<=10:
self.x+=1
self.y=self.y
return (self.x,self.y)
else:
pass
#定义随机移动函数
def randomly(self):
num=random.randint(1,4)
if num==1:
self.move_up()
elif num==2:
self.move_down()
elif num==3:
self.move_left()
else:
self.move_right()
#建立对象 并游戏
def play_game():
turtle=Tur()
fish=[]
for i in range(10):
new_fish=Fish()
fish.append(new_fish)
count=10
while True:
if not turtle.power:
print('游戏结束,小污龟精力耗尽啦!')
break
if count<=0:
print('游戏结束,鱼儿被吃光咯!')
break
#小乌龟的位置
pos=turtle.randomly()
for each_fish in fish[:]:
if each_fish.randomly()==pos:
count-=1
turtle.eat_fish()
fish.remove(each_fish)
play_game()
#看完答案整合的代码 (其实跟参考答案差不多了咳咳)
import random
#创建乌龟类
class Tur:
#属性 设置初始体力 以及初始坐标
def __init__(self):
self.power=100
self.x=random.randint(0,10)
self.y=random.randint(0,10)
#上下左右四个方向的移动模块
def move(self):
#对x的移动
new_x=self.x+random.choice([1,-1,2,-2])
new_y=self.y+random.choice([1,-1,2,-2])
if new_x<0:
self.x=self.x-(new_x-0)
elif new_x>10:
self.x=self.x-(new_x-10)
else:
self.x=new_x
if new_y<0:
self.y=self.y-(new_y-0)
elif new_y>10:
self.y=self.y-(new_y-10)
else:
self.y=new_y
self.power-=2
return (self.x,self.y)
#建立吃鱼儿的函数
def eat_fish(self):
print('鱼儿被吃掉咯!\n')
self.power+=20
if self.power>100:
self.power=100
#体力值上限为100
#创建鱼的类
class Fish:
#创建方法
def __init__(self):
#产生初始位置
self.x=random.randint(0,10)
self.y=random.randint(0,10)
#移动模块
def move(self):
#对x的移动
new_x=self.x+random.choice([1,-1])
new_y=self.y+random.choice([1,-1])
if new_x<0:
self.x=self.x-(new_x-0)
elif new_x>10:
self.x=self.x-(new_x-10)
else:
self.x=new_x
if new_y<0:
self.y=self.y-(new_y-0)
elif new_y>10:
self.y=self.y-(new_y-10)
else:
self.y=new_y
return (self.x,self.y)
#建立实例对象 并游戏
def play_game():
turtle=Tur()
fish=[]
for i in range(10):
new_fish=Fish()
fish.append(new_fish)
count=10
while True:
if not turtle.power:
print('游戏结束,小污龟精力耗尽啦!')
break
if count<=0:
print('游戏结束,鱼儿被吃光咯!')
break
#小乌龟的位置
pos=turtle.move()
for each_fish in fish[:]:
if each_fish.move()==pos:
count-=1
turtle.eat_fish()
fish.remove(each_fish)
play_game()