Консультация № 175922
08.01.2010, 12:43
33.95 руб.
0 1 1
Здравствуйте уважаемые эксперты! Помогите пожалуйста с некоторыми вопросами по программированию в QBasic 4.5

1. Пишу "игру в спички", а с графикой в BASIC как-то не приходилось работать, и вот нужно рисовать спички. Кое-что в интернете по рисованию в BASIC нашёл, можно нарисовать прямую(line), а сверху маленький круг (circle), но во первых я не знаю как закрасить тот же круг с помощью paint и как сделать прямую потолще(или нарисовать тонкий прямоугольник, но опять же не знаю как закрасить)... Если можно, с примером пожалуйста.
2. Как заставить программу в QBasic выполнять определённые действия при нажатии кнопок L-Ctrl или R-Ctrl. Случайно не с помощью расширенных кодов ASCII или здесь проще?
3. Приведите пожалуйста аналог функции ReadKey для QBasic.

С Рождеством. Надеюсь на помощь, спасибо

Обсуждение

Неизвестный
08.01.2010, 13:48
общий
это ответ
Здравствуйте, Мироненко Николай Николаевич.
1. Используйте LINE [ [STEP (x1!,y1!)]-[STEP (x2!,y2!) [,[цвет%] [,[В | BP] [,стиль%]]]
В Рисует прямоугольник вместо линии.
BP Рисует заполненный прямоугольник.
стиль 16-битовое значение, биты которого устанавливают будут
ли рисоваться точки растра. Используется для изображения
прерывистых и пунктирных линий.

Пример: кпасный прямоуголник
SCREEN 9
LINE (110,70)-(190,120), 4 ,BF

С кругом тоже самое, значение цвета идёт после радиуса

2. Использовать оператор KEY n%, CHR$(флаг_клавиатуры%)+CHR$(скан_код%).
В Вашем случае: для L-Ctrl
KEY 15, CHR$(&H4)+CHR$(&H26)
ON KEY(15) GOSUB ...имя подпрограммы...

3. INKEY$ - считывает символ с клавиатуры
INKEY$ возвращает нулевую строку символов, если нет символа для возврата.
Для стандартных клавиш INKEY$ возвращает 1-байтовую строку символов, содержащую считанный символ.
Для расширенных клавиш INKEY$ возвращает 2-байтовую строку символов, состоящую из символа нуля <ASCII 0> и скан-кода клавиатуры.

В приложении пример

Приложение:
CONST ESC = 27
KEY 15, CHR$(&H4)+CHR$(&H1F)
ON KEY(15) GOSUB PauseHandler
KEY(15) ON
WHILE INKEY$ <> CHR$(ESC)
PRINT ("Нажмите Esc для останова, Ctrl+S для паузы")
PRINT
WEND
END

PauseHandler:
SLEEP 1
RETURN
5
Спасибо Вам большое за ответ :))
Форма ответа