2015-03-03 2 views
1

Я новичок в QBasic и кодировании вообще, и я делаю гадать игру, которая просто не сработает. Я должен сделать гадательную игру, которая не использует операторы GOTO или Do, и дает пользователю 5 шансов. Вот код:Я новичок в QBasic и кодировании вообще, и я делаю гадательную игру, которая просто не работает

chances%=1 
dim guess as integer 
dim answer as string 
randomize timer 
rndnum=INT(RND*100+1) 

'makinng a title 
color 5 
locate 12,32 
print "welcome to My guessing game." 
Print "think of a number between 1 and 100." 

color 12 
Input "enter you guess: ",guess 
while chances%<4 
if guess >rndnum then 
    print "wrong, too high" 
elseif guess <rndnum then 
    print "wrong, too low" 
elseif guess=rndnum then 
print "your guessed the number!" 
end if 
wend 
chances%=chances%+1 

color 14 
Print "you took "; chances%;"to guess the number" 

color 3 
Input would you like to play again (yes/no)?", answer 
wend 

if answer = "yes" then 
? 

else 
    print "have a good day" 
end if 
end 

ответ

3

Вы задаёте один раз, то есть замкнутый цикл, который проверяет ответ, пока попытки не больше четырех, но попытки не всегда увеличиваем, поскольку команда Венд говорит ему начать цикл снова, не задавая вопрос снова или увеличивая счетчик вообще. Это то, что называется «бесконечным циклом», потому что условия внутри цикла не будут меняться. Я оставлю это на этом и посмотрю, сможете ли вы выяснить, как исправить обе эти проблемы. Обратите внимание: фиксирование только одного из них не остановит его на «бесконечном цикле», которое вы должны решить.

1

Ваша догадка должна быть внутри цикла while, а когда правильный ответ задан, шансы% должны быть равны 4, иначе вы получите вечный цикл. Также необходимо увеличить шансы% непосредственно после первой догадки. См. Слегка измененный код. Также см догадок и изменить свою линию говоря вы взяли х догадаться шансы% до догадывается

chances%=0 
while chances% < 4 
    Input "enter your guess: ",guess 
    chances% = chances% + 1 
    if guess > rndnum then 
     print "wrong, too high" 
    elseif guess < rndnum then 
     print "wrong, too low" 
    elseif guess = rndnum then 
     print "your guessed the number!" 
     guesses = Chances% 
     chances% = 4 
    end if 
wend 
1

Вы можете использовать WHILE...WEND запустить цикл, пока шансы не станет 0.Here, что я имею в виду:

....(rest of code) 
chances = 5 
WHILE chances > 0 
    .... 
    if guess > rndnum then 
     print "wrong, too high" 
     chances = chances - 1 
    elseif guess < rndnum then 
     print "wrong, too low" 
     chances = chances -1 
    .... 
WEND 
0

, если вы все еще возникают проблемы, я обнаружил, что здесь:

Input would you like to play again (yes/no)?", answer 

...

if answer = "yes" 

...

вы должны изменить ответ ответить $, потому что вы не можете сохранить строку в числовое значение.

0

Этот надрез демонстрирует ряд угадайку в Qb64:

REM guessing game. 
Tries = 5 
DO 
    PRINT "Guess a number between 1 and 100 in"; Tries; "guesses." 
    Number = INT(RND * 100 + 1) 
    Count = 1 
    DO 
     PRINT "Enter guess number"; Count; " "; 
     INPUT Guess 
     IF Guess = Number THEN 
      PRINT "Correct! You guessed it in"; Count; "tries." 
      EXIT DO 
     END IF 
     IF Guess > Number THEN 
      PRINT "Wrong. Too high." 
     ELSE 
      PRINT "Wrong. Too low." 
     END IF 
     Count = Count + 1 
     IF Count > Tries THEN 
      PRINT "The number was"; Number 
      PRINT "You didn't guess it in"; Tries; "tries." 
      EXIT DO 
     END IF 
    LOOP 
    DO 
     PRINT "Play again(yes/no)"; 
     INPUT Answer$ 
     IF LCASE$(Answer$) = "no" THEN 
      END 
     END IF 
     IF LCASE$(Answer$) = "yes" THEN 
      EXIT DO 
     END IF 
    LOOP 
LOOP 
END 
+0

из вас по-прежнему с помощью QB, то вы должны смотреть на Qb64 IDE на www.qb64.net – eoredson