TI-Basic 89 程式設計/一個基本程式
本頁旨在讓您略窺TI-89 BASIC 能夠執行的功能。以下程式是一個遊戲,它在螢幕上顯示一個數字並移動它 10 秒。遊戲的目的是記住該數字,然後輸入它。
首先,將完整顯示程式(以便您有機會將其複製到計算器上並自己測試它的功能)。然後,將解釋每個程式碼塊的功能,以便您瞭解它的作用。然而,在深入瞭解其工作原理之前,最好先完成本手冊的其餘部分,以便您瞭解語法和結構的工作原理。
這個程式叫做“memory”。如果您想在自己的計算器上建立它,請進入程式編輯器,可以透過以下按鍵組合進入:APPS+7+3。確保下拉選單設定為“program”,並將其命名為“memory”(a-lock 應該已經開啟,所以您不需要按 alpha 按鈕)。
此外,這個程式是為 TI-89 和 TI-89 Titanium 設計的。TI-92、TI-92+ 和 Voyager 200 可能有不同的螢幕尺寸或按鍵對映,因此會阻止這個程式正常工作。如果您想測試這個程式,並且您擁有 TI-92、TI-92+ 或 Voyager 200,請在討論頁面上留下資訊,包括螢幕解析度(水平 x 垂直)以及ENTER(或等效)鍵對映到哪個數字。
以下是一些您將在本程式中遇到的字元的快速參考(同樣適用於 TI-89 和 TI-89 Titanium)
- © 可以透過按下 ♦ + ) 來建立
- & 可以透過按下 ♦ + ×(乘法鍵)來建立
- ≤ 可以透過按下 ♦ + < 來建立
- ≥ 可以透過按下 ♦ + > 來建立
- 文字可以透過按下 ♦ + ↑(上檔鍵以大寫文字)來複制
- 文字可以透過按下 ♦ + ESC 來貼上
冒號後的空格僅用於可讀性,如果您刪除它們,不會影響任何東西。
- Prgm
- ©NUMBER
- FnOff 1,2,3,4,5
- If m>12 Then
- Text "Number too large"
- Stop
- EndIf
- If m<1 Then
- Text "Number too small"
- Stop
- EndIf
- int(m)→n
- Lbl a
- ClrIO
- ClrDraw
- ClrGraph
- setGraph("Coordinates","OFF")
- setGraph("Grid","OFF")
- setGraph("Axes","OFF")
- int(rand()*10^n)→x
- While x≤10^(n-1)
- int(rand()*10^n)→x
- EndWhile
- int(rand()*50)→z
- rand(3)-2→a
- rand(3)-2→b
- 0→c
- rand(56)+10→d
- rand(95-5*(n-8))+5→e
- PxlText string(x),d,e
- PxlHorz 76
- 0→p
- For y,0,50
- getKey()→k
- If k=13 Then
- Exit
- EndIf
- PxlOff 76,p
- p+1→p
- PxlOff 76,p
- p+1→p
- PxlOff 76,p
- p+1→p
- If mod(y,10)=0 Then
- PxlOff 76,p
- p+1→p
- EndIf
- If c=z Then
- int(rand()*50)→z
- 0→c
- rand(3)-2→a
- rand(3)-2→b
- EndIf
- c+1→c
- d+a→d
- If d<10 Then
- 10→d
- z→c
- EndIf
- If d>60 Then
- 60→d
- z→c
- EndIf
- e+b→e
- If e<5 Then
- 5→e
- z→c
- EndIf
- If e>95-5*(n-8)+5 Then
- 95-5*(n-8)+5→e
- z→c
- EndIf
- PxlText " ",d-8,e-4
- PxlText " "&string(x)&" ",d,e-4
- PxlText " ",d+8,e-4
- EndFor
- ClrDraw
- Input "What is the number?",y
- If x=y Then
- Disp "Good Job!"
- Else
- Disp "Sorry! The number was",string(x)
- EndIf
- Input "Again? (0=no 1=yes)",x
- If x=1 Then
- Goto a
- Else
- DispHome
- EndIf
- EndPrgm
本節詳細介紹了上面程式的工作原理,逐段分解。最好在閱讀本節之前閱讀本手冊的其餘部分,因為基本結構和功能不會在此處詳細解釋。
- Prgm
- ©NUMBER
這定義了程式的名稱,它在呼叫時接受的引數,指定它是一個程式(而不是函式),並告訴目錄列表幫助第一個引數是一個 NUMBER。
- If m>12 Then
- Text "Number too large"
- Stop
- EndIf
- If m<1 Then
- Text "Number too small"
- Stop
- EndIf
這關閉了圖形螢幕上的前五個函式,這樣它們在程式執行時就不會被重新繪製。然後,如果給定的數字太大(超過 12)或太小(低於 1),則會顯示一個錯誤文字框,程式執行將停止
- Lbl a
- ClrIO
- ClrDraw
- ClrGraph
- setGraph("Coordinates","OFF")
- setGraph("Grid","OFF")
- setGraph("Axes","OFF")
這取給定數字的底(使其成為整數),這樣螢幕上只顯示一個完整的數字量。然後,它清除 I/O 螢幕和圖形上的所有文字/函式/圖形,並在圖形上關閉座標、網格和軸,使圖形螢幕完全空白。
- While x≤10^(n-1)
- int(rand()*10^n)→x
- EndWhile
- int(rand()*50)→z
- rand(3)-2→a
- rand(3)-2→b
- 0→c
- rand(56)+10→d
- rand(95-5*(n-8))+5→e
這初始化所有變數。x 是將在螢幕上顯示的數字,因此前四行(以 EndWhile 結尾)是一個迴圈,以確保 x 的長度正確。z 是文字在任何一個方向上移動的畫素數量。a 和 b 指定文字移動的方向。a 指定垂直移動,因此值為 -1 表示向上移動,0 表示不垂直移動,1 表示向下移動。b 指定水平移動,因此值為 -1 表示向左移動,0 表示不水平移動,1 表示向右移動。c 是一個計數器,每次數字移動一個畫素時增加 1。d 和 e 是數字的垂直和水平起點(分別)。
- PxlHorz 76
這將數字放在螢幕上的 d 和 e 座標處,如上面的程式碼片段所示。然後,它在螢幕底部繪製一條水平線。這條線是玩家剩餘記憶顯示數字的時間的狀態列。
- For y,0,50
- getKey()→k
- If k=13 Then
- Exit
- EndIf
- PxlOff 76,p
- p+1→p
- PxlOff 76,p
- p+1→p
- PxlOff 76,p
- p+1→p
- If mod(y,10)=0 Then
- PxlOff 76,p
- p+1→p
- EndIf
這將 p 設定為 0(p 用作計數器,以檢視狀態列如何前進),然後啟動一個迴圈,執行 51 次。在迴圈開始時,會檢查計算器按鍵上的按鍵。如果按下“ENTER”鍵,迴圈將被縮短,並且程式中使用者必須輸入記憶數字的部分將被執行。否則,它將從狀態列末端刪除 3 或 4 個畫素(通常刪除 3 個畫素,如果 y -- 迴圈的計數器 -- 可以被 10 整除,則刪除 4 個畫素)。
- int(rand()*50)→z
- 0→c
- rand(3)-2→a
- rand(3)-2→b
- EndIf
- c+1→c
這檢查文字是否在當前方向上移動了 z 畫素,如果已經移動,則文字方向會改變。
- If d<10 Then
- 10→d
- z→c
- EndIf
- If d>60 Then
- 60→d
- z→c
- EndIf
- e+b→e
- If e<5 Then
- 5→e
- z→c
- EndIf
- If e>95-5*(n-8)+5 Then
- 95-5*(n-8)+5→e
- z→c
- EndIf
- PxlText " ",d-8,e-4
- PxlText " "&string(x)&" ",d,e-4
- PxlText " ",d+8,e-4
- EndFor
這段程式碼的開頭實際上是“移動”文字。對 d(垂直座標)和 e(水平座標)都進行了兩次檢查,以確保文字沒有移動到不再完全可見的位置。然後,它顯示用空格填充的文字,以便覆蓋之前的文字(而不是留下痕跡)。它顯示完文字後,要麼繼續執行迴圈,要麼在迴圈計數器為 50 時停止。
- Input "What is the number?",y
- If x=y Then
- Disp "Good Job!"
- Else
- Disp "Sorry! The number was",string(x)
- EndIf
- Input "Again? (0=no 1=yes)",x
- If x=1 Then
- Goto a
- Else
- DispHome
- EndIf
- EndPrgm
這擦除圖形螢幕(這樣使用者就不能簡單地切換回它來檢視數字),然後在 I/O 螢幕上詢問數字。如果玩家輸入正確或錯誤,將顯示不同的文字。然後,它詢問玩家是否要重試。如果同意,它跳轉回“Lbl a”這一行。如果不同意,它將顯示主螢幕,然後停止程式執行