iT邦幫忙

2023 iThome 鐵人賽

DAY 16
1
自我挑戰組

WiFiBoy Python 玩學機介紹系列 第 16

16. 經典遊戲(一) 終極密碼

  • 分享至 

  • xImage
  •  

命令列程式基礎

今天我們要開始介紹如何用玩學機來編寫遊戲程式。製作遊戲是一件相當需要創意與努力的工作。現今的遊戲不僅要好玩,還要有漂亮的遊戲畫面與生動的音樂,更重要的還要有豐富且引人入勝的劇情。這一切都起始於文字介面遊戲。系統讓程式開發人員能夠透過命令列輸入指令的方式,與使用者互動,透過畫面上文字符號的排列組合,組出不同圖案。後因顯示技術的改進,開始有了彩色文字控制碼,讓遊戲畫面變得更豐富。

接下來,我們就要帶著各位,體會用 MicroPython 來編寫文字介面遊戲,從中熟悉幾個核心功能:

  1. 使用者輸入 input()
  2. 系統列印訊息 print()
  3. 亂數產生系統 wb.rand()

寫一個讓使用者可以自行輸入的數字的功能

int(input("猜一個 1 到 100 以內的數字: "))

input 函數是透過文字介面讓使用者可以自行輸入文字、數字與符號,系統都將這些訊息以字串的方式處理。如果我們要將這些訊息當作數字處理,則要在前面使用 int 或 float 函數,將訊息解讀為整數或浮點數。

印出訊息的指令

  1. 基本用法: print("遊戲結束!")
  2. 輸出變數: name = "Alice"; print("姓名: ", name)
  3. 使用格式化文字,使用百分比符號: name = "Alice"; age = 25; print("姓名: %s, 年齡: %d", %(name,age))
  4. 使用格式化文字,使用f-string: print(f"第{round_number}次回答: 答案正確")
  5. 格式化數字: d=3.14159; print("d= %.2f", d)
  6. 輸出多行文字: 段落文字用 """ 開頭,最後結尾也用 """ 包起來,這樣中間每行文字則不需再用print函數處理。
  7. 換行(\n)、跳格(\t): print("abc\ndef"); print("abc\tdef\tghi")
  8. 分隔符號: print("Item 1", "Item 2", sep = ",")

產生亂數

玩學機內建了硬體亂數產生器,您只要使用 wb.rand函數就能產生亂數。用法如下:

wb.rand([start, end] | [range])

  • 此函數一次產生一個亂數值
  • start, end 是整數的開始與結束範圍
  • 如果省略指輸入一個數,則產生 0 ~ range-1範圍的亂數
  • 如果什麼參數都不輸入,則產生一個32 bit 的整數亂數

終極密碼的規則

根據維基百科 「終極密碼」的說明:

  1. 主持人寫下一個 0 ~ 100 之間的整數,稱為「密碼」。舉例來說,密碼為「46」。
  2. 玩家第一次猜「83」,範圍變成「0 到 83」。
  3. 玩家第二次猜「24」,範圍變成「24 到 83」。
  4. 玩家第三次猜「67」,範圍變成「24 到 67」。
  5. 玩家第四次猜「52」,範圍變成「24 到 52」。
  6. 玩家第五次猜「45」,範圍變成「45 到 52」。
  7. 玩家第六次猜「46」,答對,結束遊戲。

您可以限定猜的次數,讓遊戲變得更緊張。

終極密碼實作

# 隨機產生密碼
secret_number = wb.rand(1, 100)
print(secret_number)
start_num = 1
end_num = 100
count = 1
while True:
    try:
        guess = int(input(f"請從 {start_num} - {end_num} 之間猜一個數字:"))
        
        if guess < secret_number:
            print("數字太小!")
            print(f"數字範圍: {guess} 到 {end_num}")
            start_num = guess
        elif guess > secret_number:
            print("數字太大!")
            print(f"數字範圍: {start_num} 到 {guess}")
            end_num = guess
        else:
            print(f"恭喜你答對!,答案是 {secret_number},您總共答 {count} 次")
            break
        count += 1 
    except ValueError:
        print("輸入無效,請輸入整數。")

print("遊戲結束。")

感謝各位的堅持,終於寫了第一個遊戲。明天我們將會介紹如何寫「井字遊戲」,明天見。


上一篇
15. 溫溼度記錄器
下一篇
17. 經典遊戲(二) 井字遊戲
系列文
WiFiBoy Python 玩學機介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言