2012-10-29 24 views
1

我的代碼看起來像這樣:

  IF INKEY$ <> "" THEN CALL notitle 
     PLAY "MST170o1e8o0b8o1e8" 
     IF INKEY$ <> "" THEN CALL notitle 
     PLAY "e8e4f#8g4f#8" 
     IF INKEY$ <> "" THEN CALL notitle 
     PLAY "g4e8d2o0b8o1d2 " 
     IF INKEY$ <> "" THEN CALL notitle 
     PLAY "o1e8o0b8o1e8e8e4f#8g4f#8g4a8b2g8b2MLg16a16" 
     IF INKEY$ <> "" THEN CALL notitle 
     PLAY "MSb4b8b8a8g8a4a8a4f#8g4g8MLg8f#8" 
     IF INKEY$ <> "" THEN CALL notitle 
     PLAY "MSe8f#4f#8f#8g8a8b4.a4.g4.f#4.o0b8o1e8e8e4d8e2." 

這似乎很乏味。有沒有一種方法可以更簡潔地重寫?我相信該代碼正試圖爲用戶提供跳過音樂的方法。

+0

VB.NET,VB6,和的QuickBasic都是不同的語言,每個人都有一個原因,一個單獨的標籤。如果您的問題是關於QuickBasic,請不要應用其他標記,因爲它們不在任何地方。使用適合你的問題的標籤,而不是像你詢問的那樣抓取任何聲音;他們是單獨的標籤出於某種原因。謝謝。 –

+1

我明白他們是不同的語言......但一般來說,在VB6/VB.NET中有經驗的人可以在QuickBasic中回答很大一部分問題。 – davemackey

+0

QuickBasic在VB.NET之前已經有十年了,一個完全與另一個完全無關。 VB6用於創建Windows應用程序,而QB創建DOS應用程序,因此它們之間再次沒有相似之處。使用全部三個標籤就像問一個解剖學問題並標記它「動物」,「蔬菜」和「礦物」 - IOW,廢話。請不要這樣做。 –

回答

2

哇,編程QBasic在2012呃?那會是什麼樣的項目?

無論如何,我會將音樂字符串放入數組中,並在檢查INKEY $時循環訪問該數組。我沒有安裝QB,所以我不知道這是否會工作,但這樣的事情:

DIM mymusic$(6) 
FOR i = 1 TO 6 
    READ S$ 
    mymusic$(i) = S$ 
NEXT i 

' loop while user doesn't press any key 
i = 0 
WHILE INKEY$ = "" 
    ' i will be 0..5 so play i+1 to get 1..6 
    PLAY mymusic$(i+1) 

    ' use MOD to loop i through 0..5 
    i = (i + 1) MOD 6 
WEND 

' user pressed a key 
CALL notitle 

' music strings in data segment 
DATA "MST170o1e8o0b8o1e8" 
DATA "e8e4f#8g4f#8" 
DATA "g4e8d2o0b8o1d2" 
DATA "o1e8o0b8o1e8e8e4f#8g4f#8g4a8b2g8b2MLg16a16" 
DATA "MSb4b8b8a8g8a4a8a4f#8g4g8MLg8f#8" 
DATA "MSe8f#4f#8f#8g8a8b4.a4.g4.f#4.o0b8o1e8e8e4d8e2." 

順便說一句,你可以打破字符串成更短的位,這樣它會更頻繁地檢查用戶輸入。

0

這剪斷從播放音樂數據中的QBASIC一個循環:

' loop until keypress 
i = 1 
WHILE INKEY$ = "" 
    RESTORE 
    FOR j = 1 TO i 
     READ p$ 
    NEXT 
    PLAY p$ 
    i = i + 1 
    IF i > 6 THEN i = 1 
WEND 

' user pressed a key 
CALL notitle 
' music strings in data segment 
DATA "MST170o1e8o0b8o1e8" 
DATA "e8e4f#8g4f#8" 
DATA "g4e8d2o0b8o1d2" 
DATA "o1e8o0b8o1e8e8e4f#8g4f#8g4a8b2g8b2MLg16a16" 
DATA "MSb4b8b8a8g8a4a8a4f#8g4g8MLg8f#8" 
DATA "MSe8f#4f#8f#8g8a8b4.a4.g4.f#4.o0b8o1e8e8e4d8e2."