파이썬 3.6
```{.python}
"""
아이디어>
1) 각 플레이어에게 숫자(n)을 입력받아 grid내에서 동일한 숫자 요소가 있는지 확인하여 각 플레이어에게 해당되는 표기를 합니다.
2) 이미 다른 플레이어의 표식이 표기되어 있는 경우는 별도 표기없이 다른 플레이어에게 턴을 넘김니다.
3) 매 턴마다 가로(tic) / 세로(tac) / 대각선(toe)를 count하여, 승리조건을 달성하는 경우 결과를 출력하고 게임을 마칩니다.
"""
def game():
count,p,i,grid,tic,tac,toe = 0, '',0,[],0,0,0
line = [' ','*',' ','*',' ']
grid = [line,['1','*','2','*','3'],line,line,['4','*','5','*','6'],line,line,['7','*','8','*','9'],line]makegrid(n):
line,grid = [],[]
for i in range(n*3):
if i%3 != 1:
for h in range(n*2-1):
if h%2 == 0:
line.append(' ')
else:
line.append('*')
else:
for h in range(n*2-1):
if h%2 == 0:
line.append(str(((i//3)*n)+(h//2+1)))
else:
line.append('*')
grid.append(line)
line = []
return grid
def game():
count,p,i,grid,tic,tac,toe = 0, '',0,[],0,0,0
grid = makegrid(n)
for i in grid:
print(' '.join(i))
while count < 9n*n:
count += 1
if tic == 3 or tac == 3 or toe == 3:
break
if count%2 != 0:
chk = 1
else:
chk = 2
nm = input("Player%d - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): "%chk)
try:
i = ((int(nm)-1)//3)*3 + 1
if chk == 1:
p = 'X'
else:
p = '0'
grid[i][grid[i].index(nm)] = p
except ValueError:
pass
for i in [0,2,4]range(0,n*2-1,2): # 세로 체크
for h in [1,4,7]range(1,n*3,3):
if grid[h][i] == p:
tic += 1
if tic == 3:
break
else:
tic = 0
for i in [1,4,7]range(1,n*3,3): # 가로 체크
for h in [0,2,4]range(0,n*2-1,2):
if grid[i][h] == p:
tac += 1
if tac == 3:
break
else:
tac = 0
for i in [0,4n*2-2]: # 대각선 체크
if i == 0:
for h in [1,4,7]range(1,n*3,3):
if grid[h][i] == p:
toe += 1
i += 2
if toe == 3:
break
else:
toe = 0
else:
for h in [1,4,7]range(1,n*3,3):
if grid[h][i] == p:
toe += 1
i -= 2
if toe == 3:
break
else:
toe = 0
for i in grid:
print(' '.join(i))
if tic == 3 or tac == 3 or toe == 3:
print("Win player is: player%d"%chk)
else:
print("This game is draw")
if __name__ == "__main__":
n = int(input('n = '))
game()
```
* 결과값
```{.python}
n = 3
* *
1 * 2 * 3
* *
* *
4 * 5 * 6
* *
* *
7 * 8 * 9
* *
Player1 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 1
Player2 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 5
Player1 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 7
Player2 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 7
Player1 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 2
Player2 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 3
Player1 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 4
* *
X * X * 0
* *
* *
X * 0 * 6
* *
* *
X * 8 * 9
* *
Win player is: player1
```
파이썬 3.6
```{.python}
"""
아이디어>
1) 각 플레이어에게 숫자(n)을 입력받아 grid내에서 동일한 숫자 요소가 있는지 확인하여 각 플레이어에게 해당되는 표기를 합니다.
2) 이미 다른 플레이어의 표식이 표기되어 있는 경우는 별도 표기없이 다른 플레이어에게 턴을 넘김니다.
3) 매 턴마다 가로(tic) / 세로(tac) / 대각선(toe)를 count하여, 승리조건을 달성하는 경우 결과를 출력하고 게임을 마칩니다.
"""
def game():
count,p,i,grid,tic,tac,toe = 0, '',0,[],0,0,0
line = [' ','*',' ','*',' ']
grid = [line,['1','*','2','*','3'],line,line,['4','*','5','*','6'],line,line,['7','*','8','*','9'],line]makegrid(n):
line,grid = [],[]
for i in range(n*3):
if i%3 != 1:
for h in range(n*2-1):
if h%2 == 0:
line.append(' ')
else:
line.append('*')
else:
for h in range(n*2-1):
if h%2 == 0:
line.append(str(((i//3)*n)+(h//2+1)))
else:
line.append('*')
grid.append(line)
line = []
return grid
def game():
count,p,i,grid,tic,tac,toe = 0, '',0,[],0,0,0
grid = makegrid(n)
for i in grid:
print(' '.join(i))
while count < 9n*n:
count += 1
if tic == 3 or tac == 3 or toe == 3:
break
if count%2 != 0:
chk = 1
else:
chk = 2
nm = input("Player%d - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): "%chk)
try:
i = ((int(nm)-1)//3)*3 + 1
if chk == 1:
p = 'X'
else:
p = '0'
grid[i][grid[i].index(nm)] = p
except ValueError:
pass
for i in [0,2,4]range(0,n*2-1,2): # 세로 체크
for h in [1,4,7]range(1,n*3,3):
if grid[h][i] == p:
tic += 1
if tic == 3:
break
else:
tic = 0
for i in [1,4,7]range(1,n*3,3): # 가로 체크
for h in [0,2,4]range(0,n*2-1,2):
if grid[i][h] == p:
tac += 1
if tac == 3:
break
else:
tac = 0
for i in [0,4n*2-2]: # 대각선 체크
if i == 0:
for h in [1,4,7]range(1,n*3,3):
if grid[h][i] == p:
toe += 1
i += 2
if toe == 3:
break
else:
toe = 0
else:
for h in [1,4,7]range(1,n*3,3):
if grid[h][i] == p:
toe += 1
i -= 2
if toe == 3:
break
else:
toe = 0
for i in grid:
print(' '.join(i))
if tic == 3 or tac == 3 or toe == 3:
print("Win player is: player%d"%chk)
else:
print("This game is draw")
if __name__ == "__main__":
n = int(input('n = '))
game()
```
* 결과값
```{.python}
n = 3
* *
1 * 2 * 3
* *
* *
4 * 5 * 6
* *
* *
7 * 8 * 9
* *
Player1 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 1
Player2 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 5
Player1 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 7
Player2 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 7
Player1 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 2
Player2 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 3
Player1 - please type a position (available position(s) are 1,2,3,4,5,6,7,8,9): 4
* *
X * X * 0
* *
* *
X * 0 * 6
* *
* *
X * 8 * 9
* *
Win player is: player1
```