我正在尝试在QBASIC中制作迷宫,但是当指针接触迷宫线时,程序就不会结束。我希望当圆圈(指针)接触迷宫的末端时,程序应该到达结尾。程序是: -
cls
screen 12
DIM p AS STRING
DIM A1 AS STRING
15 print"What do you want to do?"
print"A:Draw AN IMAGE"," B:PLAY A MAZE GAME";
PRINT
PRINT"TYPE 'A' OR 'B'IN CAPITAL FORM"
GOTO 102
99 print "rules to play the maze game:"
print
print "1 use 'W' to move the ball foward"
print "2 use 'S' to move the ball backward"
print "3 use 'A' to move the ball leftward"
print "4 use 'D' to move the ball rightward"
INPUT A1
CLS
goto 10
102 INPUT P
if p="A"then
cls
goto 20
elseif p="B" then
cls
goto 99
elseif p<>"A" AND p<>"B" then
print "Choose between A and B"
GOTO 70
end if
10 pset(120,120)
draw "r100"
pset (120,140)
draw"r80"
pset (200,140)
draw "d100"
pset (220,120)
draw"d140"
pset (220,260)
draw "l90"
pset (200,240)
draw "l50"
pset (130,260)
draw"u50l120u90r60u40l50u60r300d90l35d260l60d30l80
h20l20h20u30r40u5l70d60f40r250u90h40u45r40u40r50u130h40r225d65l50d60l15
d130l40d50l20d15r45d40r20u45r10u10r10u90r100"
pset(150,240)
draw"u50l120u50r60u80l50u20r260d50l35d260l60d30l40h20l20h10r
40u50l120d98f50r290u115h40u20r40u40r50u160h10r140d20l50d60l15
d130h40d90l20d60r45d45r70u45r10u10r10u90r75"
20 dim k as string
x = 110
y = 105
do
k = ucase$(inkey$)
if k="W"then
y = y - 2
elseif k= "S" then
y = y + 8
elseif k="A"then
x = x - 8
elseif k="D" then
x = x + 5
end if
circle (x,y),7,10
loop until k ="Q"
GOTO 45
70 CLS
GOTO 15
if x=120 and y=120 then goto 45
40 cls
45 END
PLS帮助
预先感谢....
好吧,让我们在下面介绍的游戏循环中达到顶峰,并对可读性进行了重新改革:
do
k = ucase$(inkey$)
if k="W"then
y = y - 2
elseif k= "S" then
y = y + 8
elseif k="A"then
x = x - 8
elseif k="D" then
x = x + 5
end if
circle (x,y),7,10
loop until k ="Q"
您的Win情况(如果X = 120和Y = 120,则GoTo 45)实际上并未发生在循环中,而是外部。
使用DO循环,除非"直到"语句返回true,否则只有DO和LOOP语句之间的代码将执行。单词:
do
'This code will execute
loop until k = "Q"
'This code will only execute after k=Q
将胜利案件放在do循环中,它应该起作用。
如果我没记错的话,QBASIC允许在行开头的空格。我建议在视觉上使用Whitespace来组织您的代码,以便您看到发生了什么。看看我如何格式化您的主循环。DO循环控件的所有内容都在DO和LOOP语句的右边。这样,您可以轻松地看到DO循环在做什么。IF语句中的所有内容都出于类似的原因得到相同的处理。
如果您习惯了缩进代码的习惯,则可以开始查看该代码的逻辑布置。
编辑:看来您是对编程的新手。如果您喜欢它,我建议通过编码魔术而不是QBASIC学习Python。QBASIC鼓励一些非常糟糕的习惯,例如Goto陈述。