Python實戰利用數據字典實現井字棋盤,

      網友投稿 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'])

      同時還應定義玩家輸入棋子所對應的景致棋盤位置,根據玩家所輸入的位置,對井字棋盤進行修改,并及時輸出此時景致棋盤狀態。

      倘若有一個玩家獲勝,那么它所對應的值便可以在井字棋盤上橫向縱向或斜向的形成三個相同的值。效果如下:

      完整的代碼如下:

      Python實戰之利用數據字典實現井字棋盤,

      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小時內刪除侵權內容。

      上一篇:11.10 Linux LVM邏輯卷管理機制
      下一篇:奇妙的人機接口技術
      相關文章
      亚洲小说区图片区另类春色| 亚洲av无码不卡久久| 亚洲综合视频在线| 永久亚洲成a人片777777| www.91亚洲| 亚洲精品国产av成拍色拍| 中文字幕亚洲色图| 亚洲一区影音先锋色资源| 亚洲精品综合一二三区在线 | 亚洲一区在线视频| 亚洲精品在线电影| 亚洲AV无码久久久久网站蜜桃| 亚洲另类视频在线观看| 亚洲国产成人手机在线电影bd| 亚洲噜噜噜噜噜影院在线播放 | 亚洲黄色中文字幕| 亚洲另类视频在线观看| 亚洲三级在线观看| 亚洲国产综合AV在线观看| 亚洲AV性色在线观看| 国产精品亚洲综合| 国产精品亚洲高清一区二区| 国产亚洲午夜高清国产拍精品| 亚洲欧洲∨国产一区二区三区| 久久精品夜色国产亚洲av| 亚洲国产精品自在线一区二区| 亚洲综合久久久久久中文字幕| 亚洲制服丝袜在线播放| 亚洲色欲色欱wwW在线| 亚洲av无码专区国产不乱码| 国产精品亚洲va在线观看| 亚洲精品国产电影| 亚洲区小说区图片区QVOD| 亚洲第一区香蕉_国产a| 亚洲小视频在线播放| 亚洲日韩精品国产一区二区三区| 精品久久久久亚洲| 夜夜春亚洲嫩草影院| 亚洲综合精品一二三区在线| 国产精品亚洲精品| www国产亚洲精品久久久|