最近一段時間,我感覺自己大腦出現了衰退的癥狀,說話口誤逐漸增多,也常常忘記事情,
前兩天在 B 站上看到一個兩人玩的小游戲,叫做 “珠璣棋” ,發現這對鍛煉大腦有一些好處,無奈找不到人一起玩,于是我決定用 Python 寫一個簡單的程式來自己玩,
游戲規則
珠璣棋的規則非常簡單,它分為兩方:攻擊方和防守方,具體流程如下:
防守方寫一個4位數字,每位數字不能重復
攻擊方有10次猜測的機會,在每次機會里面,攻擊方可以說出一個4位數,讓防守方檢查,
定義兩個字母 A 和 B
攻擊方說出的4位數里面,每有任何一位或者多位的數字和位置都對,則 A+1,例如防守方的答案是1234,攻擊方的答案是6274,那么就是2A
在第4步檢查以后,如果攻擊方剩下的數字里面,有一位或者多位數字,在防守方剩下的數字里面,但位置不對,則 B+1,例如防守方的數字是1234,攻擊方的數字是4190,就是2B,
防守方給出 A 和 B 的值,攻擊方根據這兩個值修正自己的猜測數,如果10次內猜對了,那么攻擊方勝利,如果超過10次都猜不對,則防守方勝利,
特別說明,在匹配數字的時候,首先檢查數字和位置都對的情況,檢查完成以后,再檢查數字對位置不對的情況,并且這個時候,是攻擊方的剩余數字從左至右依次到防守方的剩余數字中檢查,每檢查一個數字,就把這個數字從攻擊方和防守方的數字里面同時剔除,所以對于防守方的數字1234,如果攻擊方的數字為4437,那么檢查結果應該是1A1B,因為一開始把數字3剔除了,攻擊方剩余447,防守方剩余124.然后攻擊方的第一個4和防守方的4匹配上了以后也會剔除,變成攻擊方剩余47,防守方剩余12.此時防守方已經沒有4了,
在這個游戲規則里面,防守方的作用僅僅是檢查結果而已,并沒有攻防對抗,所以我們可以用程式來代替防守方,
Python 實作
首先我們來生成防守方的4位數字,由于4位數字不相等,所以我們使用 Python 的亂數來生成:
由于要檢查的資料通過 input 輸入,所以為了保持型別一致,我們都使用字串來表示,
運行效果如下圖所示:
接下來,讓玩家連續進行10次嘗試,每次輸入一個4位數:
運行效果如下圖所示:

接下來,首先檢查位置和數字都正常的情況:
這里,使用來同時迭代和,從而實作逐位一一對應檢查,
下面再來處理數字對,但位置不對的情況:
這個代碼就比較簡單了,把剩下的數字一個一個到答案剩下的數字里面去查詢,如果找到了,B 就加1,然后從答案里面洗掉這個數字,接著查找 guess 的下一個數字,
完整的代碼如下圖所示:

如果10次猜測都失敗了,運行效果如下圖所示:

如果才對了,運行效果如下圖所示:

計算程序如下圖所示:

至此,珠璣棋的命令列版本就完成了,希望這個小游戲能幫助大家鍛煉一下大腦,
關于Python技術儲備
👉Python學習路線匯總
Python所有方向的技術點做的整理,形成各個領域的知識點匯總,它的用處就在于,你可以按照上面的知識點去找對應的學習資源,保證自己學得較為全面,

👉Python必備開發工具 
👉精品Python學習書籍
當我學到一定基礎,有自己的理解能力的時候,會去閱讀一些前輩整理的書籍或者手寫的筆記資料,這些筆記詳細記載了他們對一些技術點的理解,這些理解是比較獨到,可以學到不一樣的思路,

溫馨提示:篇幅有限,已打包檔案夾,獲取方式在:文末
👉Python學習視頻600合集
觀看零基礎學習視頻,看視頻學習是最快捷也是最有效果的方式,跟著視頻中老師的思路,從基礎到深入,還是很容易入門的,

👉實戰案例
光學理論是沒用的,要學會跟著一起敲,要動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰案例來學習,

👉100道Python練習題
檢查學習結果, 
👉面試刷題



結束語
這份完整版的Python全套學習資料已經上傳CSDN,朋友們如果需要可以微信掃描下方CSDN官方認證二維碼【免費獲取】,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/382972.html
標籤:其他
上一篇:悼念毛星云(淺墨)老師
