以下是一个编码一个四连珠游戏的示例代码。在这个示例中,我们使用一个二维数组来表示游戏的棋盘。checkWin()函数用于检查是否有玩家获胜。
def create_board():
# 创建一个6x7的棋盘
board = []
for i in range(6):
row = []
for j in range(7):
row.append('.')
board.append(row)
return board
def print_board(board):
# 打印棋盘
for row in board:
print(' '.join(row))
print()
def checkWin(board):
# 检查是否有玩家获胜
# 检查每一行
for row in board:
for i in range(1, 4):
if row[i] != '.' and row[i] == row[i-1] == row[i-2] == row[i-3]:
return True
# 检查每一列
for j in range(7):
for i in range(1, 4):
if board[i][j] != '.' and board[i][j] == board[i-1][j] == board[i-2][j] == board[i-3][j]:
return True
# 检查对角线
for i in range(3, 6):
for j in range(1, 4):
if board[i][j] != '.' and board[i][j] == board[i-1][j-1] == board[i-2][j-2] == board[i-3][j-3]:
return True
for i in range(3, 6):
for j in range(4, 7):
if board[i][j] != '.' and board[i][j] == board[i-1][j-1] == board[i-2][j-2] == board[i-3][j-3]:
return True
return False
def main():
board = create_board()
print_board(board)
player = 'X'
while True:
column = int(input("请输入要落子的列数(1-7): ")) - 1
for i in range(5, -1, -1):
if board[i][column] == '.':
board[i][column] = player
break
print_board(board)
if checkWin(board):
print(player + " 获胜!")
break
if player == 'X':
player = 'O'
else:
player = 'X'
if __name__ == "__main__":
main()
在这个示例中,checkWin()函数用于检查是否有四个连续的棋子。由于题目要求跳过第一和最后一列,我们需要在checkWin()函数中修改代码。具体修改如下:
def checkWin(board):
# 检查是否有玩家获胜
# 检查每一行
for row in board:
for i in range(1, 4):
if row[i] != '.' and row[i] == row[i-1] == row[i-2] == row[i-3]:
return True
# 检查每一列
for j in range(1, 6): # 修改范围为第二到倒数第二列
for i in range(1, 4):
if board[i][j] != '.' and board[i][j] == board[i-1][j] == board[i-2][j] == board[i-3][j]:
return True
# 检查对角线
for i in range(3, 6):
for j in range(2, 5): # 修改范围为第三到倒数第三列
if board[i][j] != '.' and board[i][j] == board[i-1][j-1] == board[i-2][j-2] == board[i-3][j-3]:
return True
for i in range(3, 6):
for j in range(3, 6): # 修改范围为第四到倒数第四列
if board[i][j] != '.' and board[i][j] == board[i-1][