编程学习 —— 为兴趣学编程编程学习 —— 为兴趣学编程
首页
Python
C 语言
数据库
软件下载
关于
首页
Python
C 语言
数据库
软件下载
关于
  • 首页
  • Python
    • 游戏编程
    • 自学资源
    • 编程工具
    • 链接
  • C 语言
  • 数据库
  • 软件下载
  • 关于

介绍

PyGame 库是专门为了帮助您做出的游戏和其他多媒体应用 Python 编程语言的一个开放源代码模块。构建于高度可移植的SDL(Simple DirectMedia Layer)开发库的基础之上,可以运行在许多平台和操作系统上。通过使用PyGame模块,您可以控制游戏的逻辑和图形,而无需担心处理视频和音频所需的后端复杂性。

pygametest

安装

在安装PyGame之前,请先检查Python是否已经安装,并且可以正常使用。 Windows10以上系统,使用如下步骤检查, 【Mac】与【Win7】系统第1步不同,从第2步开始相同

  1. 打开 Terminal (在 windows 的搜索栏中输入 terminal,然后敲【回车】键,以下操作在弹出的 Terminal 窗口中进行)
  2. 输入 python --version
  3. 输入 pip --version

如果能正常显示 python 和 pip 的版本号信息,就说明你的 python 和 pip 已经安装好了,如下图所示

pyversion

  1. 输入 pip install pygame 开始安装 PyGame

pygameinstall

  1. 出现 Successfully installed pygame 表示安装成功

pygameinstall

  1. 你可以使用以下命令快速开始一个游戏,来体验一下 PyGame
python -m pygame.examples.aliens

pygametest

编程工具安装与配置

VsCode 安装与配置

第一个窗口程序

在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

【未完待续】

实战项目

五子棋

相关链接

官网链接 (英文)

项目首页 (英文)

源代码 (英文)

下一页
自学资源