跳轉至內容

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 來清除螢幕,並簡要介紹了將在後續章節中擴充套件的變數。

華夏公益教科書