端午抗疫宣传公益小游戏-用Python为粽子宝宝戴口罩

简介: 由于新冠疫情影响,为避免户外威胁,我选择了居家以程序员的方式纪念这个端午。虽然气温较高,疫情也得到了有效的控制,但为了他人和自身的身体健康,仍然需要在人流密集的公共场所佩戴好口罩😷。由此,我以**为粽子宝宝戴口罩**😷为主题,花费4个小时(构思,素材收集,编码, 记录),制作了一个公益小游戏。科普防疫戴口罩。纪念这个端午!

缘起

由于新冠疫情影响,为避免户外威胁,我选择了居家以程序员的方式纪念这个端午。

虽然气温较高,疫情也得到了有效的控制,但为了他人和自身的身体健康,仍然需要在人流密集的公共场所佩戴好口罩😷。

由此,我以为粽子宝宝戴口罩😷为主题,花费4个小时(构思,素材收集,编码, 记录),制作了一个公益小游戏。科普防疫戴口罩。纪念这个端午!

目标

  1. 此游戏使用Python语言,并使用Pygame游戏开发库进行制作。
  2. 游戏开始会有一个未戴口罩的粽子宝宝的形象。
  3. 粽子宝宝的口鼻处有个半透明的口罩,这个是提示我们应该戴口罩的位置。
  4. 玩家控制键盘的方向键,移动口罩。
  5. 当口罩移动到预定位置,游戏成功通关,画面出现成功通关提示!

成品展示

麻雀虽小,但五脏俱全呵!首先看一下最终实现的效果,一图杀猫~

mask_mouse2.gif

此处有背景音乐🎵~

关键技术

首先安装pygame游戏库 pip install pygame

素材及目录结构

仅有五个文件,包括两张图片素材,一个音乐素材,一个字体素材及源码文件。源码及素材见文末
截屏2022-08-24 23.32.54.png

游戏对象初始化

使用Pygame框架首先要初始化pygame对象。

def init_game(caption):
    # 初始化pygame
    pygame.init()
    # 变量定义
    size = width, height = 800, 800
    # 创建一个游戏窗口
    screen = pygame.display.set_mode(size, 0, 32)
    #设置窗口标题
    pygame.display.set_caption(caption)
    return screen

背景音乐

我们可以使用load载入需要播放的音乐文件。
play方法的第一个参数loops和第二个参数start分别代表重复的次数和开始播放的位置。-1就是循环播放。

def play_music():
    pygame.mixer.music.load('sp.mp3')
    pygame.mixer.music.play(-1, 0.0)

渲染图片

  1. 加载图片对象

    zongzi = pygame.image.load("zongzi.png")
  2. 平滑缩放图像,可以控制图片的大小。

    zongzi = pygame.transform.smoothscale(zongzi, (500, 700))
  3. 图片透明度设置

    mask.set_alpha(200)
  4. 渲染图片

    screen.blit(zongzi,(200,200))

文字渲染

  1. 通过字体文件获得字体对象

    fontObj = pygame.font.Font('Songti.ttc', 26) 
  2. 配置要显示的文字

可以设置文字的内容及字体颜色。

textSurfaceObj = fontObj.render('你真棒,粽宝宝已成功佩戴好口罩!', False, (255,10,10))

键盘控制

使用 pygame.KEYDOWN 获取键盘事件。
K_UP,K_DOWN,K_LEFT,K_RIGHT 分别对应键盘方向键上下左右
通过坐标的加减,来改变坐标的位置,这里以10为按键一次的移动距离。

if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_UP:
        mask_y -= 10
    if event.key == pygame.K_DOWN:
        mask_y += 10
    if event.key == pygame.K_LEFT:
        mask_x -= 10
    if event.key == pygame.K_RIGHT:
        mask_x += 10

思考

对啦,整个游戏其实就是一个状态机,总共有开始,胜利 ,游戏中三种状态。那么我们可以使用一个 while 语句,搞起一个事件循环 。就可以一直愉快滴玩耍啦!开心不开心?

虽然该篇程序没有复杂的算法,但使用简单的顺序,判断,循环 语句就可实现稍稍复杂的小游戏。

正所谓:大道至简 重剑无锋 大巧不工

这个游戏还有很多可以扩展的内容,下面留下几个思考题,让游戏更好玩吧~

  1. 增加游戏难度,如何让粽子宝宝随机移动,一边移动一边尝试戴口罩?[已实现]

zongzi_move.gif

  1. 使用鼠标控制口罩。[已实现]

原理:实时获取鼠标光标的坐标,将图片的坐标与鼠标光标的相对位置绑定即可

# 获取光标位置
x, y = pygame.mouse.get_pos()

mask_mouse.gif

  1. 加入计时及显示功能。

源码见: https://github.com/spaceack/spaceack_games/tree/main/mask_zongzi 或关注公众号【编程之舞】回复maskzongzi领取。

目录
相关文章
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
751 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
801 7
|
8月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
11月前
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
1301 1
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
801 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
UED Python
python编写小游戏
【7月更文挑战第6天】
536 1
|
开发者 Python
入门实战丨Python小游戏经典案例
入门实战丨Python小游戏经典案例
502 4
|
程序员 C# Python
100行python代码,轻松完成贪吃蛇小游戏_c#游戏100行代码(2)
100行python代码,轻松完成贪吃蛇小游戏_c#游戏100行代码(2)
|
机器学习/深度学习 存储 安全
基于YOLOv8深度学习的人脸面部口罩检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的人脸面部口罩检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏

推荐镜像

更多