IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Python】Pygame学习制作五子棋笔记 -> 正文阅读

[Python知识库]【Python】Pygame学习制作五子棋笔记

前几天突发奇想做一个五子棋,但是技术储备不足,于是就在C站找资料,于是我就借鉴大佬做的五子棋,根据其思路,我做的一些笔记。

目录

一,棋盘的绘制

1.窗口

?2.网格

3.星位

二,游戏功能介绍

1.下棋

2.胜利的判断

三,胜利提示

1.棋子上的显示

2.胜利提示窗口


大佬的代码写的已经很详细了,我就不全拿出来,点击下方链接查看全部代码。?

Python Pygame制作简单五子棋游戏(详细代码+解释)_Guapifang的博客-CSDN博客_简单python五子棋代码https://blog.csdn.net/weixin_43918046/article/details/119521845?spm=1001.2014.3001.5506

一,棋盘的绘制

1.窗口

这是用代码写出来的UI?

# 创建窗体
screen = pygame.display.set_mode((670, 670))
# 背景板颜色
Checkerboard_Color = (0xE3, 0x92, 0x65)

?

?2.网格

棋盘上的线条是通过循环和if条件语句绘制而成

for循环绘制网格线,if条件语句则是让边缘线加粗。

# 画边缘线
    for i in range(27, 670, 44):
        # 先画竖线
        if i == 27 or i == 670 - 27:
            # 边缘线稍微粗一些
            pygame.draw.line(screen, line_color, [i, 27], [i, 670 - 27], 4)
        else:
            pygame.draw.line(screen, line_color, [i, 27], [i, 670 - 27], 2)
        # 再画横线
        # 边缘线稍微粗一些
        if i == 27 or i == 670 - 27:
            # 边缘线
            pygame.draw.line(screen, line_color, [27, i], [670 - 27, i], 4)
        else:
            pygame.draw.line(screen, line_color, [27, i], [670 - 27, i], 2)
    # 边框内线      起点、终点、步长
    for i in range(32, 670, 605):
        pygame.draw.line(screen, line_color, [i, 27], [i, 670 - 27], 2)
        pygame.draw.line(screen, line_color, [27, i], [670 - 27, i], 2)

3.星位

?之前不懂这是什么意思,后来C站学习Pygame的基础,知道这句话的意思是画圆。

    # 在棋盘中心画个小圆表示正中心位置                 位置              半径、线厚度
    pygame.draw.circle(screen, line_color, [27 + 44 * 7, 27 + 44 * 7], 8, 10)
    # 设置四个角落的标点
    # 左上
    pygame.draw.circle(screen, line_color, [27 + 44 * 3, 27 + 44 * 3], 6, 10)
    # 右上
    pygame.draw.circle(screen, line_color, [27 + 44 * 11, 27 + 44 * 11], 6, 10)
    # 左下
    pygame.draw.circle(screen, line_color, [27 + 44 * 3, 27 + 44 * 11], 6, 10)
    # 右下
    pygame.draw.circle(screen, line_color, [27 + 44 * 11, 27 + 44 * 3], 6, 10)

二,游戏功能介绍

1.下棋

把鼠标设置为一个圆圈,让下棋的人看起来跟直观,不容易下错地方。

# 获取鼠标坐标信息
x, y = pygame.mouse.get_pos()
x, y = find_pos(x, y)
   

?棋盘上没有棋子的时候圆圈是黑色,有棋子的时候变成了白色。

# 把鼠标设置成圆圈
if check_over_pos(x, y, over_pos):
        #                       颜色         确定位置   长度、宽度、线厚度、圆角度
    pygame.draw.rect(screen, [0, 0, 30], [x - 22, y - 22, 44, 44], 3, 20)
    # 有棋子后颜色变白
else:
    pygame.draw.rect(screen, [224, 224, 223], [x - 22, y - 22, 44, 44], 3, 20)

?定义棋子的颜色

# 白棋颜色
white_color = [244, 244, 244]
# 黑棋颜色
black_color = [10, 10, 10]

2.胜利的判断

胜利的判断是通过设置四个方向的条件,来判定输赢。下面是我拿出一方向来解释。


    # zeros(shape, dtype=float)
    #                   数据类型对象为整数
    mp = np.zeros([15, 15], dtype=int)
    # 确定落棋位置
    for val in over_pos:
        x = int((val[0][0] - 27) / 44)
        y = int((val[0][1] - 27) / 44)
        # 让黑白棋交替
        if val[1] == white_color:
            mp[x][y] = 2  # 表示白子
        else:
            mp[x][y] = 1  # 表示黑子
# 向右倾斜连线
    # i代表竖直,j代表竖直方向
    #用循环嵌套来同时判定水平和竖直方向棋子的位置。
    for i in range(15):
        for j in range(15):
            pos1 = []
            pos2 = []
            for k in range(15):
                # 竖直方向+1,竖直方向向左+1
                if i + k >= 15 or j - k < 0:
                    # 如果达到条件,停止下面的操作
                    break
                if mp[i + k][j - k] == 1:
                    pos1.append([i + k, j - k])
                else:
                    pos1 = []
                if mp[i + k][j - k] == 2:
                    pos2.append([i + k, j - k])
                else:
                    pos2 = []
                if len(pos1) >= 5:
                    return [1, pos1]
                if len(pos2) >= 5:
                    return [2, pos2]

三,胜利提示

1.棋子上的显示

如图所示,连起来的五个棋子周围会显示方框提示。

# 获胜后显示                   颜色           确定位置                               长度、宽度、厚度、圆角
pygame.draw.rect(screen, [0, 0, 153], [pos[0] * 44 + 27 - 22, pos[1] * 44 + 27 - 22, 44, 44], 2, 5)

2.胜利提示窗口

这个代码我在C站找了很久都没有找到,最后是我的老师告诉我这串代码。

# 首先在代码最前面导入tkiner
from tkinter import *
from tkinter import messagebox        
        

        #代表白色棋子
        if val[1] == white_color:
            Tk().wm_withdraw()
            messagebox.showinfo('白棋获胜', '恭喜白棋一方获胜')
        else:
            Tk().wm_withdraw()
            messagebox.showinfo('黑棋获胜', '恭喜黑棋一方获胜')

?喜欢的话,请留下你的赞美。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:40:12  更:2022-08-06 10:40:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:08:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码