零基础也能玩转!用Python 3分钟写出你的第一个五子棋游戏

liftword3周前 (04-07)技术文章11

前言:五子棋的魅力与Python的魔力

五子棋作为历史悠久的策略游戏,凭借简单易学的规则和变幻莫测的战术,深受广大玩家喜爱。而Python作为入门级编程语言,凭借其简洁的语法和丰富的库支持,让编程小白也能轻松实现自己的创意。今天,我们就手把手教你用Python编写一个简单但功能齐全的五子棋游戏,让你在朋友面前秀一把编程技能!

一、准备工作:你需要的工具和环境

1. Python 3:确保已安装Python环境(官网下载:[python.org](https://www.python.org/))。

2. Tkinter库:Python自带的GUI库,无需额外安装,适合快速构建图形界面。

3. 记事本或IDE:推荐使用PyCharm或VS Code编写代码。

二、游戏设计思路

我们的五子棋游戏将实现以下功能:

- 双人对战:通过鼠标左/右键交替落子(黑棋/白棋)。

- 实时胜负判断:当一方连成五子时弹出提示框。

- 棋盘重置:点击按钮可重新开始游戏。

三、代码实现:分步详解

1. 导入库并初始化界面

```python

import tkinter as tk

from tkinter import messagebox

# 创建主窗口

root = tk.Tk()

root.title("Python五子棋")

canvas = tk.Canvas(root, width=450, height=450, bg="saddlebrown")

canvas.pack()

# 棋盘参数

BOARD_SIZE = 15

CELL_SIZE = 30 # 每个格子的大小

board = [[None for _ in range(BOARD_SIZE)] for _ in range(BOARD_SIZE)]

current_player = "black" # 黑棋先手

```2. 绘制棋盘**

```python

# 绘制棋盘线和星位

for i in range(BOARD_SIZE):

canvas.create_line(CELL_SIZE, i*CELL_SIZE + CELL_SIZE,

(BOARD_SIZE-1)*CELL_SIZE, i*CELL_SIZE + CELL_SIZE, fill="white")

canvas.create_line(i*CELL_SIZE + CELL_SIZE, CELL_SIZE,

i*CELL_SIZE + CELL_SIZE, (BOARD_SIZE-1)*CELL_SIZE, fill="white")


# 绘制星位(天元和四个角)

STAR_POSITIONS = [(3,3), (3,11), (11,3), (11,11), (7,7)]

for pos in STAR_POSITIONS:

x, y = pos

canvas.create_oval(x*CELL_SIZE, y*CELL_SIZE,

(x+1)*CELL_SIZE, (y+1)*CELL_SIZE,

fill="white", outline="white")

```

3. 落子逻辑与胜负判断

```python

def place_piece(event):

global current_player

# 计算鼠标点击的棋盘坐标

x = int((event.x) // CELL_SIZE)

y = int((event.y) // CELL_SIZE)

# 检查位置是否合法

if board[y][x] or x < 0 or x>= BOARD_SIZE or y < 0 or y>= BOARD_SIZE:

return


# 绘制棋子

color = current_player

board[y][x] = color

canvas.create_oval(x*CELL_SIZE, y*CELL_SIZE,

(x+1)*CELL_SIZE, (y+1)*CELL_SIZE,

fill=color, outline="black")

# 判断胜负

if check_win(x, y, color):

messagebox.showinfo("游戏结束", f"{color}棋胜利!")

reset_game()

else:

current_player = "white" if current_player == "black" else "black"


def check_win(x, y, color):

# 检查四个方向(横向、纵向、主对角线、副对角线)

directions = [(1,0), (0,1), (1,1), (1,-1)]

for dx, dy in directions:

count = 1

# 向一个方向延伸检查

i, j = x + dx, y + dy

while 0<=i<BOARD_SIZE and 0<=j<BOARD_SIZE and board[j][i] == color:

count +=1

i += dx

j += dy

# 反方向延伸检查

i, j = x - dx, y - dy

while 0<=i<BOARD_SIZE and 0<=j<BOARD_SIZE and board[j][i] == color:

count +=1

i -= dx

j -= dy

if count >=5:

return True

return False


def reset_game():

global board, current_player

board = [[None for _ in range(BOARD_SIZE)] for _ in range(BOARD_SIZE)]

current_player = "black"

canvas.delete("all") # 清空画布

# 重新绘制棋盘

for i in range(BOARD_SIZE):

canvas.create_line(CELL_SIZE, i*CELL_SIZE + CELL_SIZE,

(BOARD_SIZE-1)*CELL_SIZE, i*CELL_SIZE + CELL_SIZE, fill="white")

canvas.create_line(i*CELL_SIZE + CELL_SIZE, CELL_SIZE,

i*CELL_SIZE + CELL_SIZE, (BOARD_SIZE-1)*CELL_SIZE, fill="white")

for pos in STAR_POSITIONS:

x, y = pos

canvas.create_oval(x*CELL_SIZE, y*CELL_SIZE,

(x+1)*CELL_SIZE, (y+1)*CELL_SIZE,

fill="white", outline="white")

```4. 绑定事件与启动循环**

```python

# 绑定鼠标左键落子(黑棋)和右键(白棋)

canvas.bind("", place_piece)

canvas.bind("", place_piece) # 右键


# 重置按钮

reset_btn = tk.Button(root, text="重新开始", command=reset_game)

reset_btn.pack()


root.mainloop()

```四、运行效果

- 界面说明:15x15的棋盘,中央为天元(白圈),点击左键下黑子,右键下白子。

- 胜负提示:当一方连成五子时,弹窗显示胜利信息并重置棋盘。

五、扩展与优化建议

1. AI对手:使用简单算法(如随机落子或贪心算法)实现单人模式。

2. 网络对战:通过Socket或Web框架实现双人联机。

3. 动画效果:添加棋子落子动画或胜利特效。

4. 历史回放:记录每一步操作,支持撤销和回放。

结语:编程的乐趣在于创造

通过这篇教程,你不仅学会了用Python实现经典游戏,更掌握了GUI编程、事件驱动和逻辑判断的核心思想。五子棋的代码虽小,但却是通往更大项目的阶梯。不妨尝试在代码中添加更多创意,比如自定义棋盘大小、AI难度等级,甚至将其包装成可执行文件分享给朋友!#Python#

相关文章

每天10分钟之300分钟的Python基础入门

每天的学习内容都有所侧重,帮助你逐步掌握Python的基础知识和一些基本的编程技能。第1-5天:基础语法与概念第1天:学习Python的安装,了解IDLE、PyCharm等集成开发环境。第2天:学习P...

从0开始学Python你准备好了吗?第一章·第五课 第一个python代码!

上节课我们把所需要的工具都安装完成了,本节课我们来写第一个Python代码!!这是我们必学的基础,Hello world!首先在自己电脑里创建一个目录,建议在D、E或F盘创建一个文件夹,命名不能用中文...

Python一小时入门教程

以下是 Python 快速入门指南,涵盖基础语法和常用操作,帮助你快速上手:1. 安装与环境安装 Python:访问 [python.org](https://www.python.org/) 下载最...

Python入门不再难!这10个技巧让你代码效率翻倍

引言Python凭借其简洁的语法和强大的功能,成为新手入门编程的首选语言。但对于零基础学习者来说,如何快速掌握核心技巧并写出高效代码?本文精选10个Python实用技巧,涵盖开发环境配置、代码规范、高...

300分钟Python入门第1天 - 小明的编程之旅

小明是一名高中生,对编程非常感兴趣。他决定从Python开始学习。今天,他将安装Python并编写第一个程序。学习内容:编写第一个Python程序代码示例:# 这是小明的第一个Python程序 pri...

深入剖析Python基本函数:从基础到进阶的完整指南

引言Python作为一门简洁高效的编程语言,其函数系统是支撑代码模块化的核心机制。掌握Python函数的使用方法不仅能提升代码的可读性和复用性,还能帮助开发者理解面向对象编程和函数式编程的精髓。本文将...