介绍
PyGame 库是专门为了帮助您做出的游戏和其他多媒体应用 Python 编程语言的一个开放源代码模块。构建于高度可移植的SDL(Simple DirectMedia Layer)开发库的基础之上,可以运行在许多平台和操作系统上。通过使用PyGame模块,您可以控制游戏的逻辑和图形,而无需担心处理视频和音频所需的后端复杂性。
安装
在安装PyGame之前,请先检查Python是否已经安装,并且可以正常使用。 Windows10以上系统,使用如下步骤检查, 【Mac】与【Win7】系统第1步不同,从第2步开始相同
- 打开
Terminal
(在 windows 的搜索栏中输入 terminal,然后敲【回车】键,以下操作在弹出的 Terminal 窗口中进行) - 输入
python --version
- 输入
pip --version
如果能正常显示 python 和 pip 的版本号信息,就说明你的 python 和 pip 已经安装好了,如下图所示
- 输入
pip install pygame
开始安装 PyGame
- 出现
Successfully installed pygame
表示安装成功
- 你可以使用以下命令快速开始一个游戏,来体验一下 PyGame
python -m pygame.examples.aliens
编程工具安装与配置
第一个窗口程序
在VsCode中打开一个文件夹,系统会弹出提示,询问你是否信任此文件夹,选择【信任】此文件夹, 在这个文件夹下新建chess.py
文件,打开chess.py
文件,输入以下代码,输入完成后按【Ctrl+s
】保存代码, 然后点击右上角【运行】按钮,会有一个白色的窗口显示出来。
如果没有【运行】按钮参见 vscode安装与设置
import pygame # 导入包
pygame.init() # 初始化
pygame.display.set_caption("五子棋") # 设置标题
screen = pygame.display.set_mode((800, 600)) # 定义窗口大小
# 运行循环
while True:
event_list = pygame.event.get() # 读取消息列表
for event in event_list: # 循环读取消息列表中的每一个消息
if event.type == pygame.QUIT: # 判断消息类型是否为退出消息
pygame.quit() # pygame 退出
exit() # python 退出
screen.fill((255,255,255)) # 窗口填充白色
pygame.display.flip() # 窗口全部刷新
白色是(255,255,255))
,黑色是 (0, 0, 0)
,其它颜色见下表
颜色 | RGB 数值 |
---|---|
红色 | (255, 0, 0) |
绿色 | (0, 255, 0) |
蓝色 | (0, 0, 255) |
灰色 | (190, 190, 190) |
深绿色 | (0, 100, 0) |
金色 | (255, 215, 0) |
紫罗兰 | (238, 130, 238) |
紫色 | (160, 32, 240) |
黄色 | (255, 255, 0) |
橙色 | (255, 165, 0) |
粉色 | (255, 192, 203) |
青绿色 | (0, 255, 255) |
棕褐色 | (210, 180, 140) |
画棋盘
接下来,我们需要在窗口上画上棋盘,画棋盘的功能实际上是画线,五子棋的棋盘横竖各15条线,PyGame中的画线功能 是 pygame.draw.line()
,所以我们使用循环在窗口中画上15条横线,输入以下代码。
# 常量定义
WINDOW_SIZE = 800 # 窗口宽度
WINDOW_HEIGHT = 600 # 窗口高度
GRID_SIZE = 40 # 单元格大小
GRID_COUNT = 15 # 单元格数量
BLACK = (0, 0, 0) # 定义黑色
def draw_board():
# 画棋盘线
board_size = GRID_SIZE * (GRID_COUNT - 1) # 棋盘宽度
# 开始点X坐标,向左偏移100像素,为右侧按钮留出空间
start_x = (WINDOW_SIZE - board_size) // 2 - 100
start_y = (WINDOW_HEIGHT - board_size) // 2 # 开始点Y坐标
# 循环画线
for i in range(GRID_COUNT):
# 横线
pygame.draw.line(screen, BLACK,
(start_x, start_y + i * GRID_SIZE),
(start_x + board_size, start_y + i * GRID_SIZE))
# 竖线
pygame.draw.line(screen, BLACK,
(start_x + i * GRID_SIZE, start_y),
(start_x + i * GRID_SIZE, start_y + board_size))
并且在【运行循环】代码中添加对【画棋盘】代码的调用
完整的代码如下 :
import pygame # 导入包
# 常量定义
WINDOW_SIZE = 800 # 窗口宽度
WINDOW_HEIGHT = 600 # 窗口高度
GRID_SIZE = 40 # 单元格大小
GRID_COUNT = 15 # 单元格数量
BLACK = (0, 0, 0) # 定义黑色
# 初始化
pygame.init()
# 设置标题
pygame.display.set_caption("五子棋")
# 定义窗口大小
screen = pygame.display.set_mode((800, 600))
def draw_board():
# 画棋盘线
board_size = GRID_SIZE * (GRID_COUNT - 1) # 棋盘宽度
# 开始点X坐标,向左偏移100像素,为右侧按钮留出空间
start_x = (WINDOW_SIZE - board_size) // 2 - 100
start_y = (WINDOW_HEIGHT - board_size) // 2 # 开始点Y坐标
# 循环画线
for i in range(GRID_COUNT):
# 横线
pygame.draw.line(screen, BLACK,
(start_x, start_y + i * GRID_SIZE),
(start_x + board_size, start_y + i * GRID_SIZE))
# 竖线
pygame.draw.line(screen, BLACK,
(start_x + i * GRID_SIZE, start_y),
(start_x + i * GRID_SIZE, start_y + board_size))
#
#
#
#
# 运行循环
while True:
event_list = pygame.event.get() # 读取消息列表
for event in event_list: # 循环读取消息列表中的每一个消息
if event.type == pygame.QUIT: # 判断消息类型是否为退出消息
pygame.quit() # pygame 退出
exit() # python 退出
screen.fill((255,255,255)) # 窗口填充白色
draw_board()
pygame.display.flip() # 窗口全部刷新
以上代码还有可以改进的地方,大家可以尝试修改第【16】行和第【49】行代码
查看可以改进的代码
第16行可以修改为:
screen = pygame.display.set_mode((WINDOW_SIZE, WINDOW_HEIGHT))
第49行可以修改为:
WHITE = (255, 255, 255) # 定义白色
screen.fill(WHITE)
运行代码后,会显示以下窗口,右侧的白边是故意留出来的,用来画操作按钮
接下来我们画出中心点,画中心点的方法是计算出棋盘中心位置,然后使用 pygame.draw.circle
画圆, 把下面的代码添加到【36-39】行【#】号的位置
# 添加中心点
center_x = start_x + board_size // 2 # 计算出中心点X坐标的位置
center_y = start_y + board_size // 2 # 计算出中心点Y坐标的位置
pygame.draw.circle(screen, BLACK, (center_x, center_y), 8) # 在中心点画圆,半径为8
【未完待续】