Python实现简单井字棋游戏:逻辑判断与代码解析
本文介绍如何使用Python语言实现经典的井字棋(Tic-Tac-Toe)游戏。文章详细解析了棋盘初始化、玩家轮流落子以及核心的胜负判定逻辑,涵盖横、竖、斜三个方向的连线检测。通过完整的Python代码示例,展示了从界面打印到游戏循环控制的实现过程,并包含平局情况的处理,适合Python初学者学习二维数组操作及基础游戏逻辑开发。
井字棋游戏规则简介
井字棋(Tic-Tac-Toe)是一种在3x3网格上进行的连珠类游戏,其规则与五子棋有相似之处。由于棋盘通常没有边框,且网格线排列成“井”字形,因此得名。该游戏仅需纸笔即可进行,由两名玩家分别代表“O”和“X”轮流在格子中放置标记,通常先手为“X”。当任意一方的三个标记在横向、纵向或对角线上连成一条直线时,该方获胜。
胜负判定逻辑分析
实现该游戏的关键难点在于如何准确判断是否形成连线。系统需要检测横、竖、斜三个方向上的所有可能组合,以确定是否有玩家达成胜利条件。
Python完整代码实现
以下是实现该游戏的核心Python代码:
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
u'''
Created on 2019年4月13日
@author: wuluo
'''
__author__ = 'wuluo'
__version__ = '1.0.0'
__company__ = u'重庆交大'
__updated__ = '2019-04-13'
# 创建井字棋的程序
def initBoard():
global board # 调用全局的board
board = [None] * 3
print("井字棋:")
for i in range(len(board)):
board[i] = ["+ "] * 3
# 打印井字棋的程序
def printBoard():
global board
for i in range(len(board)):
for j in range(len(board[i])):
print(board[i][j], end=" ")
print("")
# 开始下棋的程序
def startGame():
global board
player = 0
while isGameContinue():
if player <= 8:
if player % 2 == 0:
# 甲方下棋
print("==>黑方下棋")
if not playChess("x"):
continue
else:
# 乙方下棋
print("==>白方下棋")
if not playChess("○"):
continue
player += 1
else:
print("平局")
break
def playChess(chess):
# 获取位置
x = int(input("==> X=")) - 1
y = int(input("==> Y=")) - 1
if board[x][y] == "+ ":
board[x][y] = chess
printBoard()
return True # 落子成功
else:
print("==> 已有棋子 请重新落子\a")
printBoard()
return False # 落子失败
def isGameContinue():
for i in range(len(board)):
for j in range(len(board[i])):
if board[i][j] != "+ ":
# 横向
if j == 0:
if board[i][j] == board[i][j + 1] == board[i][j + 2]:
whoWin(i, j)
return False
# 竖向
if i == 0:
if board[i][j] == board[i + 1][j] == board[i + 2][j]:
whoWin(i, j)
return False
# 正斜
if i == 0 and j == 0:
if board[i][j] == board[i + 1][j + 1] == board[i + 2][j + 2]:
whoWin(i, j)
return False
# 反斜
if i == 2 and j == 0:
if board[i][j] == board[i - 1][j + 1] == board[i - 2][j + 2]:
whoWin(i, j)
return False
return True
def whoWin(i, j):
if board[i][j] == "x":
print("黑方胜!")
else:
print("白方胜!")
for i in range(3):
print("win")
class main():
board = []
initBoard()
printBoard()
startGame()
if __name__ == "__main__":
main()
游戏运行结果示例
游戏运行后的典型结果展示如下:


此外,当棋盘填满且无获胜者时,游戏结果为平局:

以上内容涵盖了井字棋游戏的基本实现原理与代码示例,希望能为读者的学习提供参考,欢迎继续支持本站获取更多技术内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













