惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
量子位
腾讯CDC
C
Check Point Blog
小众软件
小众软件
IT之家
IT之家
I
InfoQ
Hugging Face - Blog
Hugging Face - Blog
Stack Overflow Blog
Stack Overflow Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
博客园_首页
S
SegmentFault 最新的问题
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
Martin Fowler
Martin Fowler

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
“编学编玩”用Pygame编写游戏(7)Pingball弹球小游戏
J.sky · 2017-12-30 · via 碎言

以前学java的时候用java做了一个简单弹球小游戏,觉得还是蛮有意思的,这次用pygame重写一下试试,以前觉得游戏编程很简单,可能是考虑的太简单了,游戏的编写是步步为营,逻辑紧扣,错一点游戏都无法运行的,所以学习用面向对象方式编写游戏,是对python编程学习的强化练习,大家可以多试试。

Pingball游戏的设计

游戏很小,场景中的精灵有两个:球拍和一个小球。游戏的顺序包括:游戏开始画面,游戏主场景,游戏结束画面。 游戏逻辑:判断小球的Y坐标低于球拍的Y坐标值即为游戏结束,球拍和小球都有自己的运动逻辑。这么简单的游戏我们从哪里入手呢? 肯定是先创建一个游戏窗口啦:)

设定一些游戏的基本数据

游戏包括的主要数据有:

  • 游戏场景(宽+高)
  • 球拍,(宽,高,位置,移动速度)
  • 小球,(宽,高,位置,移动速度)
  • 游戏逻辑,判断游戏是否结束,暂停游戏,重新开始游戏,及一些文字的打印。

有了这些构思,我们一样一样的通过我们之前封装的PY_RPG及pygame提供的一些功能来实现这个小游戏。

创建场景

一共有三个场景,分别为游戏开始画面MainScene游戏主场景Pingball游戏结束画面GameOverScene

先创建三个场景的类,通过继承PY_RPG.Scene,会很方便的创建出三个类,分别修改三个场景的一些参数,然后设置键盘判断,进行游戏场景的跳转。 因为Scene中的三个方法分工非常明确,我们可以很好的控制游戏场景,这样我们可以先把三个场景制作出来,然后进行测试,虽然游戏主场景没有任何精灵, 但游戏场景整体是可以切换的。

创建球拍与球

RacketBall分别进行一些属性设置,其中Racket相对来说比较简单,只需要左右移动,做一个场景边界判断即可。 Ball的属性多了一些,需要有移动速度,需要通过update方法进移动的控制。

游戏逻辑判断

在游戏主场景中的Pingball.update方法中进行了一些游戏逻辑判断,包括:球遇到边界反弹,小球遇到球拍反弹后增加速度,和游戏结束的判断。 这个方法中还需要添加球与球拍自己的update方法,用来更新自己的坐标变化。

游戏结束

游戏结束后,还可以通过按键重新开始,在Pingball中有个replay的函数,是用来控制重新开始后球体的位置.

功能扩展

这个弹球游戏只完成了最最最基本的功能,扩展性很强,比如添加关卡,打印得分,增加一些特效,只要你想修改,弹球也一样可以玩的很嗨。

以下为游戏效果图,建议下载相关代码跑一下,有问题可以留言给我。

输入图片说明

输入图片说明

输入图片说明

本文源码下载

请git clone My_pygame下所有代码,以免造成游戏跑不起来的情况。本例源文件:PY_RPG.pingball.py