Я новичок в QBasic и программировании в целом, и я делаю игру в угадайку, которая просто не работает.

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

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 

person i_cant_even_    schedule 03.03.2015    source источник


Ответы (5)


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

person Bill Hileman    schedule 03.03.2015

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

....(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
person uvrichest    schedule 08.06.2017

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

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
person Theunis    schedule 12.09.2015

если у вас все еще есть проблемы, я нашел это здесь:

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

...

if answer = "yes"

...

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

person Mark    schedule 18.07.2017

Этот фрагмент демонстрирует игру в угадывание чисел в 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
person eoredson    schedule 12.09.2017
comment
Если вы все еще используете QB, вам следует взглянуть на QB64 IDE на сайте www.qb64.net. - person eoredson; 12.09.2017