规则&简介
五子棋是一种源于中国的棋类游戏,起源可以追溯到几千年前的古代。据传说,五子棋起源于中国古代的战争时期,是将军们用来训练军事策略和战术的一种游戏。五子棋的发展历史悠久,流传广泛,成为了中国文化的一部分。在中国,五子棋被广泛应用于学校教育、智力开发和休闲娱乐等领域。
随着时间的推移,五子棋也逐渐传播到了世界各地,成为了一种受欢迎的国际性棋类游戏。五子棋的历史背景丰富多彩,是中华文化的重要组成部分之一。五子棋是一种两人对弈的棋类游戏,目的是在棋盘上先将自己的五个棋子连成一线,或是阻止对手完成这个目标。
摘自:百度安全验证
代码
import turtle
def set_chess(x,y,color):
if board[x][y] != ' ':
print('该位置已有棋子')
print("")
return False
else:
board[x][y] = color
# printboard(board)
return True
def check_win(board):
for list_str in board:
if ''.join(list_str).find('O'*5) != -1:
print('恭喜白棋获胜')
return True
elif ''.join(list_str).find('X'*5) != -1:
print('恭喜黑棋获胜')
return True
else:
return False
def check_win_all(board):
board_c = [[] for line in range(29)]
for x in range(15):
for y in range(15):
board_c[x+y].append(board[x][y])
board_d = [[] for line in range(29)]
for x in range(15):
for y in range(15):
board_d[x-y].append(board[x][y])
return check_win(board) or check_win([list(l) for l in zip(*board)]) or check_win(board_c) or check_win(board_d)
def check_input(t,letter):
while True:
while True:
try:
m = int(input('请输入棋子横坐标0-14:'))
break
except ValueError:
print("您输入的不是数字,请重新输入!")
print("")
continue
if m in range(15):
print('输入成功!')
print("")
else:
print('横坐标超出范围,请重新输入!')
m = int(input('请输入棋子横坐标0-14:'))
while True:
try:
n = int(input('请输入棋子纵坐标0-14:'))
break
except ValueError:
print("您输入的不是数字,请重新输入!")
print("")
continue
if n in range(15):
print('输入成功!')
print("")
else:
print('纵坐标超出范围,请重新输入!')
n = int(input('请输入棋子纵坐标0-14:'))
if set_chess(m,n,letter):
if letter == 'O':
printchess(t,('black','white'),m,n)
elif letter == 'X':
printchess(t,('black','black'),m,n)
break
else:
continue
def printchess(turtle,color,x,y):
turtle.penup()
turtle.goto(-195 + 30*y , 185 - 30*x)
turtle.pendown()
turtle.color(*color)
turtle.begin_fill()
turtle.circle(10)
turtle.end_fill()
if __name__ == '__main__':
t = turtle.Pen()
t.speed(1000)
t.ht()
for i in range(16):
t.penup()
t.goto(-225, -i * 30 + 225)
t.pendown()
t.goto(225, -i * 30 + 225)
for j in range(16):
t.penup()
t.goto(-225 + j * 30, 225)
t.pendown()
t.goto(-225 + j * 30, -225)
board = [[' ']*15 for line in range(15)]
turtle.ht()
turtle.speed(500)
for i in range(300):
if i%2 == 0:
print('白棋下棋')
check_input(turtle,'O')
if check_win_all(board):
break
else:
print('黑棋下棋')
check_input(turtle,'X')
if check_win_all(board):
break
turtle.done()
运行结果
(仅用为做示例,勿喷)