1.引言
我们python的基本知识已经学习得差不多了,老师说其实python强大的地方除了它的简便和灵活外,还有很多的模块供以使用。通过了解,我对python中的pygame模块产生了好奇心。接下来就是利用这个模块,对经典小游戏贪吃蛇进行解析和实现。
2.前期准备
游戏规则:游戏中,玩家将化作一条单一方向移动的蛇,通过控制上下左右四个方向,获取随机出现的食物,增长自身长度,如果在游戏过程中,触碰四周墙壁或者嘴巴与自己的身体有接触,则游戏结束。
关键词:
(1) 单一方向移动。
(2) 方向控制。
(3) 食物随机出现。
(4) 吃掉食物增长蛇的长度。
(5) 死亡(游戏结束)条件。
除此之外我们还需要对游戏环境,游戏窗口以及对其操作,游戏画面设计等进行编写实现。
3.代码实现
(1) 先编写main函数大概构造出代码纲领。
def main():
global FPSCLOCK, DISPLAYSURF, BASICFONT
#初始化
pygame.init()
#时钟
FPSCLOCK = pygame.time.Clock()
#显示窗口大小
DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
#字体
BASICFONT = pygame.font.Font('freesansbold.ttf', 18)
#窗口名字
pygame.display.set_caption('Snake')
showStartScreen()
while True:
runGame()
showGameOverScreen()
在此设置了一些比如时钟、游戏窗口大小、窗口名字等基本信息,还编写了在游戏程序的运行经过——简单开场之后进入循环,循环游戏主体以及游戏结束收场。
接下来完善showStartScreen()、runGame()和showGameOverScreen()三个游戏运行过程函数的内容。
(2) 为了方便规划设计与画图,把窗口划分成相对于像素来说更大的单位。
#窗口大小
WINDOWWIDTH = 640
WINDOWHEIGHT = 480
#基本单位
CELLSIZE = 20
CELLWIDTH = int(WINDOWWIDTH / CELLSIZE)
CELLHEIGHT = int(WINDOWHEIGHT / CELLSIZE)
(3) 对showStartScreen()与showGameOverScreen()的编写(他们是一样的设计元素):
应该实现的功能:
(1)开场有游戏的标题snake,结束有游戏的状态gameover。
(2)有操作提示语句
(3)完成操作之后进入游戏
图1 showStartScreen()函数效果图
实现功能(1)需要包括如下类型的代码:
title = pygame.font.Font('freesansbold.ttf', 150) #字体
gameSurf = title.render('Snake', True, WHITE) #内容
gameRect = gameSurf.get_rect()
gameRect.midtop = (WINDOWWIDTH / 2, WINDOWHEIGHT / 2 - 100