python井字棋_python实现简单井字棋游戏

井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。游戏需要的工具仅为纸和笔,然后由分别代表O和X的两个游戏者轮流在格子里留下标记(一般来说先手者为X),任意三个标记形成一条直线,则为获胜。

游戏的难点在于,如何判断连接成了一条线;横、竖、斜三个方向;

游戏的代码:

#!/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()

游戏结果:

202034105931115.jpg

202034105956856.jpg

还有一种结果是平局:

202034110021575.jpg

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值