国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現井字棋游戲

2020-01-04 17:46:31
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了python實現井字棋游戲的相關資料,需要的朋友可以參考下
 

本文實例介紹了python實現井字棋游戲的方法,分享給大家,具體內容如下

windows7下python3.4.0編譯運行通過。由于采用了cmd調用,所以與Linux不兼容,無法在Linux下運行。
游戲就是井字棋,小鍵盤上的數字位置對應棋盤位置。

#本游戲python3.4.0下編寫調試,只能在windows下運行。import randomimport subprocessimport time#定義函數def draw_board(the_board): subprocess.call("cls", shell = True) print('  -------/n' + '  |' + the_board[9] + '|' + the_board[8] + '|' + the_board[7] + '|/n' + '  -------/n' + '  |' + the_board[6] + '|' + the_board[5] + '|' + the_board[4] + '|/n' + '  -------/n' + '  |' + the_board[3] + '|' + the_board[2] + '|' + the_board[1] + '|/n' + '  -------')def input_player_letter(): letter = ' ' while not (letter == 'X' or letter == 'O'):  print('請選擇X或O作棋子:', end = '')  letter = input().upper() if letter == 'X':  return ['X', 'O'] else:  return ['O', 'X']def who_first(): if 1 == random.randint(1, 2):  return 'computer' else:  return 'player'def is_again(): print('再一次?(Yes or No)') return input().lower().startswith('y')def is_space_free(the_board, move): return the_board[move] == ' 'def choose_random_from_list(the_board, move_from_list): possible_moves = [] for i in move_from_list:  if is_space_free(the_board, i):   possible_moves.append(i) if len(possible_moves) != 0:  return random.choice(possible_moves) else:  return Nonedef make_move(the_board, the_letter, the_move): the_board[the_move] = the_letterdef get_board_copy(the_board): duplicated_board = [] for i in board:  duplicated_board.append(i) return duplicated_boarddef is_board_full(the_board): for i in range(1, 9):  if is_space_free(the_board, i):   return False else:  return Truedef get_player_move(the_board): the_move = 0 while the_move not in list(range(1, 9)) or not is_space_free(the_board, the_move):  print('請輸入走步:', end = '')  the_move = int(input()) return the_movedef is_winner(the_board, the_letter): return (the_board[1] == the_letter and the_board[2] == the_letter and the_board[3] == the_letter) or (the_board[4] == the_letter and the_board[5] == the_letter and the_board[6] == the_letter) or (the_board[7] == the_letter and the_board[8] == the_letter and the_board[9] == the_letter) or (the_board[1] == the_letter and the_board[5] == the_letter and the_board[9] == the_letter) or (the_board[2] == the_letter and the_board[5] == the_letter and the_board[8] == the_letter) or (the_board[3] == the_letter and the_board[5] == the_letter and the_board[7] == the_letter) or (the_board[1] == the_letter and the_board[4] == the_letter and the_board[7] == the_letter) or (the_board[2] == the_letter and the_board[5] == the_letter and the_board[8] == the_letter) or (the_board[3] == the_letter and the_board[6] == the_letter and the_board[9] == the_letter)def get_computer_move(the_board, computer_letter): global player_letter global move if player_letter == 'X':  computer_letter = 'O' else:  player_letter = 'O'  computer_letter = 'X' #虛擬棋盤查看是否自己可一步得勝 for i in range(1,9):  copy = get_board_copy(board)  if is_space_free(board, i):   make_move(copy, computer_letter, i)   if is_winner(copy, computer_letter):    return i #虛擬棋盤查看是否對手可一步得勝 for i in range(1,9):  if is_space_free(board, i):   copy = get_board_copy(board)   make_move(copy, player_letter, i)   if is_winner(copy, player_letter):    return i move = choose_random_from_list(board, [1, 3, 7, 9]) if move != 0:  return move if is_space_free(board, 5):  return 5 return choose_random_from_list(board, [2, 4, 6, 8, 7])print('歡迎玩 井字棋 游戲!')time.sleep(1)print('''▆▅▅▅▆▅▅▅▅▅▅▅▂▅▅▅▆▆▅▅▃▂▆▅▅▅▅▅▅▅▅▆▆▆▃▂▆▆▅▃▄▆▅▂▅▆▇▇▆▆▆▄▂▆▆▆▆▆▆▆▆▅▆▅▆▅ ▁▅▂▃▅▆▅▂▆▆▇▆▅▆▇▄▂▆▆▆▆▆▆▆▆▅▆▅▆▆▅  ▃▆▅▆▅▂▆▇▆▅▅▆▇▅▂▆▆▆▆▆▆▆▆▅▆▆▆▆▆▃ ▁▅▆▆▄▂▇▇▆▅▅▆▇▅▁▆▆▆▆▆▆▆▆▅▆▅▆▆▃▂▃▁▁▅▆▄▂▇▇▆▅▆▇▇▅▂▆▆▆▅▅▅▅▅▅▆▅▆▃▁▅▆▃▁▁▅▅▂▆▇▆▆▇▆▆▄▂▆▅▅▅▅▅▆▆▅▆▅▆▄▅▆▆▆▄▂▂▃▃▆▆▇▇▆▆▆▅▂▆▆▆▆▆▆▆▆▆▆▅▄▄▄▄▄▄▄▄▃ ▂▅▄▄▃▄▄▄▃▂▅▄▄▅▅▅▅▅▅▆▅▂▂▂▂▃▃▃▃▃▂ ▁▃▂▃▃▃▃▂ ▂▃▂▃▃▃▃▃▅▆▅▆▆▆▇▇▇▇▆▆▅▂▁▄▆▆▆▄▅▄▂▆▆▆▆▆▆▆▆▅▆▅▆▅▆▇▆▆▆▆▆▄▄▄ ▃▆▂▂▅▄▂▆▅▅▆▅▅▆▆▅▆▅▅▆▆▇▆▅▆▇▆▄▃▆▂ ▂▃▅▆▄▂▆▅▅▅▅▅▅▆▅▆▅▅▆▇▆▅▅▆▇▇▄▃▆▅▂ ▃▆▅▄▂▆▅▅▅▅▅▆▆▅▆▅▅▆▇▆▅▆▆▇▆▃▂▆▄▂▂▁▃▆▅▂▆▅▅▆▆▆▆▆▅▆▅▆▆▇▆▆▇▇▆▆▄▂▄▁▄▅▂▁▂▅▂▆▅▆▆▆▆▆▆▅▆▅▅▆▆▆▇▆▆▆▆▄▁▃▄▆▆▄▂▁▁▂▆▅▅▆▆▆▆▆▅▆▅▂▂▂▂▃▂▂▂▂▂▁▃▃▃▃▂▁▁  ▂▂▂▂▂▂▃▄▅▆▆▆▆▆▅▅▅▅▅▅▄▁▅▅▅▅▄▅▅▄ ▁▅▆▅▅▅▅▆▆▆▆▆▆▆▆▆▆▆▆▆▅▂▆▆▆▆▆▆▆▄▂▃▂▆▆▆▆▅▅▆▆▆▆▆▆▆▆▆▆▆▆▅▂▆▆▆▆▆▆▆▄▂▆▂▁▅▆▃▃▆▆▆▆▆▆▆▆▆▆▆▆▆▄▂▆▆▆▆▆▆▆▄▂▆▅▁▁▃▂▅▆▆▆▆▆▆▆▆▆▆▆▆▆▄▃▆▆▆▆▆▆▆▄▃▆▆▄▁ ▅▇▆▅▆▆▆▆▆▆▆▆▆▆▆▄▂▆▆▆▆▆▆▆▄▃▆▆▄▁▁▁▅▆▅▆▆▆▆▆▆▆▆▆▆▆▄▂▆▆▆▆▆▆▆▄▃▆▄▂▄▃▁ ▅▆▆▆▆▆▆▆▆▆▆▆▆▅▃▆▆▆▆▆▆▆▅▃▅▁▄▆▆▃▁ ▄▆▆▆▆▆▆▆▆▆▆▆▅▄▆▆▆▆▆▆▆▄▃▆▅▆▆▆▆▄▃▂''')time.sleep(2)subprocess.call("cls", shell = True)while True: board = [' '] * 10 player_letter, computer_letter = input_player_letter() turn = who_first() print(turn + '先走') time.sleep(1) game_is_playing = True while game_is_playing:  if turn == 'player':   draw_board(board)   move = get_player_move(board)   make_move(board, player_letter, move)   if is_winner(board, player_letter):    draw_board(board)    print('恭喜!你贏了。')    game_is_playinig = False   else:    if is_board_full(board):     draw_board(board)     print('平局!')     break    else:     turn = 'computer'  else:   move = get_computer_move(board, computer_letter)   make_move(board, computer_letter, move)   if is_winner(board, computer_letter):    draw_board(board)    print('電腦勝利,你掛了!')    game_is_playing = False   else:    if is_board_full(board):     draw_board(board)     print('平局!')     break    else:     turn = 'player' if not is_again():   break

以上就是本文的詳細內容,希望對大家的學習有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 全南县| 新乡县| 宁明县| 新津县| 海原县| 高邑县| 金昌市| 若尔盖县| 鱼台县| 郎溪县| 西和县| 肇州县| 齐齐哈尔市| 巴楚县| 安康市| 威信县| 榕江县| 龙岩市| 靖江市| 府谷县| 新昌县| 宝兴县| 舟山市| 蕉岭县| 疏附县| 公主岭市| 昌都县| 红原县| 道真| 和龙市| 于都县| 武夷山市| 肃宁县| 景谷| 保定市| 普宁市| 桐乡市| 育儿| 鄂托克前旗| 怀化市| 塘沽区|