【Python制作小游戏】一篇文章带你做出自己的“大鱼吃小鱼

简介: 【Python制作小游戏】一篇文章带你做出自己的“大鱼吃小鱼

时间比较仓猝,这个素材比较捡漏所以将就一下,关键看操作。
其次我今天大婚大家多多祝福我啊,,另外祝大家愚人节快乐,哈哈哈~
这还是这几天外甥吵吵着想玩大鱼吃小鱼,作为一个合格的舅舅我必须出手了,虽然他没玩两分钟就觉得太丑玩不下去了,但是我觉得还是分享一下,毕竟作为我们内行还是看门道的嘛~

目录
一.游戏画面
二.游戏素材
三.程序介绍
四.游戏代码
1.精灵对象。这个函数计算矩形下右角的一个坐标并返回它。
2.设置游戏属性
3.游戏对象
4.游戏动态效果
五:经验总结
一.游戏画面

二.游戏素材

L805废墨清零软件
zip

0星
超过10%的资源
848KB

下载
三.程序介绍
"""
大鱼吃小鱼.py
注意程序的mouth对象,它并不是"隐藏"的,虽然它看不见。
小鱼碰到mouth会被“吃掉”。如果把mouth用hide命令设为隐藏,那么是无法获取到mouth的绑定盒,从而碰撞检测失效。

"""
1
2
3
4
5
6
四.游戏代码
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2.设置游戏属性
width,height = 480,360
screen = Screen() # 新建宽高
screen.setup(width,height) # 设置宽高
screen.bgpic('res/underwater.png') # 设背景图
screen.title("图灵大海之大鱼吃小鱼")
1
2
3
4
5
3.游戏对象
fish_group = Group(tag='fish') # 新建组,标签为fish
fishes = ['res/fish1.png','res/fish2.png','res/fish3.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/fish1-a.png') # 实例化大鱼
fish.rotatemode(1) # 左右翻转
fishscale= 0.6
fish.scale(fishscale)
mouth = Sprite(shape='circle') # 实例化嘴巴,用于碰撞检测
mouthscale = 0.4
mouth.scale(mouthscale) # 缩放嘴巴大小
mouth.setalpha(0) # 把它设为透明,改为非0它会显示出来
clock = Clock() # 新建时钟对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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/fish1-a.png')
else:
    fish.shape('res/fish1-b.png')
screen.update()
clock.tick(60)

fish.shape('res/fish1-a.png')

else:
    fish.shape('res/fish1-b.png')
screen.update()
clock.tick(60)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
五:经验总结
作为一个过来人,不论是当舅舅,还是在Python这一块辣条我还是多少有点发言权的,如果说不嫌弃辣条啰嗦的可以看到我最底下是有我的小名~片的,各种Python源码,然后PDF文档啥的应有尽有,虽然都是我之前用过的 只要大家不嫌弃,多少还是有点用

目录
相关文章
|
存储 数据采集 自然语言处理
Python爬取公众号文章并实现关键词分析
Python爬取公众号文章并实现关键词分析
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
916 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
1265 7
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
6084 82
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
1701 1
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
931 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
存储 API 数据安全/隐私保护
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
4226 6
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
测试技术 开发者 Python
对于Python中的异常要如何处理,raise关键字你真的了解吗?一篇文章带你从头了解
`raise`关键字在Python中用于显式引发异常,允许开发者在检测到错误条件时中断程序流程,并通过异常处理机制(如try-except块)接管控制。`raise`后可跟异常类型、异常对象及错误信息,适用于验证输入、处理错误、自定义异常、重新引发异常及测试等场景。例如,`raise ValueError("Invalid input")`用于验证输入数据,若不符合预期则引发异常,确保数据准确并提供清晰错误信息。此外,通过自定义异常类,可以针对特定错误情况提供更具体的信息,增强代码的健壮性和可维护性。

推荐镜像

更多