碎言博客

“编学编玩”用Pygame编写游戏(7)Pingball弹球小游戏

J.sky 2017-12-29 20:18:35 pygame

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

Pingball游戏的设计

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

设定一些游戏的基本数据

游戏包括的主要数据有:

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

创建场景

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

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

创建球拍与球

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

游戏逻辑判断

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

游戏结束

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

功能扩展

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

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

输入图片说明

输入图片说明

输入图片说明

本文源码下载

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

发现错误?想参与编辑? 在 GitHub 上编辑此页!

如果您有什么问题,欢迎加入Python/Javascript学习讨论群询问

Python/Javascript学习QQ群号:217840699