import random as r
#==========定义场景范围==========
legal_x = [0, 10]
legal_y = [0, 10]
#==========定义乌龟类==========
class Turtle:
def __init__(self):
#初始化体力
self.power = 100
#初始化位置
self.x = r.randint(legal_x[0], legal_x[1])
self.y = r.randint(legal_y[0], legal_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])
#判断x是否越界
if new_x < legal_x[0]:
self.x = legal_x[0] - (new_x - legal_x[0])
elif new_x > legal_x[1]:
self.x = legal_x[1] - (new_x - legal_x[1])
else:
self.x = new_x
#判断y是否越界
if new_y < legal_y[0]:
self.y = legal_y[0] - (new_y - legal_y[0])
elif new_y > legal_y[1]:
self.y = legal_y[1] - (new_y - legal_y[1])
else:
self.y = new_y
self.power -= 1
#print('乌龟当前坐标:x = %d y =%d'%(self.x, self.y))
return (self.x, self.y)
def eat(self):
self.power += 20
#if self.power > 100:
#self.power = 100
class Fish:
def __init__(self,name):
#初始化位置:只有在init中初始化每个实例的初始位置才不相同
self.name = name
self.x = r.randint(legal_x[0], legal_x[1])
self.y = r.randint(legal_y[0], legal_y[1])
def move(self):
new_x = self.x + r.choice([1, -1])#在列表中随机选择一个成员
new_y = self.y + r.choice([1, -1])
#判断x是否越界
if new_x < legal_x[0]:
self.x = legal_x[0] - (new_x - legal_x[0])
elif new_x > legal_x[1]:
self.x = legal_x[1] - (new_x - legal_x[1])
else:
self.x = new_x
#判断y是否越界
if new_y < legal_y[0]:
self.y = legal_y[0] - (new_y - legal_y[0])
elif new_y > legal_y[1]:
self.y = legal_y[1] - (new_y - legal_y[1])
else:
self.y = new_y
#print('鱼%s当前坐标:x = %d y =%d'%(self.name, self.x, self.y))
return (self.x, self.y)
turtle = Turtle()
fish = []#保存鱼的列表
#初始化鱼的列表
for i in range(10):
new_fish = Fish(i)
fish.append(new_fish)
#测试下查看鱼列表对象---打印的是内存地址
#print(fish)
while 1:
if not len(fish):
print('鱼被吃完,游戏结束!')
break
if not turtle.power:
print('乌龟累死了,游戏结束!')
break
tpos = turtle.move()
print('乌龟爬到了(%d, %d)'%(tpos[0], tpos[1]))
#在迭代器中删除列表元素是危险的,因为迭代器是直接引用列表数据
#所以使用列表拷贝方法[:]将列表赋值给迭代器,然后再对原有的列表进行操作
for each_fish in fish[:]:
fpos =each_fish.move()
if fpos == tpos:
print('鱼%s游到(%d, %d)被乌龟抓住了'%(each_fish.name, fpos[0], fpos[1]))
turtle.eat()
fish.remove(each_fish)
print('哈哈,鱼%s被乌龟吃掉了...'%each_fish.name)
模拟乌龟吃鱼的小游戏
最新推荐文章于 2022-01-26 10:47:51 发布
这是一个用Python编写的模拟乌龟在限定区域内移动并捕捉随机位置的鱼的游戏。乌龟和鱼每次移动后会检查是否越界,乌龟捕食到鱼后会增加体力,当所有鱼被捕完或乌龟体力耗尽时,游戏结束。
摘要由CSDN通过智能技术生成