2016-04-27 1 views
1

Я начал изучать Qbasic. Для начинающих я начал с простой текстовой игры. Гора расположена «на север», а когда вы набираете «север», консоль должна печатать «Гора» после нажатия . Введите. Однако, когда набирается «север» и Нажимаем, код не выполняется. Это просто ошибка новичка? Должен ли я нажать что-то отличное от Введите?Вход не работает в Qbasic

Вот код:

CLS 
PRINT "There is a mountain to the North" 
PRINT "There is a cactus to the East" 
PRINT "There is a river to the South" 
PRINT "There is a shack to the East" 
PRINT " " 
INPUT "Type a direction:", direction$ 
IF direction$ = "north" THEN PRINT "Mountain" 

И выход из repl.it:

QBasic (qb.js) 
Copyright (c) 2010 Steve Hanov 
: 
There is a mountain to the North 
There is a cactus to the East 
There is a river to the South 
There is a shack to the East 
: 
Type a direction: north 
: 
+0

IF ЛЕВЫЙ $ (направление $, 5) = "север" THEN ПЕЧАТЬ «Гора» – eoredson

ответ

4

Ваш код работает нормально при запуске QBasic в DOSBox, но, видимо, библиотека QB JavaScript используется repl.it не работает так, как это делает QBasic. Когда вы нажимаете , введите, вход должен только закончиться, и последовательность конца строки не должна быть сохранена (или должна быть удалена автоматически). К сожалению, окончательная строка не была удалена библиотекой JavaScript. Результатом является то, что следующие работы, когда он не будет работать в QBasic:

IF direction$ = "north" + CHR$(10) THEN PRINT "Mountain" 

На самом деле, я добавил простой вариант, чтобы проверить интерпретатор и получил ошибку синтаксического анализа, прежде чем я понял, проблема с CHR$(10):

IF direction$ = "north" THEN PRINT "Mountain" ELSE PRINT "Not Mountain" 

на основе этой проблемы, я предлагаю продолжить вашу программу, используя реальную вещь (в DOS эмуляторе как DOSBox) или даже что-то вроде FreeBASIC или QB64, оба из которых основаны на QBasic и сохранить тот же синтаксис, хотя Я думаю, что QB64, возможно, немного совместим с оригиналом.

+1

Я вижу. Благодаря! (Спасибо за редактирование тоже) – SteamPanda

1

Вы также можете сдирать трейлинг ASCII символы:

INPUT X$ 
IF INSTR(X$, CHR$(10)) THEN 
    X$ = LEFT$(X$, INSTR(X$, CHR$(10)) - 1) ' trim string 
END IF 
X$ = LCASE$(X$) ' and force case 

Таким образом, X $ будет содержать только 'север' ..

 Смежные вопросы

  • Нет связанных вопросов^_^