用户:Ryan袁奥查看:0 回复:0 评论:0 创建时间:2019-08-01T12:36:46
【作品展示】

【作品介绍】
大鱼吃小鱼游戏,快来玩玩吧!
【作品源代码】
#大鱼吃小鱼游戏
from tkinter import *
import random as r
import time
turtle_x = [20,480]
turtle_y = [20,380]
fish_x = [10,490]
fish_y = [10,390]
class Turtle:
def __init__(self):
#初始体力
self.power = 100
#初始随机位置
self.x = r.randrange(turtle_x[0], turtle_x[1],20)
self.y = r.randrange(turtle_y[0], turtle_y[1],20)
#定义随机移动的参数
def move(self):
new_x = self.x + r.choice([20,-20,40,-40,100])
if new_x < 20 :
new_x = -new_x + 20
elif new_x > 480:
new_x = (480*2) - new_x
else:
self.x = new_x
#定义Y参数
new_y = self.y + r.choice([20,-20,40,-40,100])
if new_y < 20 :
new_y = 20 -new_y
elif new_y > 380:
new_y = (380*2) - new_y
else:
self.y = new_y
#定义体力消耗
self.power -=2
return (self.x,self.y)
def eat(self):
self.power += 20
if self.power > 100:
self.power = 100
#定义Fish类
class Fish:
def __init__(self):
self.x = r.randrange(fish_x[0], fish_x[1],10)
self.y = r.randrange(fish_y[0], fish_y[1],10)
def move(self):
new_x = self.x + r.choice([20,-20,100])
if new_x < 10 :
new_x = 10 - new_x
elif new_x > 490:
new_x = (490*2) - new_x
else:
self.x = new_x
#定义Y参数
new_y = self.y + r.choice([20,-20,100])
if new_y < 10 :
new_y = 10 -new_y
elif new_y > 390:
new_y = (390*2) - new_y
else:
self.y = new_y
return (self.x,self.y)
#************************************************************************#
#************************************************************************#
root = Tk()
turtle = Turtle()
fish = []
fish_cage = []
#初始化10条鱼
for i in range(10):
new_fish = Fish()
fish.append(new_fish)
flag = 0
cv = Canvas(root,bg = 'white',height = 400,width = 500)
#=======================================
pos = turtle.move()
Tx1 , Tx2 = pos[0]-20 , pos[0]+20
Ty1 , Ty2 = pos[1]-20 , pos[1] +20
tur = cv.create_rectangle(Tx1,Ty1,Tx2,Ty2, fill = 'green')
#=======================================
for each_fish in fish[:]:
fish_pos = each_fish.move()
Fx1 , Fx2 = fish_pos[0]-10 , fish_pos[0]+10
Fy1 , Fy2 = fish_pos[1]-10 , fish_pos[1] +10
fis = cv.create_rectangle(Fx1,Fy1,Fx2,Fy2, fill = 'yellow')
fish_cage.append(fis)
#=======================================
cv. pack()
root.update()
#=======================================
flag = 0
while True :
if not len(fish):
print('鱼儿被吃光了!')
break
if not turtle.power :
print('体力耗尽,龟龟挂掉了')
break
pos = turtle.move()
Tx1 , Tx2 = pos[0]-20 , pos[0]+20
Ty1 , Ty2 = pos[1]-20 , pos[1] +20
if fish_cage:
num = list(range(len(fish)))
for flag in num:
fish_pos = fish[flag].move()
Fx1 , Fx2 = fish_pos[0]-10 , fish_pos[0]+10
Fy1 , Fy2 = fish_pos[1]-10 , fish_pos[1] +10
cv.coords(fish_cage[flag],(Fx1,Fy1,Fx2,Fy2))
if fish_pos == pos:
turtle.eat()
fish.remove(fish[flag])
fish_cage.remove(fish_cage[flag])
tur1 = cv.create_rectangle(Tx1,Ty1,Tx2,Ty2, fill = 'red')
root.update()
time.sleep(0.3)
cv.delete(tur1)
print('鱼儿被吃')
flag -= 1
break
flag += 1
cv.coords(tur,(Tx1,Ty1,Tx2,Ty2))
root.update()
time.sleep(0.3)
if turtle.power == 0:
quit()
root.mainloop()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn