跳转至内容

QBasic/文本输出

来自维基教科书,开放的书籍,开放的世界

您的第一个 QBasic 程序:1HELLO.BAS

[编辑 | 编辑源代码]

以下段落需要安装 QBasic 的计算机

首先,将以下程序中的所有内容(“PRINT "Hello World"”)写入文本编辑器或 QBasic IDE(集成开发环境)本身,并将其保存为“1HELLO.BAS”。接下来,在 QBasic 中打开该文件(如果您使用的是 QBasic IDE,则它已经打开),然后按 F5。您也可以使用 IDE 窗口顶部的菜单栏中的“运行”菜单。这将执行(运行)该程序。屏幕的左上角应出现“Hello World”字样。您刚刚执行了第一个 QBasic 程序。如果您再次按 F5,另一行文本“Hello World”将出现在屏幕的左上角,将第一行文本向下推到屏幕的第二行。您可以对本维基教科书中的其他示例程序遵循相同的步骤。

1HELLO.BAS

[编辑 | 编辑源代码]
 PRINT "Hello World"

PRINT 是 QBasic 的文本输出函数。它是我们将在本节中探索的命令。PRINT 是一个 QBasic 函数,它需要参数。我们刚刚运行的“Hello, World!”程序中的参数是“Hello, World!”。因此,PRINT 是函数,而“Hello, World!”是我们传递给函数的参数。

PRINT [屏幕上的文本]

注意:作为快捷方式,只需使用问号“?”代替命令“PRINT”。同样,您可以使用单引号“'”代替关键字 REM 来在代码中插入注释

2HELLO.BAS

[编辑 | 编辑源代码]
 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

PRINT、逗号、分号、制表符 (n) 和 CLS

[编辑 | 编辑源代码]

这就是程序输出应有的样子

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' 对齐。

关于此主题的最后一句话是,多加练习。尝试在程序中使用逗号和分号。

3HELLO.BAS

[编辑 | 编辑源代码]
 CLS
 hello$ = "Hello World"
 number = 12
 PRINT hello$, number

变量用于存储信息。它们就像容器。您可以将信息放入它们,并在稍后将其更改为其他内容。在这个第一个示例中,它们可能看起来没有那么有用,但在下一节(输入)中,它们将变得非常有用。

在本示例中,我们使用了两种类型的变量:字符串变量和数值变量。字符串变量存储一系列字符,例如单词。(字符是指字母、数字或符号。)在本例中,字符是字母。字符串变量以在变量名称末尾添加美元符号 ($) 来表示。本程序中的字符串变量是 hello$。您为 hello$ 指定的任何值都将在 PRINT 语句中显示。数值变量是 number。数值变量没有像字符串变量那样的特殊结尾。

4FACE.BAS

[编辑 | 编辑源代码]
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 语句

[编辑 | 编辑源代码]

LOCATE 允许您为下一段文本输出定位光标。与读作 (X,Y) 的笛卡尔坐标相反,locate 语句是 LOCATE Y,X。在本例中,Y 是距离屏幕顶部的距离,而 X 是距离屏幕左侧的距离。LOCATE 不遵循标准坐标系的原因是,没有必要包含 X 部分;您可以使用格式 LOCATE Y,它只指定要开始的行。

LOCATE[行, 列]
LOCATE[行]

5FACE.BAS

[编辑 | 编辑源代码]
 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"

COLOR 语句

[编辑 | 编辑源代码]

程序 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 来清除屏幕,并简要介绍了将在后续章节中扩展的变量。

华夏公益教科书