跳轉到內容

TI-Basic Z80 程式設計/程式設計遊戲

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

可以使用 TI-Basic 程式設計簡單的遊戲。這裡給出的示例的解釋旨在簡單說明,而不是技術指南。

乒乓球演示

[編輯 | 編輯原始碼]

以下程式是使用 TI-Basic 編寫的簡單乒乓球遊戲。我們首先定義遊戲程式碼

:DelVar C :DelVar G :7→A :8→B :1→D :-1→E :6→F :While not(C :ClrHome :Output(A,B,".") :Output(8,F,"--") :If A=1 :-D→D :If A=7 :Then :If B≥F and B≤F+1 :-D→D :End :If B=1 or B=16 :-E→E :(A=8)→C :A+D→A :B+E→B :getKey→K :F+(K=26 and F<13)-(K=24 and F>1)→F :End :Pause "U LOSE" :ClrHome :Output(1,1,"")


這裡,我們開始解釋程式碼

:Delvar C :Delvar G :7→A :8→B :1→D :-1→E :6→F

這些第一行將變數初始化為特定值。AB 變數是球的座標。C 使整個迴圈保持執行。DE 會改變我們的球座標。它們允許我們使用比使用 1 和 -1 更有效的編碼。F 是我們槳的水平座標,因此它可以來回移動。

:While not(C

not(命令返回 1(真),如果條件等於 0。這等效於使用 While C=0,但減少了一個位元組。

:ClrHome

每次有東西移動時(或至少每次迴圈重複時)重新整理螢幕。

:Output(A,B,".") :Output(8,F,"--")

這將符號列印到螢幕上。

:If A=1 :-D→D

這告訴球透過反轉其方向來“反彈”天花板。

:If A=7 :Then :If B>=F and B<=F+1 :-D→D :End

這裡,這個步驟在很小的空間內做了一些事情。第一行檢查球是否在螢幕底部。如果是,那麼它檢查球是否在槳上。如果槳在那裡,那麼球就會反彈。

:If B=1 or B=16 :-E→E

這告訴球反彈右側和左側的牆壁。

:If A=8 :1→C

這是觸發損失的原因。這會檢查球是否擊中了螢幕底部。如果是,那麼程式將終止迴圈。

:A+D→A :B+E→B

此步驟透過更改座標使球在螢幕上移動。

:getKey→K :F+(K=26 and F<13)-(K=24 and F>1)→F

這是使遊戲執行的原因。這是使用者輸入步驟。getkey→K 將使用者按鍵儲存到 K 中。然後,在下一行中,F(槳的水平座標)會增加一,如果使用者按下 (26) 並且小於 13(螢幕右側 = 16 - 3(用於槳的大小))

一個等式如果為真總是變為 1,如果為假則變為 0,因此如果為真,那麼它將在那個方向移動一格,如果使用者按下 (24) 則同樣原則適用。

:End

此行定義了程式主要部分執行所在的迴圈的結束。

:Pause "U LOSE" :ClrHome :Output(1,1,"")

這些行在您失敗時執行。它將顯示一條訊息,清除螢幕並阻止顯示“完成”。


以下是更最佳化的版本

PROGRAM:PONG :7→A:8→B :DelVar C1→D :-1→E:6→F :Repeat C :If A=1 :-D→D :E-2Emax({A=7,B>=F,B<=F+3→ :E-2E(B=1 or B=16)→E :A=8→C :Output(A,B," //")1 space :A+D→A :B+E→B :Output(A,B,"." :getKey :F+(Ans=26)-(Ans=24 :If 15<=Ans :1 :If 0>=Ans :13 :Output(8,F," //") :Ans→F :Output(8,F,"--") :End :ClrHome :Output(1,1,"U LOSE")


可以新增計分系統和其他功能,但將在後面的文章中解釋。這個程式執行得很好,只是游標移動不夠快。為了使平臺移動得更快,請更改

:getKey→K :F+(K=26 and F<13)-(K=24 and F>1)→F


:getKey→K :If (K=26 and F<13) :F+2→F :If (K=24 and F>1) :F-2→F


也可以寫成以下形式

:getKey→K :F+2(K=26 and F<13)-2(K=24 and F>1)→F


這將使平臺跳過一個空間,使平臺更快。


前一個:高階程式設計
下一個:命令列表
目錄:TI-Basic Z80 程式設計

華夏公益教科書