請使用 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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.