Python实现井字棋小游戏
简介
这是一个简单的Python井字棋小游戏,玩家和电脑轮流下棋,先在棋盘上形成三个连续的棋子的一方获胜。代码运行于Python 3.x,需要安装Python 3.x。
实现思路
- 定义棋盘二维列表,并初始化为"-"。
- 创建一个游戏函数,游戏函数中不断循环,玩家和电脑轮流下棋。下棋函数中判断当前位置是否可用,如果可用就下棋并返回True,否则返回False。
- 当检测到某方胜利或者棋盘下满时,游戏结束并显示游戏结果,询问是否再玩一局。
代码实现
import random
board = [
["-", "-", "-"],
["-", "-", "-"],
["-", "-", "-"]
]
def print_board():
for row in board:
print("|".join(row))
def player_move():
while True:
try:
row = int(input("请输入行号[1-3]: "))
col = int(input("请输入列号[1-3]: "))
if row < 1 or row > 3 or col < 1 or col > 3:
print("输入不合法,请重新输入。")
continue
if board[row-1][col-1] != "-":
print("该位置已被占用,请重新输入。")
continue
board[row-1][col-1] = "X"
return True
except ValueError:
print("输入错误,请重新输入。")
def computer_move():
while True:
row = random.randint(1, 3)
col = random.randint(1, 3)
if board[row-1][col-1] != "-":
continue
board[row-1][col-1] = "O"
return True
def check_win():
for i in range(3):
if board[i][0] == board[i][1] == board[i][2] != "-":
return board[i][0]
if board[0][i] == board[1][i] == board[2][i] != "-":
return board[0][i]
if board[0][0] == board[1][1] == board[2][2] != "-":
return board[0][0]
if board[0][2] == board[1][1] == board[2][0] != "-":
return board[0][2]
return None
def play_game():
print("欢迎来到井字棋游戏!")
while True:
print_board()
if player_move():
if check_win() == "X":
print("你赢了!")
break
if not any("-" in row for row in board):
print("平局!")
break
if computer_move():
if check_win() == "O":
print("电脑赢了!")
break
play_again = input("是否再玩一局(Y/N): ")
if play_again == "Y":
reset_game()
play_game()
else:
print("谢谢游玩!")
def reset_game():
global board
board = [
["-", "-", "-"],
["-", "-", "-"],
["-", "-", "-"]
]
if __name__ == "__main__":
play_game()
示例说明
示例1
欢迎来到井字棋游戏!
-|-|-
-|-|-
-|-|-
请输入行号[1-3]: 2
请输入列号[1-3]: 2
-|-|-
-|X|-
-|-|-
O|-|-
请输入行号[1-3]: 3
请输入列号[1-3]: 3
-|-|-
-|X|-
-|-|X
O|-|-
电脑赢了!
是否再玩一局(Y/N): N
谢谢游玩!
示例2
欢迎来到井字棋游戏!
-|-|-
-|-|-
-|-|-
请输入行号[1-3]: 1
请输入列号[1-3]: 1
X|-|-
-|-|-
-|-|-
O|-|-
请输入行号[1-3]: 2
请输入列号[1-3]: 2
X|-|-
-|X|-
-|-|-
O|-|-
请输入行号[1-3]: 2
请输入列号[1-3]: 3
X|-|-
-|X|O
-|-|-
O|-|-
请输入行号[1-3]: 1
请输入列号[1-3]: 2
X|X|-
-|X|O
-|-|-
O|-|-
请输入行号[1-3]: 3
请输入列号[1-3]: 1
X|X|-
-|X|O
O|-|-
O|-|-
电脑赢了!
是否再玩一局(Y/N): N
谢谢游玩!
以上示例展示了两局游戏的过程和结果。玩家输入行列坐标,先下的是玩家,后下的是电脑,直到有一方获胜或者棋盘下满结束游戏,询问是否再玩一局。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现井字棋小游戏 - Python技术站