Python 井字棋游戏
本帖最后由 VanessaXD 于 2020-10-19 21:57 编辑求各位大佬,可以帮忙看看代码吗?
是井字棋游戏,但棋盘不止3*3,也不需要画棋盘。以012345表示,棋盘大小为input的size,要求X和O分别输入,直到一方把整行或者整列或者斜换成他的字母就获胜。
我的问题出在没法计算输入的数字刚好和赢的可能性配对,用for loop的话,每输入一个数,比如0,这个数可能出现在很多个赢的可能性中,比如3*3的(0,1,2)(0,3,6)(0,4,8)count就会增加很多个1,无法准确判断谁赢,可以求各位大佬帮忙看一下怎么改吗?
下面是我的代码
size=int(input('Size--> '))
board=
def board1(size):
for j in range(len(board)):
print(board, end=' ')
if (j+1)%size == 0:
print()
ways=[]
for a in range(size):
ways.append(board)
ways.append(board)
if a==0:
ways.append(board)
if a==size:
ways.append(board)
print(ways)
def winners(board):
count=0
counto=0
for s in ways:
for k in s:
if board.isalpha():
count+=1
else:
count=count
if k in listo:
counto+=1
else:
counto=counto
if count>=size:
return True
else:
return False
if counto>=size:
return True
else:
return False
board1(size)
r=1
listx=[]
listo=[]
while True:
x=int(input('X--> '))
if board!='X' or board!='O':
board='X'
board1(size)
listx.append(x)
if winners(board):
print('xwin')
break
else:
board1(size)
o=int(input('O--> '))
if board!='O' or board!='X':
board='O'
board1(size)
listo.append(o)
listo.append(x)
if winners(board):
print('owin')
break
else:
board1(size)
下面是sample run
Size--> 6
012345
6789 10 11
12 13 14 15 16 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
X--> 1
0X2345
6789 10 11
12 13 14 15 16 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
O--> 13
0X2345
6789 10 11
12O 14 15 16 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
X--> 2
0XX345
6789 10 11
12O 14 15 16 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
O--> 14
0XX345
6789 10 11
12OO 15 16 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
X--> 3
0XXX45
6789 10 11
12OO 15 16 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
O--> 15
0XXX45
6789 10 11
12OOO 16 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
X--> 4
0XXXX5
6789 10 11
12OOO 16 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
O--> 16
0XXXX5
6789 10 11
12OOOO 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
X--> 5
0XXXXX
6789 10 11
12OOOO 17
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
O--> 17
0XXXXX
6789 10 11
12OOOOO
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
X--> 6
0XXXXX
X789 10 11
12OOOOO
18 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
O--> 18
0XXXXX
X789 10 11
12OOOOO
O 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
X--> 0
XXXXXX
X789 10 11
12OOOOO
O 19 20 21 22 23
24 25 26 27 28 29
30 31 32 33 34 35
Winner: X # 初始化棋盘
board =
def winner(board):
"""是否有获胜者
1,-1 有胜负
0 表示没有胜负,没有结束,或者平局
"""
lines = , board, board, board, board, board, board, board]
return 1 if * 3 in lines else -1 if [-1] * 3 in lines else 0 Stubborn 发表于 2020-10-19 13:29
这是九宫格的情况吗?如果是6*6或者9*9该如何找win的情况呢? Stubborn 发表于 2020-10-19 13:29
这是九宫格的情况吗?如果是6*6或者9*9该如何找win的情况呢? 本帖最后由 Stubborn 于 2020-10-20 16:29 编辑
VanessaXD 发表于 2020-10-19 21:59
这是九宫格的情况吗?如果是6*6或者9*9该如何找win的情况呢?
井字棋不是 3 * 3的吗?还有6*6的井字棋?
胜负规则都一样的话,你照这我的代码改就可以拉~{:10_262:} 我来拿鱼币 嘿嘿 看到我了不懂的东西
页:
[1]