千家信息网

Python怎么实现大鱼吃小鱼游戏

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"Python怎么实现大鱼吃小鱼游戏"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么实现大鱼吃小鱼游戏"文章能帮助大家解决问题。
千家信息网最后更新 2024年09月22日Python怎么实现大鱼吃小鱼游戏

这篇文章主要介绍"Python怎么实现大鱼吃小鱼游戏"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么实现大鱼吃小鱼游戏"文章能帮助大家解决问题。

一.游戏画面

二.游戏素材

三.程序介绍

大鱼吃小鱼.py

注意程序的mouth对象,它并不是"隐藏"的,虽然它看不见。

小鱼碰到mouth会被"吃掉"。如果把mouth用hide命令设为隐藏,那么是无法获取到mouth的绑定盒,从而碰撞检测失效。

四.游戏代码

1.精灵对象。这个函数计算矩形下右角的一个坐标并返回它

from sprites import *def calculate_pos(obj):    """obj:精灵对象。这个函数计算矩形下右角的一个坐标并返回它。    """        x,y = obj.position()              # 角色的坐标    mx,my = mouse_position()          # 鼠标指针的坐标    k = 1 if mx > x else -1           # 在右则为1,否则为-1    left,top,right,bottom = obj.bbox()# 获取绑定盒    w = right-left                    # 大鱼的宽度    h = top - bottom                  # 大鱼的高度    x0 = x + k * w//2.5               # 嘴巴大概的x坐标    y0 = y - h//12                    # 嘴巴大概的y坐标    return x0,y0

2.设置游戏属性

width,height = 480,360                screen = Screen()                     # 新建宽高screen.setup(width,height)            # 设置宽高 screen.bgpic('res/underwater.png')    # 设背景图screen.title("图灵大海之大鱼吃小鱼")

3.游戏对象

fish_group = Group(tag='fish')        # 新建组,标签为fishfishes = ['res/fish2.png','res/fish3.png','res/fish4.png','res/crab-b.png']# 由于下面的鱼的标签都是fish,所以会自动加入到fish_group中for x in range(10):     x = random.randint(-200,200)     y = random.randint(-140,140)     f = Sprite(shape=random.choice(fishes),tag='fish',pos=(x,y))     f.scale(0.5)[fish.setheading(random.randint(1,360)) for fish in fish_group] m1 = Mouse(1)                        # 鼠标左键fish = Sprite('res/fish2-a.png')     # 实例化大鱼fish.rotatemode(1)                   # 左右翻转 fishscale= 0.6fish.scale(fishscale)mouth = Sprite(shape='circle')       # 实例化嘴巴,用于碰撞检测mouthscale = 0.4mouth.scale(mouthscale)              # 缩放嘴巴大小mouth.setalpha(0)                    # 把它设为透明,改为非0它会显示出来clock = Clock()                      # 新建时钟对象

4.游戏动态效果

while True:    for f in fish_group:        if f.isvisible():f.fd(1)     # 在可见的情况下才移动        # 小鱼碰到嘴巴及单击鼠标则被吃掉,大鱼长大        if f.collide(mouth,0.5) and m1.down() :            fishscale += 0.01            fish.scale(fishscale)     # 大鱼长大            mouthscale += 0.01            mouth.scale(mouthscale)   # 嘴巴跟着加大            x = random.randint(-200,200)            y = random.randint(-140,140)            # 注意这里调用了reborn后,鱼会立即隐藏,3后后出现            # 在3秒内碰撞检测无效,所以鱼不能动            f.reborn(x,y,delay=3)            f.shape(random.choice(fishes))                    f.bounce_on_edge()            fish.heading(mouse_pos())        # 大鱼跟随鼠标指针    x0,y0 = calculate_pos(fish)      # 计算嘴巴的大概坐标    mouth.goto(x0,y0)                # 嘴巴大这个坐标     md =  fish.distance(mouse_pos()) # 计算鱼到鼠标指针距离    if md > 50:fish.fd(min(md,4))    # 如果距离大于50则游    # 张嘴与合嘴    if m1.down():        fish.shape('res/fish2-a.png')    else:        fish.shape('res/fish2-b.png')    screen.update()    clock.tick(60)  fish.shape('res/fish2-a.png')    else:        fish.shape('res/fish2-b.png')    screen.update()    clock.tick(60)

关于"Python怎么实现大鱼吃小鱼游戏"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

大鱼 嘴巴 坐标 大鱼吃小鱼 对象 鼠标 指针 知识 检测 碰撞 函数 实例 小鱼 标签 矩形 程序 精灵 行业 不同 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 成都专科应届生软件开发招聘 计算机移动网络技术专业 新一代数据库技术特点 35岁网络运维转软件开发 互联网金融金融科技委员会 青岛企业软件开发价格 无锡光学透镜设计软件开发 小龙网络安全 哪个服务器平衡 计算机三级网络技术考试试卷 数据库中合并 成都交友软件开发有用吗 地税局网络安全法宣传报告 服务器托管idc硬件安全吗 结构化还是非结构化数据库 去个小公司做硬件软件开发如何 北邮有关网络安全的硕导 江苏百旺服务器网络配置云主机 项目安全管理数据库设计 下载服务器搭建速度慢慢在减慢 中国会议论文数据库 网络技术计算机三级选择题 编程软件自学软件开发 关闭朋友圈会丢失数据库 羊城通乘车码服务器下线什么意思 软件开发选择什么模型 软件开发公司做app吗 云服务器免费永久 三年级读好书网络安全手抄报 树莓派网站服务器
0