python實現(xiàn)簡易五子棋游戲(控制臺版)
本文實例為大家分享了python實現(xiàn)簡易五子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下
運行效果:
完整代碼+注釋:
finish = False # 游戲是否結(jié)束 flagNum = 1 ?# 當(dāng)前下棋者標(biāo)記 flagch = '*' ?# 當(dāng)前下棋者棋子 x = 0 ? ?# 當(dāng)前棋子的橫坐標(biāo) y = 0 ? ?# 當(dāng)前棋子的縱坐標(biāo) print('---------五子棋游戲(控制臺版)---------') # 棋盤初始化 checkerboard=[] for i in range(10): ? ? checkerboard.append([]) ? ? for j in range(10): ? ? ? ? checkerboard[i].append('-') def msg(): ? ? # 輸出最后勝利的棋盤 ? ? print("\033[1;37;44m--------------------------------") ? ? print(" ? 1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?10") ? ? for i in range(len(checkerboard)): ? ? ? ? print(chr(i + ord('A')) + " ", end=' ') ? ? ? ? for j in range(len(checkerboard[i])): ? ? ? ? ? ? print(checkerboard[i][j] + " ", end=' ') ? ? ? ? print() ? ? print("--------------------------------\033[0m") ? ? # 輸出贏家 ? ? if (flagNum == 1): ? ? ? ? print('\033[32m*棋勝利!***\033[0m') ? ? else: ? ? ? ? print('\033[32mo棋勝利!***\033[0m') ? while not finish: ? ? # 打印棋盤 ? ? print("\033[1;30;46m--------------------------------") ? ? print(" ? 1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?10") ? ? for i in range(len(checkerboard)): ? ? ? ? print(chr(i + ord('A')) + " ", end=' '); ? ? ? ? for j in range(len(checkerboard[i])): ? ? ? ? ? ? print(checkerboard[i][j] + " ", end=' ') ? ? ? ? print() ? ? print("--------------------------------\033[0m") ? ? # 判斷當(dāng)前下棋者 ? ? if flagNum == 1: ? ? ? ? flagch = '*' ? ? ? ? print('\033[1;37;40m請*輸入棋子坐標(biāo)(例如A1):\033[0m', end=' ') # 白字黑底 ? ? else: ? ? ? ? flagch = 'o' ? ? ? ? print('\033[1;30;42m請o輸入棋子坐標(biāo)(例如J5):\033[0m', end=' ') # 黑字綠底 ? ? # 輸入棋子坐標(biāo) ? ? str = input() ? ? ch = str[0] # 獲取第一個字符的大寫形式 ? ? x = ord(ch) - 65 ? ? y = int(str[1]) - 1 ? ? # 判斷坐標(biāo)是否在棋盤之內(nèi) ? ? if (x < 0 or x > 9 or y < 0 or y > 9): ? ? ? ? print('\033[31m***您輸入的坐標(biāo)有誤請重新輸入!***\033[0m') ? ? ? ? continue ? ? # 判斷坐標(biāo)上是否有棋子 ? ? if (checkerboard[x][y] == '-'): ? ? ? ? if (flagNum == 1): ? ? ? ? ? ? checkerboard[x][y] = '*' ? ? ? ? else: ? ? ? ? ? ? checkerboard[x][y] = 'o' ? ? else: ? ? ? ? print('\033[31m******您輸入位置已經(jīng)有其他棋子,請重新輸入!\033[0m') ? ? ? ? continue ? ? # 判斷棋子左側(cè) ? ? if (y - 4 >= 0): ? ? ? ? if (checkerboard[x][y - 1] == flagch ? ? ? ? ? ? ? ? and checkerboard[x][y - 2] == flagch ? ? ? ? ? ? ? ? and checkerboard[x][y - 3] == flagch ? ? ? ? ? ? ? ? and checkerboard[x][y - 4] == flagch): ? ? ? ? ? ? finish = True ? ? ? ? ? ? msg() ? ? ? # 判斷棋子右側(cè) ? ? if (y + 4 <= 9): ? ? ? ? if (checkerboard[x][y + 1] == flagch ? ? ? ? ? ? ? ? and checkerboard[x][y + 2] == flagch ? ? ? ? ? ? ? ? and checkerboard[x][y + 3] == flagch ? ? ? ? ? ? ? ? and checkerboard[x][y + 4] == flagch): ? ? ? ? ? ? finish = True ? ? ? ? ? ? msg() ? ? ? # 判斷棋子上方 ? ? if (x - 4 >= 0): ? ? ? ? if (checkerboard[x - 1][y] == flagch ? ? ? ? ? ? ? ? and checkerboard[x - 2][y] == flagch ? ? ? ? ? ? ? ? and checkerboard[x - 3][y] == flagch ? ? ? ? ? ? ? ? and checkerboard[x - 4][y] == flagch): ? ? ? ? ? ? finish = True ? ? ? ? ? ? msg() ? ? ? # 判斷棋子下方 ? ? if (x + 4 <= 9): ? ? ? ? if (checkerboard[x + 1][y] == flagch ? ? ? ? ? ? ? ? and checkerboard[x + 2][y] == flagch ? ? ? ? ? ? ? ? and checkerboard[x + 3][y] == flagch ? ? ? ? ? ? ? ? and checkerboard[x + 4][y] == flagch): ? ? ? ? ? ? finish = True ? ? ? ? ? ? msg() ? ? ? # 判斷棋子右上方向 ? ? if (x - 4 >= 0 and y - 4 >= 0): ? ? ? ? if (checkerboard[x - 1][y - 1] == flagch ? ? ? ? ? ? ? ? and checkerboard[x - 2][y - 2] == flagch ? ? ? ? ? ? ? ? and checkerboard[x - 3][y - 3] == flagch ? ? ? ? ? ? ? ? and checkerboard[x - 4][y - 4] == flagch): ? ? ? ? ? ? finish = True ? ? ? ? ? ? msg() ? ? ? # 判斷棋子右下方向 ? ? if (x + 4 <= 9 and y - 4 >= 0): ? ? ? ? if (checkerboard[x + 1][y - 1] == flagch ? ? ? ? ? ? ? ? and checkerboard[x + 2][y - 2] == flagch ? ? ? ? ? ? ? ? and checkerboard[x + 3][y - 3] == flagch ? ? ? ? ? ? ? ? and checkerboard[x + 4][y - 4] == flagch): ? ? ? ? ? ? finish = True ? ? ? ? ? ? msg() ? ? ? # 判斷棋子左上方向 ? ? if (x - 4 >= 0 and y + 4 <= 9): ? ? ? ? if (checkerboard[x - 1][y + 1] == flagch ? ? ? ? ? ? ? ? and checkerboard[x - 2][y + 2] == flagch ? ? ? ? ? ? ? ? and checkerboard[x - 3][y + 3] == flagch ? ? ? ? ? ? ? ? and checkerboard[x - 4][y + 4] == flagch): ? ? ? ? ? ? finish = True ? ? ? ? ? ? msg() ? ? ? # 判斷棋子左下方向 ? ? if (x + 4 <= 9 and y + 4 <= 9): ? ? ? ? if (checkerboard[x + 1][y + 1] == flagch ? ? ? ? ? ? ? ? and checkerboard[x + 2][y + 2] == flagch ? ? ? ? ? ? ? ? and checkerboard[x + 3][y + 3] == flagch ? ? ? ? ? ? ? ? and checkerboard[x + 4][y + 4] == flagch): ? ? ? ? ? ? finish = True ? ? ? ? ? ? msg() ? ? flagNum *= -1; # 更換下棋者標(biāo)記
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python 使用xlsxwriter循環(huán)向excel中插入數(shù)據(jù)和圖片的操作
這篇文章主要介紹了python 使用xlsxwriter循環(huán)向excel中插入數(shù)據(jù)和圖片的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01淺析python,PyCharm,Anaconda三者之間的關(guān)系
Python是一種跨平臺的計算機(jī)程序設(shè)計語言,簡單來說,python就是類似于C,Java,C++等,一種編程語言。這篇文章主要介紹了淺析python,PyCharm,Anaconda三者之間的關(guān)系,需要的朋友可以參考下2019-11-11Python字符串處理實現(xiàn)單詞反轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Python字符串處理實現(xiàn)單詞反轉(zhuǎn)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06python實現(xiàn)批量處理將圖片粘貼到另一張圖片上并保存
今天小編就為大家分享一篇python實現(xiàn)批量處理將圖片粘貼到另一張圖片上并保存,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python中的JSON?Pickle?Shelve模塊特性與區(qū)別實例探究
在Python中,處理數(shù)據(jù)序列化和持久化是極其重要的,JSON、Pickle和Shelve是三種常用的模塊,它們提供了不同的方法來處理數(shù)據(jù)的序列化和持久化,本文將深入研究這三個模塊,探討它們的特性、用法以及各自的優(yōu)缺點2024-01-01在Python中通過threading模塊定義和調(diào)用線程的方法
由于著名的GIL的存在,Python中雖然能創(chuàng)建多條線程,但卻不能同時執(zhí)行...anyway,這里我們還是來學(xué)習(xí)一下在Python中通過threading模塊定義和調(diào)用線程的方法2016-07-07