下面是详细的攻略:
python实现简易五子棋游戏(控制台版)
本文将介绍如何通过Python语言实现一个简易的五子棋游戏,主要使用Python基础语法和标准库函数,适合初学者或想进一步熟悉Python语法的人。游戏使用控制台进行展示,不涉及图形界面。
思路与实现
- 初始化棋盘
棋盘的使用采用二维列表来实现,棋盘大小为15*15,每格状态用0、1、2表示,0为无人占位,1为黑方占位,2为白方占位。
def init_board():
board = []
for i in range(15):
row = []
for j in range(15):
row.append(0)
board.append(row)
return board
- 显示棋盘
使用for循环逐行输出棋盘,并根据棋盘状态在对应位置输出黑棋、白棋或空位。其中用到了转移字符\033[31m
、\033[37m
来控制输出颜色。
def show(board):
print(' ', end='')
for i in range(15):
print(chr(65+i), end='')
print()
for i in range(15):
print(chr(65+i), end='')
for j in range(15):
if board[i][j] == 0:
print('·', end='')
elif board[i][j] == 1:
print('\033[31m●\033[37m', end='')
else:
print('\033[37m●\033[37m', end='')
print()
- 下棋操作
通过while循环获取用户输入的坐标点,如果该点未被占用,则根据当前下棋方确定占位状态,并更新棋盘。下棋方轮流切换。
def play(board, turn):
while True:
pos = input('请落子,格式如 A3:')
row, col = ord(pos[0])-65, int(pos[1:])-1
if board[row][col] == 0:
board[row][col] = turn
break
else:
print('该位置已经有子,请重新下棋!')
return 3 - turn # 切换下棋方,1为黑方,2为白方
- 判断胜负
通过两重for循环,分别判断横向、纵向、左斜向、右斜向是否存在五子连珠。如果存在,则返回对局方,否则返回0,表示继续对局。
def judge(board):
for i in range(15):
for j in range(15):
if board[i][j] != 0:
if j<=10 and board[i][j]==board[i][j+1]==board[i][j+2]==board[i][j+3]==board[i][j+4]:
return board[i][j]
if i<=10 and board[i][j]==board[i+1][j]==board[i+2][j]==board[i+3][j]==board[i+4][j]:
return board[i][j]
if i<=10 and j<=10 and board[i][j]==board[i+1][j+1]==board[i+2][j+2]==board[i+3][j+3]==board[i+4][j+4]:
return board[i][j]
if i<=10 and j>=4 and board[i][j]==board[i+1][j-1]==board[i+2][j-2]==board[i+3][j-3]==board[i+4][j-4]:
return board[i][j]
return 0
- 完整程序
def init_board():
board = []
for i in range(15):
row = []
for j in range(15):
row.append(0)
board.append(row)
return board
def show(board):
print(' ', end='')
for i in range(15):
print(chr(65+i), end='')
print()
for i in range(15):
print(chr(65+i), end='')
for j in range(15):
if board[i][j] == 0:
print('·', end='')
elif board[i][j] == 1:
print('\033[31m●\033[37m', end='')
else:
print('\033[37m●\033[37m', end='')
print()
def play(board, turn):
while True:
pos = input('请落子,格式如 A3:')
row, col = ord(pos[0])-65, int(pos[1:])-1
if board[row][col] == 0:
board[row][col] = turn
break
else:
print('该位置已经有子,请重新下棋!')
return 3 - turn
def judge(board):
for i in range(15):
for j in range(15):
if board[i][j] != 0:
if j<=10 and board[i][j]==board[i][j+1]==board[i][j+2]==board[i][j+3]==board[i][j+4]:
return board[i][j]
if i<=10 and board[i][j]==board[i+1][j]==board[i+2][j]==board[i+3][j]==board[i+4][j]:
return board[i][j]
if i<=10 and j<=10 and board[i][j]==board[i+1][j+1]==board[i+2][j+2]==board[i+3][j+3]==board[i+4][j+4]:
return board[i][j]
if i<=10 and j>=4 and board[i][j]==board[i+1][j-1]==board[i+2][j-2]==board[i+3][j-3]==board[i+4][j-4]:
return board[i][j]
return 0
def main():
board = init_board()
turn = 1
while True:
show(board)
turn = play(board, turn)
winner = judge(board)
if winner:
print('胜利者为:', '黑方' if winner==1 else '白方')
break
if __name__ == '__main__':
main()
示例
示例1:黑方落子
请落子,格式如 A3:B6
A B C D E F G H I J K L M N O
A· · · · · · · · · · · · · · ·
B· · · · · ● · · · · · · · · ·
C· · · · · ○ · · · · · · · · ·
D· · · · · · · · · · · · · · ·
E· · · · · · · · · · · · · · ·
F· · · · · · · · · · · · · · ·
G· · · · · · · · · · · · · · ·
H· · · · · · · · · · · · · · ·
I· · · · · · · · · · · · · · ·
J· · · · · · · · · · · · · · ·
K· · · · · · · · · · · · · · ·
L· · · · · · · · · · · · · · ·
M· · · · · · · · · · · · · · ·
N· · · · · · · · · · · · · · ·
O· · · · · · · · · · · · · · ·
请落子,格式如 A3:
示例2:胜利者为白方
A B C D E F G H I J K L M N O
A○ ○ ○ ○ ○ ○ ○ ○ · · · · · · ·
B· · · · · · · · · · · · · · ·
C· · · · · · · · · · · · · · ·
D· · · · · · · · · · · · · · ·
E○ ○ ○ ○ · · · · · · · · · · ·
F· · · · ○ · · · · · · · · · ·
G· · · · · ○ · · · · · · · · ·
H· · · · · · ○ · · · · · · · ·
I· · · · · · · ○ · · · · · · ·
J· · · · · · · · ○ · · · · · ·
K· · · · · · · · · · · · · · ·
L· · · · · · · · · · · · · · ·
M· · · · · · · · · · · · · · ·
N· · · · · · · · · · · · · · ·
O· · · · · · · · · · · · · · ·
胜利者为: 白方
以上就是Python实现简易五子棋游戏(控制台版)的完整攻略,希望能对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现简易五子棋游戏(控制台版) - Python技术站