Python怎么实现大鱼吃小鱼游戏
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍"Python怎么实现大鱼吃小鱼游戏"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么实现大鱼吃小鱼游戏"文章能帮助大家解决问题。
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
服务器管理细则
前端什么时候用到数据库
政治网络安全知识内容
fast虚拟服务器
jq数据库读取三级联动
北京信息网络技术服务系统
服务器关闭核心监听端口
信创背景下的国产数据库
网络安全流量蛇形图
软件开发科技公司
网络安全保障 总结
网络技术行业税负
微软服务器6.0如何备份
了解电子表格数据库
2021年绿城杯网络安全
网络技术应用专业可以考公务员
哈尔滨东塔网络安全特训营哪家好
山东恒晟软件开发公司
评价网络技术的影响
幻塔当前服务器倍率500%
云采网络技术有限公司保定
前端什么时候用到数据库
315安全网认证数据库
聊城党员教育软件开发电话
数据库增删改查语句多表查询
数据库 查询出生日期在
数据库状态字段长度
手机下载的软件显示同名数据库
张敬网络安全
2019工资核算免费数据库