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

作者:J.sky · 发表于:
2017-12-29T20:18:35.000000Z
· 更新于:
2023-08-13T22:54:33.267730Z
· Tag: pygame

以前学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