猫史档案馆


【Python作品分享】大鱼吃小鱼游戏【作品秀】

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


【作品展示】

center_image

 

【作品介绍】

大鱼吃小鱼游戏,快来玩玩吧!

 

【作品源代码】

#大鱼吃小鱼游戏
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


回复

上一页1 页 / 共 0下一页