📄 qb
字号:
第一天
我们打算制作的 RPG 格局十分简单:你身处一个迷宫之中,必须设法找到出口。为
了避免过程过於枯燥,迷宫内同时也有其他具攻击性的(邪恶)怪物。 设法击败它
们,以取得可资运用的金币。 另外,食物、武器与其他有用的装备也会出现在某些
房间内。而其中只有一个房间有出口;但打开它则需要一百个金币。
让我们先从规画能让玩者行进其间的迷宫开始。(随时按下 'q' 键即可退出游戏)
请输入以下的程式片段,并试著执行它:
CLS
row = 5
column = 5
moveErr$ = "You cannot move in that direction!"
LOCATE 14,1
PRINT "Commands: n - north"
PRINT " s - south"
PRINT " e - east"
PRINT " w - west"
PRINT
PRINT " q - quit"
DO
LOCATE 1, 1
PRINT "Your position:"; row; column
LOCATE 8, 1
INPUT "What now"; reply$
LOCATE 10, 1
PRINT SPACE$(79)
SELECT CASE reply$
CASE IS = "n"
IF row = 1 THEN
LOCATE 10, 1
PRINT moveErr$
ELSE
row = row - 1
LOCATE 10, 1
PRINT "You go north."
END IF
CASE IS = "s"
IF row = 10 THEN
LOCATE 10, 1
PRINT moveErr$
ELSE
row = row + 1
LOCATE 10, 1
PRINT "You go south."
END IF
CASE IS = "w"
IF column = 1 THEN
LOCATE 10, 1
PRINT moveErr$
ELSE
column = column - 1
LOCATE 10, 1
PRINT "You go west."
END IF
CASE IS = "e"
IF column = 10 THEN
LOCATE 10, 1
SPACE$ 指令则可以产生空白字元;SPACE$(2) 其实就等於 " "。程式中使用这个指
令来清除上一次等待使用者输入时,萤幕上多馀的错误讯息。
"INT(RND * 10) + 1" 则是用来制作范围从 1 到 10 之间的随机乱数。整个式子究
竟是如何动起来的?首先, INT 会传回数值的整数部份,例如 INT(1.9) 会传回 1
。 而 RND 函数则会产生 0 到 1 之间的数值, 因此 RND*10 会得到一个 0 到 10
之间的数值。因为 INT(0.99) 的传回值为 0,INT(9.99) 的传回值为 9,所以我们
需要额外加 1,以符合我们的需求。
现在,让我们替这个迷宫增加一个出口:
CLS
row = 5
column = 5
moveErr$ = "You cannot move in that direction!"
exitRow = INT(RND * 10) + 1 :REM <--- new
exitColumn = INT(RND * 10) + 1 :REM |
gold = 0 :REM _|
LOCATE 14, 1
PRINT "Commands: n - north"
PRINT " s - south"
PRINT " e - east"
PRINT " w - west"
PRINT " x - use exit" :REM <--- new
PRINT
PRINT " q - quit"
DO
LOCATE 1, 1
PRINT "Your position:"; row; column
:REM <--- new
IF ((row = exitRow) AND (column = exitColumn)) THEN
LOCATE 2, 1 :REM |
PRINT "You are at the exit!" :REM |
ELSE :REM |
LOCATE 2, 1 :REM |
PRINT SPACE$(79) :REM |
END IF :REM _|
LOCATE 8, 1
INPUT "What now"; reply$
LOCATE 10, 1
PRINT SPACE$(79)
SELECT CASE reply$
CASE IS = "n"
IF row = 1 THEN
LOCATE 10, 1
PRINT moveErr$
ELSE
row = row - 1
LOCATE 10, 1
PRINT "You go north."
END IF
CASE IS = "s"
IF row = 10 THEN
LOCATE 10, 1
PRINT moveErr$
ELSE
row = row + 1
LOCATE 10, 1
PRINT "You go south."
END IF
CASE IS = "w"
IF column = 1 THEN
LOCATE 10, 1
PRINT moveErr$
ELSE
column = column - 1
LOCATE 10, 1
PRINT "You go west."
END IF
CASE IS = "e"
IF column = 10 THEN
LOCATE 10, 1
PRINT moveErr$
ELSE
column = column + 1
LOCATE 10, 1
PRINT "You go east."
END IF
CASE IS = "x" :REM <--- new
IF ((row = exitRow) AND (column = exitColumn)) THEN
:REM |
IF gold < 100 THEN
LOCATE 10, 1 :REM |
PRINT "You dont have enough gold!" :REM |
ELSE :REM |
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -