TI-Basic 程式/追逐
追逐是一款簡單而有趣的遊戲。在遊戲中,玩家扮演一個“大於”符號(>),它要吃掉一些 X。遊戲在常規的打字螢幕上進行,有 6 個角色可以在螢幕上移動。一個是玩家的角色,即 > 符號。另一個是 X,是玩家應該移動到並吃掉的角色,一旦他到達它。然而,其他四個是“不等於”符號 (≠),它們很兇狠,如果玩家離它們足夠近,它們會試圖吃掉玩家。追逐有一個標題螢幕,它透過 CSTART 程式在圖形螢幕上繪製出來,該程式也必須在玩家的計算器上,才能玩追逐。標題螢幕有四個選項,分別是
1) 新遊戲(開始新遊戲)
2) 繼續(繼續當前儲存的遊戲)
3) 指示(顯示追逐的指示)
4) 退出(退出程式並返回主螢幕)。
在指示頁面中,上面提到的資訊的大部分都涵蓋了,以及其他資訊,比如遊戲控制使用哪些按鍵。在遊戲中,五個非玩家角色(四個 ≠ 和 X)自行移動,隨機遵循四種模式中的任何一種。例如,如果其中一個 ≠ 向左移動一個空格,那麼另一個將向上移動,另一個將向下移動,另一個將向右移動。兩個 ≠ 永遠不會在一步中朝著同一個方向移動。此外,X 的移動將與四個怪物中的一個的移動平行。玩家用來移動的控制鍵顯示在指示頁面上。玩家可以按下除 5 以外的任何 9 個數字鍵(1-9)來移動他的角色。例如,按下 7 鍵將使玩家的角色向上移動一個空格,向左移動一個空格,按下 8 鍵將只使玩家的角色向上移動一個空格。這個解釋可能難以理解,但透過玩遊戲很容易弄明白。
玩家的分數在整個遊戲過程中顯示在螢幕的右上角。每當玩家吃掉 X 角色時,他的分數顯示中就會增加一分。此外,X 會消失並在螢幕上的其他地方重新生成。每當玩家開始遊戲時,追逐標題螢幕都會顯示玩家的最高分數。
最後一個控制鍵是 ENTER 鍵,它可以暫停/儲存你當前正在玩的遊戲。如果玩家在玩遊戲時按下它一次,他可以儲存他的遊戲,並在任何時候透過啟動 prgmCHASE 並選擇上面提到的選項 2,繼續,來返回到他的遊戲。此外,在玩遊戲時按下 ENTER 鍵兩次,一次是暫停/儲存遊戲,然後再次按下,他就可以立即恢復,遊戲將繼續進行。這樣做的效果是,所有關於得分和每個角色在螢幕上的位置等內容的變數都被儲存起來,並且遊戲將恢復其正常的執行速度。不幸的是,每當執行一個重複的 TI-Basic 程式時,它最終會執行得越來越慢。為了避免或解決在玩追逐時遇到的這個問題,可以使用這個方法,即按下 ENTER 鍵兩次。如上所述,這將退出程式,然後再次恢復程式。
注意:計算器用來執行追逐的變數儲存在 [J] 矩陣中。
註釋
- 這些程式碼行中的許多行可以透過在同一行中只鍵入一個 ":" 而不是按下 ENTER 並鍵入下一行上的下一個命令來連結在一起。此外,這裡顯示的一些命令已經以這種方式連結起來了。
- 在命令 " :Output(8,3,"-GAME¤SAVED- ", 中發現的 "¤" 實際上是一個非常小的正方形,它可以在你的計算器的 CATALOG 選單中找到。它將位於看起來像一個小加號 (+) 的上面,在列表的底部附近。
PROGRAM:CHASE
:If Ans=105:1→Y
:{3,9→dim([J]
:[J](1,1→C:[J](1,2→D:[J](1,3→E:[J](1,4→F:[J](2,1→G:[J](2,2→H
:[J](2,3→I:[J](2,4→J:[J](3,1→K:[J](3,2→L:[J](3,3→M:[J](3,4→N
:If 1=Y
:Then
:DelVar Y
:[J](2,5→X
:Goto A
:End
:If 1≠[J](3,5
:0→[J](1,5
:prgmCSTART
:ZStandard
:AxesOn
:If Ans=93
:Then
:[J](2,5→X
:Goto A
:End
:DelVar X
:round(C,0→C:round(D,0→D:round(E,0→E:round(F,0→F:round(G,0→G:round(H,0→H
:round(I,0→I:round(J,0→J:round(K,0→K:round(L,0→L:round(M,0→M:round(N,0→N
:C+round(9rand,0)-round(9rand,0→C:D+round(9rand,0)-round(9rand,0→D
:G+round(4rand,0)-round(4rand,0→G:H+round(4rand,0)-round(4rand,0→H
:I+round(4rand,0)-round(4rand,0→I:J+round(4rand,0)-round(4rand,0→J
:K+round(4rand,0)-round(4rand,0→K:L+round(4rand,0)-round(4rand,0→L
:M+round(4rand,0)-round(4rand,0→M:N+round(4rand,0)-round(4rand,0→N
:Lbl E
:If C<1:1→C:If C>8:8→C:If D<1:1→D:If D>16:16→D:If E<2:2→E:If E>7:7→E
:If F<2:2→F:If F>15:15→F:If G<2:2→G:If G>7:7→G:If H<2:2→H:If H>15:15→H
:If I<2:2→I:If I>7:7→I:If J<2:2→J:If J>15:15→J:If K<2:2→K:If K>7:7→K
:If L<2:2→L:If L>15:15→L:If M<2:2→M:If M>7:7→M:If N<2:2→N:If N>15:15→N
:If C=E and D=F or C=G and D=H or C=I and D=J or C=K and D=L or C=M and D=N
:Then
:D+round(6rand,0)-round(3rand,0→D
:Goto E
:End
:Lbl C
:E+round(9rand,0)-round(9rand,0→E
:F+round(9rand,0)-round(9rand,0→F
:If E<2:2→E:If E>7:7→E:If F<2:2→F:If F>15:15→F
:If E=M and F=N
:Goto C
:Lbl A
:ClrHome
:Disp X
:Output(E,F,"X
:Output(G,H,"≠
:Output(I,J,"≠
:Output(K,L,"≠
:Output(M,N,"≠
:Output(C,D,">
:If C=E and D=F
:Then
:X+1→X
:Goto C
:End
:If C=G and D=H or C=I and D=J or C=K and D=L or C=M and D=N
:Goto D
:getKey
:If Ans=105
:Then
:Output(8,3,"...SAVING...
:C→[J](1,1
:D→[J](1,2
:E→[J](1,3
:F→[J](1,4
:G→[J](2,1
:H→[J](2,2
:I→[J](2,3
:J→[J](2,4
:K→[J](3,1
:L→[J](3,2
:M→[J](3,3
:N→[J](3,4
:X→[J](2,5
:Output(8,3,"-GAME¤SAVED-
:105
:Stop
:End
:If Ans=0
:Goto B
:If Ans=72 and C>1 and D>1
:Then
:C-1→C
:D-1→D
:End
:If Ans=73 and C>1
:C-1→C
:If Ans=74 and C>1 and D<16
:Then
:C-1→C
:D+1→D
:End
:If Ans=82 and D>1
:D-1→D
:If Ans=84 and D<16
:D+1→D
:If Ans=92 and C<8 and D>1
:Then
:C+1→C
:D-1→D
:End
:If Ans=93 and C<8
:C+1→C
:If Ans=94 and C<8 and D<16
:Then
:C+1→C
:D+1→D
:End
:Lbl B
:randInt(1,4
:If Ans=4
:Goto 3
:If Ans=3
:Goto 2
:If Ans=2
:Goto 1
:If F≥2 and G≤7 and J≤15 and K≥2 and N≥2
:Then
:F-1→F
:G+1→G
:J+1→J
:K-1→K
:N-1→N
:Goto A
:End
:Lbl 1
:If E≥2 and H≥2 and I≤7 and L≤15 and M≥2
:Then
:E-1→E
:H-1→H
:I+1→I
:L+1→L
:M-1→M
:Goto A
:End
:Lbl 2
:If F≤15 and G≥2 and J≥2 and K≤7 and N≤15
:Then
:F+1→F
:G-1→G
:J-1→J
:K+1→K
:N+1→N
:Goto A
:End
:Lbl 3
:If E≤7 and H≤15 and I≥2 and L≥2 and M≤7
:Then
:E+1→E
:H+1→H
:I-1→I
:L-1→L
:M+1→M
:End
:Goto A
:Lbl D
:Output(4,2,"YOU GOT EATEN!
:1→[J](3,5
:0→[J](2,5
:If X>[J](1,5
:Then
:Output(5,2,"{Press enter}
:Pause
:X→[J](1,5
:Output(4,2,"New high score:
:Output(5,2," " <-- (This close-quote mark is not needed, but
:Output(5,8,[J](1,5 there must be 14 blank spaces here)