# Introduction to Python Applications Final Project 2021 Fall ###### tags: `Introduction to Python Applications` ## 內容 使用 `Telegram Bot` 設計一個接龍遊戲。 ## 輸入說明 * `/start` 指令產生初始的牌,需含有以下資訊: ``` ♣(0): ♦(1): ❤️(2): ♠(3): 🂠(4): row0(5):♣1 row1(6):♦1 * row2(7):♠1 * * row3(8):❤️2 * * * row4(9):❤️3 * * * * row5(10):♠4 * * * * * row6(11):♦6 * * * * * * ``` 1. 第 0~3 列為示意圖中右上角,最後的依序放牌的答案區。只能放該花色的牌且由小排到大。 2. 第 4 列為抽牌區,此處覆蓋第 3. 分完後剩下的牌。每次只能翻開最上面那張牌。 3. 第 5~11 列為示意圖中下面暫時放的牌區,初始於最左列產生一張已翻開的牌以及每往右一列就多加一張覆蓋的牌。每列只能由小排到大,但不需有花色限制。 示意圖: ![](https://i.imgur.com/PqY17w4.png) https://zh.wikipedia.org/wiki/%E6%8E%A5%E9%BE%8D_(%E7%B4%99%E7%89%8C%E9%81%8A%E6%88%B2)#/media/File:Klondike_(solitare).png * `/move` 輸入參數: 第一個輸入為要移動第幾列的牌。 第二個輸入為要移動的牌組的第幾張牌。 第三個輸入為要移動至哪一個列。 移動規則: 1. 只能移動已經翻開的牌。 2. 從已經翻開且連續排放的牌中指定位置,移動時為指定位置及前面位置的牌一起移動。 3. 移動至指定列(第三個輸入,答案區,只能由小到大排放)。 4. 若欲移動之牌組數字無法與指定列連續,則無法進行移動,並顯示移動失敗。 5. 若移動完所有的牌至答案區,則顯示遊戲成功訊息。 範例:`/move 6 0 1` 將畫面上第 6 列(暫存區第 1 列)的第 0 張牌(最上面那張)移動至畫面上第 1 列 (♦的答案區)。 * `翻牌按鈕` 需使用 `InlineKeyboardButton` 建立一個翻牌按鈕,功能為一次翻出一張牌。 * `重玩按鈕` 需使用 `InlineKeyboardButton` 建立一個重完按鈕,功能為恢復初始的狀態(/start)。 ## 輸出說明 * 每張牌顯示為 ♣、♦、❤️、♠ 這四個 icon 配上 1~13 的數字(為計算及顯示方便不用轉換成(A、J、Q、K)。 * 未翻開的牌以 `*` 表示。 ## 範例 * 輸入: ``` /start ``` 產生初始的牌面 * 輸出: ``` ♣(0): ♦(1): ❤️(2): ♠(3): 🂠(4): row0(5):♣1 row1(6):♦1 * row2(7):♠1 * * row3(8):❤️2 * * * row4(9):❤️3 * * * * row5(10):♠4 * * * * * row6(11):♦6 * * * * * * ``` * 輸入: ``` /move 6 0 0 ``` 將畫面上第 6 列(暫存區第一列)的第 0 張牌(最上面那張)移動至畫面上第 0 列(♣的答案區)。 ``` ♣(0): ♦1 ♦(1): ❤️(2): ♠(3): 🂠(4): row0(5):♣1 row1(6):❤️1 row2(7):♠1 * * row3(8):❤️2 * * * row4(9):❤️3 * * * * row5(10):♠4 * * * * * row6(11):♦6 * * * * * * ``` ## 繳交說明 1. 請使用螢幕錄影錄製程式碼解說及程式執行畫面,並上傳至 YouTube 設定不公開。 2. 繳交所有執行時需要的 .py 檔以及運用到的素材(圖片)檔案。 3. 請將完整專案壓縮成.zip,並命名為`學號_姓名.zip`,例如:`309551020_陳鈺清.zip`。 4. 上傳 e3 作業區繳交,繳交格式為: * 以文字填寫所上傳之 YouTube 影片連結。 * 附加檔案為專案程式碼之壓縮檔。 5. 助教會嚴格比對各位的程式碼,拜託不要原封不動抄襲QQ。 螢幕錄影在 macOS可使用 `Command + Shift + 5`,在 Windows 則建議另尋螢幕錄影軟體如:[OBS](https://obsproject.com) 等。