首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QuickBasic: INKEY$的更好选择

QuickBasic: INKEY$的更好选择
EN

Stack Overflow用户
提问于 2012-10-30 06:57:41
回答 2查看 521关注 0票数 1

我的代码看起来像这样:

代码语言:javascript
复制
            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."

这看起来相当乏味。有没有一种方法可以重写得更简洁?我相信代码试图为用户提供一种跳过音乐的方法。

EN

回答 2

Stack Overflow用户

发布于 2012-11-06 00:29:42

哇,2012年的QBasic编程吧?那会是一个什么样的项目呢?

无论如何,我会将音乐字符串放入一个数组中,并在检查INKEY$时遍历该数组。我没有安装QB,所以我不确定这是否可以工作,但如下所示:

代码语言:javascript
复制
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."

顺便说一句,你可以把字符串拆分成更短的部分,这样它就可以更频繁地检查用户输入。

票数 2
EN

Stack Overflow用户

发布于 2016-12-18 12:59:07

这段代码在Qbasic中循环播放来自数据的音乐:

代码语言:javascript
复制
' 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."
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13130866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档