Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 07.02.2024
Сообщений: 6

Не работает тестовый курсор

31.03.2024, 20:07. Показов 746. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я хотел сделать модельку рабочего стола и курсор но проблема в том что курсор "*" не перемещается дальше чем значение x = 2 y = 2.

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
CLS
GOTO DESKTOP
DESKTOP:
CLS
Color 11, 1
CLS
LOCATE 25, 1: Color 11
LOCATE 25, 1: PRINT "MENU                                                                                "
DO
    x = 1
    y = 1
    k$ = INKEY$
    IF k$ = "s" THEN
        CLS
        x = x + 1
        CLS
    END IF
    IF k$ = "a" THEN
        CLS
        y = y - 1
        CLS
    END IF
    IF k$ = "d" THEN
        CLS
        y = y + 1
        CLS
    END IF
 
    IF k$ = "w" THEN
        CLS
        x = x - 1
        CLS
    END IF
    IF k$ = "x" THEN
        Color 4, 0
        CLS
        LOCATE 2, 1: Color 0, 4
        CLS
        LOCATE 1, 1: PRINT "MENU                                                                         "
    END IF
    IF k$ = "z" THEN
        CLS
        Color 0, 0
        END
    END IF
    IF x = 0 THEN
        x = x + 1
        CLS
    END IF
    IF y = 0 THEN
        y = y + 1
        CLS
    END IF
 
 
    CLS
    LOCATE x, y: PRINT "*"
 
 
LOOP
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2024, 20:07
Ответы с готовыми решениями:

Не работает Num Lock, курсор на нем, сам курсор неактивен
Помогите решить проблему, с ней не справляется наш программист (для раб.ПК). Не знаю, что делать и сидит сложа руки:sleep:. А я работаю с...

Не работает тестовый пример
Начал изучать CUDA и застопорился уже на примере, который сам сгенерировался при создании проекта: #include...

Не работает тестовый код в Pygame
Делал все точно по туториалу но код не работет.Просто не появляеться спрайт.Вот код: import pygame import random WIDTH = 500 ...

5
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
31.03.2024, 21:37
Ошибка на 10 и 11 строке.

P.S: Господи ну сколько можно... Почему не изучить азы? Не почитать справку, чужие исходники,
этот форум наконец... Зачем сразу прыгать в воду, не зная броду. Зачем писать код в блокноте,
когда есть нормальная IDE QuickBasic, которая умеет форматировать код, зачем для этой задачи
текстовый режим? Ну что за дичь...
0
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
01.04.2024, 15:41
Предполагается примерно такая программа:

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
DEFINT A-Z
' ставим начальную позицию курсора в центр экрана
x = 41: y = 13
' запоминаем положение курсора
oldx = x: oldy = y
' стираем экран
CLS
' цикл
DO
' стираем старое положение курсора
COLOR 7, 0: LOCATE oldy, oldx: PRINT " ";
' пишем что хотим
COLOR 11: LOCATE 25, 1: PRINT "MENU";
' ставим курсор в новое положение
COLOR 14, 0: LOCATE y, x: PRINT "*";
' ставим цвет в какой хотим по умолчанию
COLOR 7, 0
' опрашиваем клавишу (см хэлп почему не inkey$)
k$ = INPUT$(1)
' запоминаем положение курсора
oldx = x: oldy = y
' если нажата ESC или z то выход
IF k$ = CHR$(27) OR k$ = "z" THEN END
' вычисляем новые x y
x = x + (k$ = "a") - (k$ = "d")
y = y + (k$ = "w") - (k$ = "s")
' проверяем выход за границы экрана
IF x < 1 THEN x = 1
IF y < 1 THEN y = 1
IF x > 80 THEN x = 80
IF y > 25 THEN y = 25
LOOP
END
Добавлено через 2 часа 26 минут
Улучшенная версия - "*" движется по экрану, не стирая текст
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
DEFINT A-Z
save0 = 0: save1 = 1
' ставим начальную позицию курсора в центр экрана
x = 41: y = 13
' запоминаем положение курсора
oldx = x: oldy = y
' стираем экран
CLS
' пишем что хотим
COLOR 11: LOCATE 25, 1: PRINT "MENU";
t$ = "Hello, world!"
FOR i = 1 TO LEN(t$)
    COLOR 10 + (i MOD 3): LOCATE 12, 35 + i
    PRINT MID$(t$, i, 1);
