gpt4 book ai didi

qbasic - Qbasic中如何让圆接触线并结束程序?

转载 作者:行者123 更新时间:2023-12-02 05:57:44 26 4
gpt4 key购买 nike

我正在尝试在 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

请帮忙

提前致谢......

最佳答案

好吧,让我们来看看下面呈现的游戏循环的峰值,并重新设计一下以提高可读性:

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"

您的胜利案例(如果 x=120 且 y=120 则转到 45)实际上并不发生在循环内,而是发生在循环外。

do loops ,只有 do 和循环语句之间的代码才会执行​​,除非“until”语句返回 true。简而言之:

do
'This code will execute
loop until k = "Q"
'This code will only execute after k=Q

将 win 案例放入 do 循环中,它应该可以工作。

如果我没记错的话,QBasic 允许在行的开头出现空格。我建议使用空白来直观地组织代码,以便您可以看到发生了什么。看看我是如何格式化你的主循环的。 do 循环控制的所有内容都位于 do 和循环语句的右侧。这样你就可以很容易地看到 do 循环正在做什么。由于类似的原因,if 语句中的所有内容都会得到相同的处理。

如果您养成了缩进代码的习惯,您就可以开始清楚地看到代码的逻辑。

编辑:看来您是编程新手。如果你喜欢它,我建议通过 codecademy 而不是 QBasic 来学习 Python。 QBasic 鼓励一些非常坏的习惯,例如 goto 语句。

关于qbasic - Qbasic中如何让圆接触线并结束程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21593471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com