pygame只能编写游戏_使用pygame编写游戏(1)

本文是针对有一定Python基础和pygame知识的读者的一篇进阶教程,旨在帮助读者深入理解并掌握pygame库。教程通过创建一个2D爬虫游戏样例,讲解了如何实现爬虫的移动、碰撞反弹、随机行为等功能。此外,还强调了游戏循环、屏幕刷新和对象更新的重要性。读者需要了解Python、基础数学和物理学,以及pygame的基础知识。
摘要由CSDN通过智能技术生成

1. 介绍

游戏是编程应用较多的地方。即使是写一个最简单的游戏,你要熟悉UI制作,数学,物理学,甚至人工智能。这是一个练习编程的非常有趣的方式。

如果你是(或者不是)python语言的粉丝,你对游戏很感兴趣,那么pygame是一个非常棒的游戏编程库,你需要仔细的来学习它。它可以运行在所有的主流平台上,提供简单的工具函数就能处理复杂的图像处理,比如图像的移动、声音等。

网上有很多pygame的入门教程,但它们很多都是讲基本的。甚至Pygame book也属于介绍性级别的。为了更进一步提高对pygame的掌握,我决定写一个我自己的教程,希望能为使用pygame的人提供更进一步的合理学习。

本教程明确鼓励你去改进代码,并强烈推荐做一下后面的练习题,这些练习题可以让你对学到内容有更好的认知。

2. 写在前面

基于以上说的,这个教程并不适合初学者。如果你刚开始学习pygame,你可以看一下这些教程,推荐看这些基本的介绍教程。

在这里,我认为你具备以下知识:

1. Python(你可能不是它的高级用户,但也完全不是一个初学者)。

2. 数学和物理学的基本知识(向量,正方形,运动定律,概率等等)。我会解释所有非常见的知识点,但我不会教你怎么增加向量,等等。

3. 对pygame的认知。比如,你已经学习过我之前提到的介绍性的pygame教程。、

还有要说的是,我之关注2D游戏,3D游戏会是更高层次更复杂,我会提出一个不是很完整的3D游戏样本。

3. 让我们开始吧

在这个部分,我们完整写一个游戏样例:模拟爬虫,一些生物在屏幕上移动,从墙上弹回来,时不时的改变方向。

虽然这称不上是一个游戏,但这是我们实现更多不同想法的好的起点。I’ll leave myself the luxury of postponing the decision of which game it will eventually be, for now.

4. 代码

第一部分完整的代码包,包括需要的图片,可以在这里下载。我建议你下载下来并运行它。一遍看教程,一遍看代码将会对你非常有好处。我在python2.5.2,pygame1.8.1上测试过了,也可能会在其它版本上运行比较好。

5. pygame的文档

pygame的API文档很全。这里有pygame全部模块,类,常量,函数的列表,我建议对你不熟悉的类或者方法,多去查找这个文档。

6. 爬虫

好吧,我先明确以下该部分的目标:

我们想让爬虫能在屏幕上移动

爬虫的总数是可以轻易的配置的

爬虫碰到墙后能反弹

为让游戏更有趣,爬虫需要表现出半随机的动作

那么爬虫是什么?

爬虫是一张图片,在pygame的驱动下,能够移动或者旋转。由于图片的制作超出我的能力,我只让爬虫能够向左右上下移动,而45度方向移动无法实现。

爬虫的图片包含在下载包中的小的.png文件中。

注意到所有的爬虫图片头部方向都是一致的。

爬虫是怎么移动的?

如果你确定读过一个基本的pygame教程(没有吗?),你会知道移动其实是一种幻觉。电脑屏幕上没真正移动的东西。其实,程序会对一系列图片以比人眼睛快的多的速度进行移位。每秒30次或更多次刷新,会让图片看上去更加平滑。为了实现周期性的刷屏,游戏有一个"game loop"

7. 游戏循环

和GUI程序一样,每个游戏都有一个“主循环”。在pygame中,使用了一个简单的循环,如下:

就如我说的,这是一个基本的python循环--直到用户点击关闭窗口后,会给出退出消息,响应pygame.QUIT处理退出。

循环执行频度如何?这要取决于对clock.tick的调用。clock是pygame.time.Clock的对象,在此之前已经创建。调用tick的意思是:在下一个1/50秒到来前主循环休眠。在实际生活中,这限制了游戏的速度为50FPS,这是有好处的。一方面,我们可以让游戏更加平滑真实,另一方面,可以使游戏不能占用太多cpu资源。你可以尝试修改这个值,比如,当此值小于10,那么这个程序将会是什么样呢?我们看练习1和3.

现在是时候去看看关于tick的文档了。

每次循环都会重绘背景颜色,并且所有的爬虫会更新绘制。最终,整个屏幕会使用flip进行刷新(你应该看看它的文档了)。

8. 在循环之前

现在让我们看看在主循环之前都做了那些事情:ow let’s see what comes before the main loop:

开始的几行都是可以自说明的,我认为你已经了解如何初始化pygame,并且创建display对象。但是爬虫对象的创建呢?

爬虫是一系列爬虫对象的集合,这是整个游戏的心脏和灵魂。下面是爬虫类的声明和其构造函数的定义。

构造函数的参数有详细的说明文档,你可以看到它们在爬虫被创建时如何匹配的。

首先,我们传递screen surface给爬虫类。爬虫将使用它判读如何从墙上反弹回来,如何去绘制自己。

其次,爬虫可以从图片列表中任意选择一个(choice是一个标准的python模块),它有一个屏幕随机位置,随机的方向,移动速度被设定为0.1像素/每毫秒,或者说100个像素/秒。

英文原地址 http://eli.thegreenplace.net/2008/12/13/writing-a-game-in-python-with-pygame-part-i/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值