NEXT i
' ставим цвет в какой хотим по умолчанию
COLOR 7, 0
' Запоминаем символ в позиции
save0 = SCREEN(oldy, oldx, 0)
' Запоминаем атрибут цвета в позиции
save1 = SCREEN(oldy, oldx, 1)
' цикл
DO
' стираем старое положение курсора
COLOR save1 MOD 16, INT(save1 / 16): LOCATE oldy, oldx: PRINT CHR$(save0);
' ставим курсор в новое положение
save0 = SCREEN(y, x, 0)
save1 = SCREEN(y, x, 1)
COLOR 14, 0: LOCATE y, x: PRINT "*";
' ставим цвет в какой хотим по умолчанию
COLOR 7, 0
' опрашиваем клавишу (см хэлп почему не inkey$)
k$ = INPUT$(1)
' запоминаем положение курсора
oldx = x: oldy = y
' если нажата ESC или z то выход
IF k$ = CHR$(27) OR k$ = "z" THEN END
' вычисляем новые x y
x = x + (k$ = "a") - (k$ = "d")
y = y + (k$ = "w") - (k$ = "s")
' проверяем выход за границы экрана
IF x < 1 THEN x = 1
IF y < 1 THEN y = 1
IF x > 80 THEN x = 80
IF y > 25 THEN y = 25
LOOP
END
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.04.2024, 16:13
Цитата Сообщение от qbfan Посмотреть сообщение
k$ = INPUT$(1)
Это простое и креативное решение для устранения мерцания, но как быть с расширенным кодом клавиши?
Например если потребуются стрелки. Насколько понимаю, после этой функции буфер клавиатуры уже пуст.
0
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
01.04.2024, 16:25
Я использую функцию xinkey. При этом стрелкам и функц. клавишам
соответствуют коды от 256 до 511. Иногда я в эту функцию включаю выход из программы по ESC,
чтобы программа всегда имела выход.

QBasic/QuickBASIC
1
2
3
4
5
FUNCTION xinkey
DO: q$ = INKEY$: LOOP WHILE q$ = ""
IF LEN(q$) = 1 THEN d = ASC(q$) ELSE d = 256 + ASC(MID$(q$, 2, 1))
xinkey = d
END FUNCTION
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.04.2024, 16:48
Цитата Сообщение от qbfan Посмотреть сообщение
Я использую функцию xinkey.
Примерно так и предполагал замену, через INKEY$.

Я бы его прогу переписал на флаг перерисовки + страницы памяти(двойной буфер).
Сильного смысла в ожидании под DOS нет, он имеет смысл только под многозадачными
системами, где требуется высвобождать ресурсы ЦП.

Да и под виндой на самом деле эта схема работает, ставится тот же SLEEP, перерисовка + блит по флагу,
либо постоянно, если вещь подвижная. А во всякие FreeSync-и слабо верю, это всё диаметрально
усложняет процесс создания ПО. Отклик по сути не сильно то и меняется, ведь по большей части он
зависит от ввода. Те же 200 кадров мышки - это, так скажем, базовый стандарт, ощутимый глазом,
т.е. меньше - будет заметно, больше - смысла нет. А вывод тут уж как железо сможет.

Самое забавное что суть VSync-а была искажена теми же NVidia, после того как они "внедрили"
пререндеринг без возможности его отключения. А до этого момента оно работало довольно неплохо.

Учитывая прогресс железа - сейчас оно бы работало превосходно. Поэтому например любители подвижных
игр(того же CS) выключают любые сунки и ставят скорость рендеринга кратной частоте обновления моника.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2024, 16:48
Помогаю со студенческими работами здесь

Тестовый стенд запускается при включении блока питания и не работает
Друзья, выручайте, не могу понять в чём дело. Жму кнопку на блоке питания и спустя секунды 2-3 всё начинает крутиться и пыхтеть, но...

Не работает курсор
declare nameu OFFICES.OFFICE%TYPE; pl_name OFFICES.CITY%TYPE; pol_name OFFICES.OFFICE%TYPE; CURSOR lab IS ...

Курсор не работает
Вложенный курсор cGlava не работает почему-то. Т.е. запрос в данном курсоре выдает непустое значение, а выводятся почему-то пустые...

Не работает курсор мыши
После установки Windows 11 обнаружил, что почему то не был установлен Microsoft Edge без которого никак, после чего через восстановление...

Курсор работает неправильно
Оптическая мышь, после падения перестал двигаться курсор, разобрал - собрал, курсор стал двигаться, но как не двигай - курсор шевелится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru