請使用 Python 在 telegram 實作一個暗棋遊戲 <iframe width="560" height="315" src="https://www.youtube.com/embed/GSdj41va5h0?si=mkqEEhrGUQGkYJUg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> ## 暗棋規則 - 棋盤為 4*8 方格 - 在最一開始,棋子反面朝上隨機布置於棋格。反面朝上的棋子稱為**暗棋**,正面朝上稱為**明棋** - 為兩人遊戲 - 兩方棋子分別為 - 將、士、象、車、馬、砲、卒 - 帥、仕、相、俥、傌、炮、兵 - 棋子數量共 32 個,分別為 - 將/帥:各一個 - 士/仕:各二個 - 象/相:各二個 - 車/俥:各二個 - 馬/傌:各二個 - 砲/炮:各二個 - 卒/兵:各五個 - 棋子等級分別為( `>` => 左邊等級比右邊大,自己跟自己同等) - 將帥 > 士仕、象相、車俥、馬傌 - 士仕 > 象相、車俥、馬傌、砲炮、卒兵 - 象相 > 車俥、馬傌、砲炮、卒兵 - 車俥 > 馬傌、砲炮、卒兵 - 馬傌 > 砲炮、卒兵 - 砲炮 > 將帥、士仕、象相、車俥、馬傌、卒兵 - 卒兵 > 將帥 - 每方回合需選擇以下行動之一(請參考圖一) - 將**一枚**暗棋翻成明棋,先行方第一次翻出棋子的顏色,該色成為他的棋子;反之為敵方 - 移動**一枚**本方棋至空格:移動應朝縱或橫向移動且只能移動棋至鄰邊格(一格差) - 剋除(吃)**一枚**低等或同等的敵方明棋 - 除了砲/炮以外的其他棋,只能剋除(吃)鄰邊格(一格差) - 砲/炮只能在縱或橫向有一個且唯一個棋子時才能剋除(吃) > >(圖一)綠色代表可吃子/移動,紅色代表不可吃子/移動 ## 你的 Telegram Bot 需要符合 - 透過一個指令開啟一場新的暗棋(EX: /start) - 所提供的遊戲,需按照規格所定義的規則運作 - 電腦都是後手(下),User 則是先手(下) - 電腦不能下非法的棋,使用者下非法的棋則需要給予使用者提示,並阻止使用者 - 運作方式可以參照範例的,也可以自己設計一套,唯需要於錄影解說程式碼時說明你的運作邏輯,**並且是使用 Telegram 來運作** - 電腦不能只會暗棋翻成明棋,要會在適當時機移動或剋除(吃) ## 你需要符合 1. 錄影並解說程式碼,向助教證明你有學到足夠的知識完成題目 3. 當遊戲結束時,需要可以知道是誰贏,並顯示出來 4. 遊戲要可以重新開始 5. 嚴禁抄襲 ## 你不需要符合 1. 電腦下贏使用者 ## 提交 > Windows可以使用[Bandicam](https://www.bandicam.com/tw/)來錄影,也可以使用支援Windows、MAC的OBS但比較複雜一些;無論如何千萬不要使用手機對螢幕錄影,拜託! * 拍攝YouTube解說你的程式碼並完成**兩場遊戲**,請確定畫質可以看清楚(720p以上),以及有清楚錄製你的聲音 * 將主程式打包好提交到e3,並於作業說明貼上 youtube 連結 * 請勿使用 Mac 內建錄影,因為沒有聲音(如果你確定有聲音的話可以用) * 早點寫早點交,如果助教發現有問題會通知你,如果太晚交可能就算通知你也來不及改 ## 提示 1. 範例有用到的 telegram 的功能皆在[本篇 Lecture Notes](https://hackmd.io/@truckski/SJkxm2gV3)有提到 2. 使用者的錯誤操作行為大概有以下幾種 - 格子上不是玩家的棋子 - 玩家選擇了同一格 - 玩家選擇的棋子無法移動到這格 - 想要剋除(吃)自己的棋子 - 想要剋除(吃)暗棋 3. 砲炮的運作邏輯比較特別,請小心處理 4. 你可以使用人工智慧來幫你完成作業,**唯你需要將使用過程錄製下來上傳至 E3 作業繳交區** ## 參考資料 - [wiki](https://zh.wikipedia.org/wiki/%E6%9A%97%E6%A3%8B)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up