QBasic/文本输出
以下段落需要安装 QBasic 的计算机
首先,将以下程序中的所有内容(“PRINT "Hello World"”)写入文本编辑器或 QBasic IDE(集成开发环境)本身,并将其保存为“1HELLO.BAS”。接下来,在 QBasic 中打开该文件(如果您使用的是 QBasic IDE,则它已经打开),然后按 F5。您也可以使用 IDE 窗口顶部的菜单栏中的“运行”菜单。这将执行(运行)该程序。屏幕的左上角应出现“Hello World”字样。您刚刚执行了第一个 QBasic 程序。如果您再次按 F5,另一行文本“Hello World”将出现在屏幕的左上角,将第一行文本向下推到屏幕的第二行。您可以对本维基教科书中的其他示例程序遵循相同的步骤。
PRINT "Hello World"
PRINT 是 QBasic 的文本输出函数。它是我们将在本节中探索的命令。PRINT 是一个 QBasic 函数,它需要参数。我们刚刚运行的“Hello, World!”程序中的参数是“Hello, World!”。因此,PRINT 是函数,而“Hello, World!”是我们传递给函数的参数。
PRINT [屏幕上的文本]
注意:作为快捷方式,只需使用问号“?”代替命令“PRINT”。同样,您可以使用单引号“'”代替关键字 REM 来在代码中插入注释
PRINT "This line will be erased"
CLS
PRINT "Hello";
PRINT " World",
PRINT "Hello Jupiter"
PRINT "Good Bye",,"For";" Now"
PRINT 1,2,3,4,5
这就是程序输出应有的样子
Hello World Hello Jupiter
Good Bye For Now
1 2 3 4 5
2HELLO.BAS 的第一行将“This line will be erased.”输出到屏幕。但是,在第二行中,CLS 命令在清除屏幕后立即执行。因此,它只会闪烁一下。文本“Hello Jupiter”应与下面的 '2' 对齐。可以连续使用多个逗号。在此示例中,在“Good Bye”之后使用了两个逗号,将“For Now”移到两个制表符列上。“For Now”应与 '3' 对齐。
关于此主题的最后一句话是,多加练习。尝试在程序中使用逗号和分号。
CLS
hello$ = "Hello World"
number = 12
PRINT hello$, number
变量用于存储信息。它们就像容器。您可以将信息放入它们,并在稍后将其更改为其他内容。在这个第一个示例中,它们可能看起来没有那么有用,但在下一节(输入)中,它们将变得非常有用。
在本示例中,我们使用了两种类型的变量:字符串变量和数值变量。字符串变量存储一系列字符,例如单词。(字符是指字母、数字或符号。)在本例中,字符是字母。字符串变量以在变量名称末尾添加美元符号 ($) 来表示。本程序中的字符串变量是 hello$。您为 hello$ 指定的任何值都将在 PRINT 语句中显示。数值变量是 number。数值变量没有像字符串变量那样的特殊结尾。
CLS
LOCATE 14, 34 'position the left eye
PRINT "<=>" 'draw the left eye
LOCATE 14, 43 'position the right eye
PRINT "<=>" 'draw the right eye
LOCATE 16, 39 'position the nose
PRINT "o|o" 'draw the nose
LOCATE 18, 36 'position the mouth
PRINT "\_______/" 'draw the mouth
LOCATE 19, 42 'the bottom
PRINT "The Face by QBasic"
LOCATE 允许您为下一段文本输出定位光标。与读作 (X,Y) 的笛卡尔坐标相反,locate 语句是 LOCATE Y,X。在本例中,Y 是距离屏幕顶部的距离,而 X 是距离屏幕左侧的距离。LOCATE 不遵循标准坐标系的原因是,没有必要包含 X 部分;您可以使用格式 LOCATE Y,它只指定要开始的行。
LOCATE[行, 列]
LOCATE[行]
CLS
LOCATE 14, 34
COLOR 9
PRINT "<=>"
LOCATE 14, 43
PRINT "<=>"
COLOR 11
LOCATE 16, 39
PRINT "o|o"
COLOR 4
LOCATE 18, 36
PRINT "\_______/"
COLOR 20
LOCATE 19, 42
PRINT "U"
LOCATE 1, 1
COLOR 16, 1
PRINT "Hello World"
程序 5FACE.BAS 被分成许多部分,以便更易于阅读。这是一个良好的编程习惯的示例。每三个代码行都指定其面部部分的颜色、位置和形式。位置和颜色的顺序并不重要。新的语句 COLOR 允许您更改文本的颜色。更改后,所有输出将以新颜色显示,直到使用 COLOR 或 CLS 为止。
COLOR [前景色]
COLOR [前景色], [背景色]
颜色由数字指定,将在下一节中讨论。
共有 16 种颜色(在屏幕模式 0 中),编号从 0 到 15。
0 | 黑色 | 8 | 灰色 |
1 | 蓝色 | 9 | 浅蓝色 |
2 | 绿色 | 10 | 浅绿色 |
3 | 青色 | 11 | 浅青色 |
4 | 红色 | 12 | 浅红色 |
5 | 紫色 | 13 | 浅紫色 |
6 | 棕色/橙色 | 14 | 黄色(浅橙色) |
7 | 浅灰色(白色) | 15 | 白色(浅白色) |
如果您仔细观察此图表,您会发现有 8 种主要颜色(0 到 7),然后这些颜色重复,每种颜色都以更浅的色调显示。您可能还会注意到,这些颜色是二进制值的组合(其中蓝色=1,绿色=2,红色=4 等)。这使得记忆颜色方案变得容易得多。闪烁颜色也可以使用:在 16 处,颜色再次开始,闪烁黑色,一直延伸到 31(闪烁白色)。但是,闪烁选项仅适用于文本(前景色),不适用于背景。将 16 添加到您希望闪烁的颜色。例如:2+16=18 - 闪烁的绿色,4+16=20 - 闪烁的红色。
可以将闪烁的前景文本与强烈的背景交换,但此任务超出了本 QBasic 教材的范围,并且当 MS Windows 在窗口模式下显示控制台时可能无法正常工作。
在 VGA 兼容的显卡上,您可以检查和更改屏幕模式 0 中使用的字体。
OUT &H3CE, 5: OUT &H3CF, 0 'Clear even/odd mode OUT &H3CE, 6: OUT &H3CF, 4 'Map VGA mem A0000-BFFFF OUT &H3C4, 2: OUT &H3C5, 4 'Set bit plane 2 OUT &H3C4, 4: OUT &H3C5, 6 'Clear even/odd mode again
您现在可以使用 PEEK 和 POKE 来访问字符数据。它从绝对地址 &HA0000 开始,每个字符都是 32 个字节,每个字节都是 8 位的一行。每个字节的最高位对应于每行的最左侧像素。通常,只使用前 16 行或 8 行,具体取决于 WIDTH 设置。
完成后,务必将内存映射恢复到 QBasic 预期的状态
OUT &H3CE, 6: OUT &H3CF, 14 'Map VGA mem B8000-BFFFF
在本节中,我们了解了多种操纵文本输出的方法。所有方法都围绕 PRINT 语句。LOCATE 和 COLOR 修改了文本的显示位置和外观。我们使用 CLS 来清除屏幕,并简要介绍了将在后续章节中扩展的变量。