今天学习Python游戏开发,当然这里说的是小游戏。主要学习一下Python的游戏库,然后完成一个小游戏。
小游戏开发其实很简单。需求先理解开发言语的游戏库的用法,包括怎样创立一个显现区域?怎样刷新显现区域?根本图形怎样绘制?以及事情处置逻辑是怎样的?在学习了游戏库的运用后,剩下的就是完成游戏规则和算法,然后遵照开发言语游戏库(框架)的逻辑,完成游戏显现和控制。
今天我们要用到的库是pygame。首先学习一下根本运用,然后依照惯例,编写一个贪吃蛇的小游戏。
pygame基本框架
下面是Pygame的一个根本框架实例代码,包含了游戏窗口创立,矩形绘图,界面刷新,按键事情处置等。先感受一下,然后逐一阐明。
运转效果,黑背景的显现区域上面有一个白色的方块,从显现区域的左上角到右下角平滑的循环挪动,按方向键左能够关掉游戏窗口:
游戏显现区域
pygame先要调用init()办法停止初始化,然后创立显现区域pygame.display是创立一个显现区域(或窗口),能够设置显现区域的大小,游戏的称号,游戏的图标等等。关键办法就是set_mode()。size参数是一个二元元组,表示显现区域的长和宽;flags参数表示一些特性,默许值是0,表示不运用特性,可用的值FULLSCREEN,RESIZEBLE,NOFRAME,DOUBLEBUF;depth参数表示色深。
图形绘制
根本图形:矩形、圆形、三角形等。pygame的draw停止图形绘制。rect()办法绘制矩形,第一个参数是显现区域的句柄,也就是第一步创立显现区域得到的值;第二个参数表示矩形区域的颜色;第三个参数表示矩形的起点坐标和长宽;第四个参数表示边线的宽度,默许是0,表示无边线填充矩形,假如设置的话表示有边线的空心矩形。
界面刷新
显现界面更新,才干显现绘制的图形。经过调用display的update()办法,停止界面更新。
游戏区域需求不时刷新,才干看到物体的挪动,所以需求设置一个界面刷新频率。time模块经过设置时钟的刷新频率(tick()办法),来停止不时的界面更新。
事情处置
Pygame的event提供get()办法获得游戏事情
贪吃蛇
在开端编码之前,我们需求先停止剖析设计。这点很重要,只要想分明了,才干做出一个好的产品/功用。
食物设计:
一个矩形代表一个食物
食物随机呈现
屏幕中,有且只要一个食物
食物不能呈现在蛇身(随机食物不能与蛇堆叠)
蛇设计:
蛇分蛇头和蛇尾
初始长度3,蛇头1,蛇身1,蛇尾1
蛇头=蛇身=蛇尾=食物
每次挪动一蛇头的间隔
经过键盘的方向键上下左右控制蛇头挪动
蛇头撞到蛇身或蛇尾或显现区域边境,游戏完毕
蛇头与食物叠加,表示吃到食物,蛇身增加一个食物长度
显现区域:
全屏显现
其他:
按ESC键退出游戏
算法设计:
贪吃蛇游戏的关键是蛇的挪动算法。其实原理很简单蛇头前面增加一个,尾巴消掉。蛇身不论有几个都不用动。
我们看一下运转效果:
写在结尾的话
至此,我们学习了pygame库,并运用此框架完成了小游戏贪吃蛇(Gluttonous Snake)。
源码地址:
https://github.com/stonedong/pythonworld/blob/master/PythonGame.py