Windows下手把手教你python3编写小游戏一
- Python及Pygame简介
本文的所使用Python版本为3.6,其实这类小游戏和python版本没太大关系,开发这类游戏需要用到pygame包。Pygame是Python的一个package,是一组功能强大而有趣的模块,可用于管理图形、动画乃至声音,让你能够更轻松地开发复杂的游戏。通过使用Pygame来处理在屏幕上绘制图像等任务,你不用考虑众多烦琐而艰难的编码工作,而是将重点放在程序的高级逻辑上。Pygame可通过pip安装,其中各模块的方法和属性信息可在Pygame官网的帮助手册查询。
注意该游戏是一款射击游戏,将包含很多不同的文件,因此请在你的系统中新建一个文件夹,并将其命名为mygame 。请务必将这个项目的所有文件都存储到这个文件夹中,这样相关的import语句才能正确地工作。
检查python是否安装
首先,检查你的系统是否安装了Python。为此,在“开始”菜单中输入command 并按回车以打开一个命令窗口;你也可按住Shift键并右击桌面,再选择“在此处打开命令窗口”。在终
端窗口中输入python并按回车;如果出现了Python提示符(>>> ),就说明你的系统安装了Python。然而,你也可能会看到一条错误消息,指出python 是无法识别的命令。
如果是这样,就需要下载Windows Python安装程序。为此,请访问
您将看到两个按钮,分别用于下载Python 3和Python 2。单击用于下载Python 3的按钮,这会根据你的系统自动下载正确的安装程序。下载安装程序后,运行它。请务必选中复选框Add Python to PATH(如图下图所示),这让你能够更轻松地配置系统。
通过配置系统,让其能够在终端会话中运行Python,可简化文本编辑器的配置工作。打开一个命令窗口,并在其中执行命令python 。如果出现了Python提示符(>>> ),就说明Windows找到了你刚安装的Python版本。
安装Pygame
开始编码前,先来安装Pygame。下面介绍如何在Microsoft Windows中安装Pygame。使用Linux、OS X的读者请自行百度哈。打开一个终端窗口,并执行如下命令:
pip install pygame
在此之前,电脑必须正确安装pip和能连外网,执行完命令,你所要做的就是耐心等待!安装完毕在终端执行如下命令列出系统安装所有包:
pip list
要在确认安装成功,请启动一个Python终端会话,并尝试执行下面的命令来导入Pygame:
开始游戏项目
创建Pygame窗口以及响应用户输入
首先,我们创建一个空的Pygame窗口。使用Pygame编写的游戏的基本结构如下:
main.py
# -*- coding: UTF-8 -*-
import sys
import pygame
def run_game():
# 初始化游戏并创建一个屏幕对象
pygame.init()
screen = pygame.display.set_mode((900,600))
pygame.display.set_caption("NO23!bin")
# 设置背景色
bg_color = (0, 0, 0)
# 开始游戏的主循环
while True:
## 每次循环时都重绘屏幕
screen.fill(bg_color)
# 监视键盘和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# 让最近绘制的屏幕可见
pygame.display.flip()
run_game()
首先,我们导入了模块sys 和pygame 。模块pygame 包含开发游戏所需的功能。玩家退出时,我们将使用模块sys 来退出游戏。
游戏的开头是函数run_game() 。
pygame.init() 初始化背景设置,让Pygame能够正确地工作。
我们调用pygame.display.set_mode() 来创建一个名为screen 的显示窗口,这个游戏的所有图形元素都将在其中绘制。实参(900, 600) 是一个元组,指定了游戏窗口的尺寸。通过将这些尺寸值传递给pygame.display.set_mode() ,我们创建了一个宽900像素、高600像素的游戏窗口(你可以根据自己的显示器尺寸调整这些值)。对象screen 是一个surface。在Pygame中,surface是屏幕的一部分,用于显示游戏元素。在这个游戏中,每个元素都是一surface。
display.set_mode()返回的surface表示整个游戏窗口。我们激活游戏的动画循环后,每经过一次循环都将自动重绘这个surface。
这个游戏由一个while 循环控制,其中包含一个事件循环以及管理屏幕更新的代码。事件是用户玩游戏时执行的操作,如按键或移动鼠标。为让程序响应事件,我们编写一个事件循环,以侦听事件,并根据发生的事件执行相应的任务。for 循环就是一个事件循环。为访问Pygame检测到的事件,我们使用方法pygame.event.get() 。所有键盘和鼠标事件都将促使for 循环运行。在这个循环中,我们将编写一系列的if 语句来检测并响应特定的事件。例如,玩家单击游戏窗口的关闭按钮时,将检测到pygame.QUIT 事件,而我们调用sys.exit() 来退出游戏。调用了pygame.display.flip() ,命令Pygame让最近绘制的屏幕可见。在这里,它在每次执行while 循环时都绘制一个空屏幕,并擦去旧屏幕,使得只有新屏幕可见。在我们移动游戏元素时,pygame.display.flip() 将不断更新屏幕,以显示元素的新位置,并在原来的位置隐藏元素,从而营造平滑移动的效果。在这个基本的游戏结构中,最后一行调用run_game() ,这将初始化游戏并开始主循环。如果此时运行这些代码,你将看到一个空的Pygame窗口。之后所有游戏对象都会添加到这个窗口。
在Pygame中,颜色是以RGB值指定的。这种颜色由红色、绿色和蓝色值组成,其中每个值的可能取值范围都为0~255。颜色值(255, 0, 0)表示红色,(0, 255, 0)表示绿色,而(0, 0,255)表示蓝色。通过组合不同的RGB值,可创建1600万种颜色。在颜色值(0, 0, 0)中,它将背景设置为黑色。我们调用方法screen.fill() ,用背景色填充屏幕。
添加飞船图像
下面将飞船加入到游戏中。为了在屏幕上绘制玩家的飞船,我们将加载一幅图像,再使用Pygame方法blit() 绘制它。
main.py
# -*- coding: UTF-8 -*-
import sys
import pygame
class Ship():
def __init__(self, screen):
#初始化飞船并设置其初始位置
self.screen = screen
#加载飞船图像并获取其外接矩形
self.image = pygame.image.load('D:/Users/mygame/images/ship3.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
#将每艘新飞船放在屏幕底部中央
self.rect.centerx = self.screen_rect.centerx
self.rect.bottom = self.screen_rect.bottom
def blitme(self):
#在指定位置绘制飞船
self.screen.blit(self.image,self.rect)
def run_game():
# 初始化游戏并创建一个屏幕对象
pygame.init()
screen = pygame.display.set_mode((900,600))
pygame.display.set_caption("NO23!bin")
# 设置背景色
bg_color = (0,0,0)
# 创建一艘飞船
ship=Ship(screen)
# 开始游戏的主循环
while True:
## 每次循环时都重绘屏幕
screen.fill(bg_color)
ship.blitme()
# 监视键盘和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT: