簡體   English   中英

如何使用easy68k將文本緩慢輸出到控制台

[英]How to slowly output text to the console using easy68k

我目前正在用easy68k創建一個簡單的空間樣式資源管理游戲。

我的游戲的一部分由一個簡單的循環組成,該循環指示玩家的艦隊從其離開基地直至到達任務目的地的那一點。 該回路由行進距離和船舶燃料控制。 因此,如果燃料用完了,那么我將添加一個函數,該函數將使玩家知道他們沒有到達目的地並且他們失去了飛船。

在這一切發生之間,我有一個從1到100生成的隨機數,具體取決於生成的數字,可能會發生某個事件,例如,玩家會發現一些打撈,船員,被遺棄的船只,海盜等。當這些事件之一發生時我想在控制台屏幕上輸出一條消息,讓玩家知道。

我的問題是,運行循環時,如果發生任何事件,它們都將在不到一秒鍾的時間內輸出到屏幕上,並且播放器最終會丟失大多數事件。

我想知道,是否有一種方法可以延遲輸出,以便使文字以玩家可以輕松跟隨的速度顯示?

任何幫助將不勝感激。

如果這對我的循環有用,那么我還沒有完全完成所有機制的實現,但是循環本身可以正常工作。

      *-------------------------------------------------------
      *---------------Update Mission Progress-----------------
      *  Move to mission location, random events will occur
      *------------------------------------------------------- 
update:
bsr     endl            print a CR and LF
bsr     decorate        decorate with dots using a loop

move.w  $4000, D7       move distance value into D7
move.w  $4020, D6       move fuel value into D6

lea     update_msg,A1   Display update message
move.b  #14,D0
trap    #15

update_loop:

move.b  #8,d0           Get time 1/100th seconds since midnight
trap    #15
and.l   #$5FFFFF,D1     prevent overflow in divu
divu    #100,D1         time count / 100
swap    D1              swap upper and lower words of D1 to put remainder in low word
addq.w  #1,D1           d1.w contains number from 1 to 100
move    D1,D2           d2 = d1

bsr     check_events    check to see if any of the events will occur   

sub.b   #fuel_cost, D6  reduce ships fuel by one
CMP     #0, D6          if the ships fuel reaches 0 then go to out of fuel routine
BEQ     out_of_fuel     

sub.b   #1, D7          reduce mission distance by 1               
CMP     #0, D7          when it reaches 0 go to the continue subroutine            
BNE     update_loop     otherwise go back to the top of the loop

BRA     continue_loop 

continue_loop:
*Used to leave the update loop
lea     continue_msg,A1 
move.b  #14,D0
trap    #15

move.b  #5,D0           wait for input so the player can read the event messages
trap    #15

CMP     $94, D1
BNE     continue_loop


move.w  D6, $4020       store the new value for ship fuel

bsr     decorate                           
rts

check_events:    
*Check to make sure the random value is within the specific range for each event
CMP     #95, D2
BGE     check_found_salvage

CMP     #75, D2
BGE     check_hit_mine

CMP     #55, D2
BGE     check_pirate_attack

CMP     #35, D2
BGE     check_found_ship

CMP     #15, D2
BGE     check_found_crew

rts
*Further checks to make sure the random value is within the specific ranges 
check_found_salvage:

CMP     #97, D2                   
BLE     collect_salvage              
rts                                 

check_hit_mine:

CMP     #77, D2                    
BLE     hit_mine              
rts                 

check_pirate_attack:

CMP     #57, D2                    
BLE     initiate_attack              
rts                 

check_found_ship:

CMP     #37, D2
BLE     check_collect_ship
RTS

check_found_crew:

CMP     #17, D2
BLE     collect_crew
rts
*Run each event, outputting a message to the screen if an event occurs  
collect_salvage:

lea     found_salvage_msg,A1   
move.b  #14,D0
trap    #15

rts                                 

hit_mine:   

lea     hit_mine_msg,A1   
move.b  #14,D0
trap    #15

rts

initiate_attack:    

lea     initiate_attack_msg,A1   
move.b  #14,D0
trap    #15

rts

check_collect_ship:    

lea     found_ship_msg ,A1   
move.b  #14,D0
trap    #15

rts

collect_crew:    

lea     found_crew_msg,A1   
move.b  #14,D0
trap    #15

rts
*Not fully implemented out of fuel mechanic yet
out_of_fuel:
rts

根據Easy68k論壇,有一個陷阱可以等待指定的時間:

move.l   #100,D1     ; delay in 1/100th of seconds
moveq    #23,D0
trap     #15

您可以使用該陷阱在打印事件后稍等嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM