亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
905
2022-05-28
在我國悠久的歷史上廣為流傳,同時它也是我們兒時游戲的一個童年記憶,簡簡單單的九宮格棋盤就構成了我們童年時的美好點滴。
其實,在Python有一個很經典的關于對數據字典的實戰項目,便是我們曾經最熟悉不過的井字棋游戲,同時用二十行代碼就可以將其實現!
它對數據字典進行了巧妙而又深刻的運用,因此很多Python教程中都將井字棋游戲作為對數據字典的實戰項目之一。
所以今天大灰狼就來和小伙伴分享一下,運用數據字典構造井字棋盤的實戰項目。
我們所常見的井字棋盤,看起來就像一個大的字符(#),有九個空格,可以包含‘X’、‘O’或者‘ ’,因此我們要用字典來表示棋盤,可以為每一個空格分配一個字符串鍵,
可以用字符串值來表示每一個空格上都有什么樣的棋子或者空值,如‘X’、‘O’或者空字符,因此我們就需要九個不同的鍵值對來表示井字棋盤上的每一個空格部分。
如我們可以用’top-L’: ’ ', ‘top-M’: ’ ', ‘top-R’: ’ ',表示井字棋盤最上邊一行的三個部分;
用’mid-L’: ’ ', ‘mid-M’ : ’ ', ‘mid-R’: ’ '表示井字棋盤中間部分;
用’low-L’: ’ ', ‘low-M’: ’ ', ‘low-R’: ’ '表示井字棋盤最下方的三格部分。
checkerboard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ', 'mid-L': ' ', 'mid-M' : ' ', 'mid-R': ' ', 'low-L': ' ', 'low-M': ' ', 'low-R': ' '}
當我們打開一個文本編輯器窗口,輸入字典的以下代碼時,就可以呈現出井字棋盤的效果。
def printBoard(replace): print(checkerboard['top-L'] + '|' + checkerboard['top-M'] + '|' + checkerboard['top-R']) print('——' + '+' + '——') print(checkerboard['mid-L'] + '|' + checkerboard['mid-M'] + '|' + checkerboard['mid-R']) print('——' + '+' + '——') print(checkerboard['low-L'] + '|' + checkerboard['low-M'] + '|' + checkerboard['low-R'])
因為井字棋盤游戲剛開始的時候,棋盤的九個空格每個部分都是空字符,所以我們可以用空格來表示一張干凈的井字棋盤,當我們對每一個鍵所對應的值進行修改的時候,隨之變動的就是井字棋盤上相對應的空格部分。
所以我們可以專門定義一個函數來輸出井字棋盤以及井字棋盤的狀態,同時可以將這個井字棋盤進行實時輸出,確保玩家游戲的實效性。
def printBoard(replace): print(checkerboard['top-L'] + '|' + checkerboard['top-M'] + '|' + checkerboard['top-R']) print('——' + '+' + '——') print(checkerboard['mid-L'] + '|' + checkerboard['mid-M'] + '|' + checkerboard['mid-R']) print('——' + '+' + '——') print(checkerboard['low-L'] + '|' + checkerboard['low-M'] + '|' + checkerboard['low-R'])
同時還應定義玩家輸入棋子所對應的景致棋盤位置,根據玩家所輸入的位置,對井字棋盤進行修改,并及時輸出此時景致棋盤狀態。
倘若有一個玩家獲勝,那么它所對應的值便可以在井字棋盤上橫向縱向或斜向的形成三個相同的值。效果如下:
完整的代碼如下:
checkerboard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ', 'mid-L': ' ', 'mid-M' : ' ', 'mid-R': ' ', 'low-L': ' ', 'low-M': ' ', 'low-R': ' '} def printBoard(replace): print(checkerboard['top-L'] + '|' + checkerboard['top-M'] + '|' + checkerboard['top-R']) print('——' + '+' + '——') print(checkerboard['mid-L'] + '|' + checkerboard['mid-M'] + '|' + checkerboard['mid-R']) print('——' + '+' + '——') print(checkerboard['low-L'] + '|' + checkerboard['low-M'] + '|' + checkerboard['low-R']) turn = 'X' for i in range(9): printBoard(checkerboard) print("現在請" + turn + "出棋,請輸入您的位置:") move = input() checkerboard[move] = turn if turn == 'X': turn = 'O' else:turn = 'X' if i == 8: print("游戲結束,平棋!")
看到這里你學廢了嘛?小伙伴們記得三連喲!
我是灰小猿,我們下期見!
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。