跳轉到內容

TI-Basic 程式/猜猜我

來自華夏公益教科書,開放的書籍,開放的世界

程式描述

[編輯 | 編輯原始碼]

GuessMe 是一款妙趣橫生的遊戲,其核心玩法是猜數字。在遊戲中,玩家會與計算器進行對話般的互動。程式啟動後,會開啟主選單,玩家有五個選項:

  1. 1,000
  2. 10,000
  3. 100,000
  4. 最高分數
  5. 退出

選項 4 會顯示一個螢幕,上面列出了三種難度級別的當前最高分數,選項 5 則直接退出程式,返回到計算器的主輸入螢幕。如果玩家選擇選項 1、2 或 3,遊戲將開始。遊戲開始時,計算器會隨機選擇一個數字讓玩家猜。如果玩家選擇了選項 1,那麼計算器選擇的數字將是 1 到 1000 之間的任意數字。選項 2 的最大數字是 10000,選項 3 的最大數字是 100000。這意味著玩家可以選擇三種難度級別,計算器會為每個難度級別儲存單獨的最高分數,這些分數都可以在主選單中選擇選項 4 檢視“最高分數”頁面。在選擇一個數字讓玩家猜之後,計算器會告訴玩家遊戲規則並提示他輸入第一個猜測。它會顯示以下訊息:“我正在想一個 1 到 1,000 之間的數字...”(在難度級別 2 中會顯示“10,000”,在難度級別 3 中會顯示“100,000”),“它是什麼?”玩家然後可以輸入他的第一個猜測。

在每次猜測之後,計算器會顯示一條訊息,如果玩家的猜測太低則顯示“更高”,如果玩家的猜測太高則顯示“更低”。在難度級別 3 中,計算器還可能顯示“高很多”或“低很多”。
如果玩家猜測的數字小於 1 或大於最大值,計算器會顯示“嘿!我說過它在 1 到 1,000 之間!”(和之前一樣,最後這個數字取決於選擇了哪個選項)。
如果玩家的猜測與答案相差 1,計算器會顯示“你太接近了!再高一點!”或“你太接近了!再低一點!”
經過 20 次猜測後,計算器會用“快點!”的訊息嘲笑玩家。
經過 30 次猜測後,計算器會顯示“天哪!你真慢!!!”
計算器可能會向玩家顯示的唯一其他訊息是:如果玩家在第一次嘗試時作弊來猜出答案,或者他恰巧在第一次嘗試時猜中了秘密數字。如果這樣做,計算器會簡單地說“你是個騙子!”,程式就會突然結束。

當玩家最終猜到正確的數字時,會顯示一系列訊息。第一個是:“你猜對了!!!”,接著是正確的答案,然後是“用了這麼多嘗試:”,接著是玩家猜到數字所用過的次數。然後,如果玩家打破了該難度級別的最高分數,他會看到訊息“最高分!!!”。

注意:計算器用於執行 GuessMe 的變數儲存在 [J] 矩陣中。

程式程式碼

[編輯 | 編輯原始碼]
PROGRAM:GUESSME
:ClrHome
:{3,9}→dim([J])
:0→X
:If 0=[J](3,7)
:Then
:100→[J](1,8)
:100→[J](2,8)
:100→[J](3,8)
:End
:Lbl 6
:Menu("MAIN MENU","1,000",1,"10,000",2,"100,000",3,"HI SCORES",5,"QUIT",Z)
:Lbl 5
:Output(2,3,"HI     1:     SCORES:  2:)
:Output(4,10,"3:)
:Output(2,13,[J](1,8)
:Output(3,13,[J](2,8)
:Output(4,13,[J](3,8)
:Output(7,3,"PRESS ENTER")
:Pause 
:ClrHome
:Goto 6
:Lbl 1
:1000→C
:Goto 4
:Lbl 2
:10000→C
:Goto 4
:Lbl 3
:100000→C
:Lbl 4
:randInt(1,C)→B
:ClrHome
:Disp "Im thinking of a","number between 1","and"
:If 3=log(C)
:Output(3,5,"1,000...")
:If 4=log(C)
:Output(3,5,"10,000...")
:If 5=log(C)
:Output(3,5,"100,000...")
:Lbl A
:Input "What is it",A
:X+1→X
:If X=20
:Disp "  Hurry it up!
:If X=30
:Disp " Gosh! You take","   forever!!!"
:If A<1 or A>C
:Then
:Disp " Hey! I said it"," was between 1"," and"
:If 3=log(C)
:Output(7,6,"1,000!")
:If 4=log(C)
:Output(7,6,"10,000!")
:If 5=log(C)
:Output(7,6,"100,000!")
:Goto A
:End
:If A<B-1 and A>B-25000
:Then
:Disp " Higher"
:Goto A
:End
:If A>B+1 and A<B+25000
:Then
:Disp " Lower"
:Goto A
:End
:If A≥B-1 and A<B
:Then
:Disp " Youre SO close!"," Just a little","    higher!"
:Goto A
:End
:If A≤B+1 and A>B
:Then
:Disp " Youre SO close!"," Just a little","     lower!"
:Goto A
:End
:If A≤B-25000
:Then
:Disp " Much higher"
:Goto A
:End
:If A≥B+25000
:Then
:Disp " Much lower"
:Goto A
:End
:If A=B and X=1
:Then
:Disp "  YOU CHEATER!"
:Output(1,1,"")
:Stop
:Else
:Disp "  You got it!!!",B,"","In this many","     tries:",X
:Output(2,1,"")
:End
:If X<[J](log(C)-2,8)
:Then
:X→[J](log(C)-2,8)
:Output(8,3,"HIGH SCORE!!")
:1→[J](3,7)
:Lbl Z
:Output(1,1,"")
:Stop
華夏公益教科書