文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 19:22

关注

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

一.游戏画面

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

二.游戏素材

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

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

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

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

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