python實現簡單的井字棋
本文實例為大家分享了python實現簡單的井字棋的具體代碼,供大家參考,具體內容如下
使用python實現井字棋游戲,沒有具體算法,只是用隨機下棋簡單實現:
import randomboard = [[’+’,’+’,’+’],[’+’,’+’,’+’],[’+’,’+’,’+’]]def ma(board): if isempty(board):a = random.randint(0, 2)b = random.randint(0, 2)if board[a][b] != ’X’ and board[a][b] != ’O’: print('機器走:') board[a][b] = ’O’ oput(board)else: ma(board) else:print('平局')def oput(board): print(' 0 1 2') for i in range(3):print(i, end=’ ’)for j in range(3): print(board[i][j], end=' ')print('')def winput(i,j): if board[i][j] == ’X’:print('human win') else:print('machine win') return 1def test(board): for i in range(3):for j in range(3): if board[i][j] != ’+’:if j == 0: if board[i][j] == board[i][j + 1] == board[i][j + 2]:return winput(i,j)if i == 0: if board[i][j] == board[i + 1][j] == board[i + 2][j]:return winput(i,j)if i == 0 and j == 0: if board[i][j] == board[i + 1][j + 1] == board[i + 2][j + 2]:return winput(i,j)if i == 2 and j == 0: if board[i][j] == board[i - 1][j + 1] == board[i - 2][j + 2]:return winput(i,j)def isempty(board): for i in range(3):for j in range(3): if board[i][j] == ’+’:return True return Falsedef main(): print('初始棋盤:') oput(board) flag = 0 t = input('human first? Y/N human for X, machine for On') if t == ’Y’:while isempty(board): print('人走: ') a, b = map(int, input('輸入落子縱橫坐標: a,b n').split(’,’)) if board[a][b] == ’+’: board[a][b] = ’X’ oput(board) flag = test(board) if flag == 1: break else:print('落子位置不對')continue ma(board) flag = test(board) if flag == 1:break if isempty(board) == 0 and flag == 0:print('平局')break elif t == ’N’:while isempty(board): ma(board) flag = test(board) if isempty(board) == 0 and flag == 0:print('平局')break if flag == 1:break print('人走: ') a, b = map(int, input('輸入落子縱橫坐標: a,b n').split(’,’)) if board[a][b] == ’+’:board[a][b] = ’X’oput(board)flag = test(board)if flag == 1: break else:print('落子位置不對')continueif __name__ == '__main__': main()
結果:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章: