Простейший графический секундомер - QBasic
Формулировка задачи:
Здравствуйте!
Вопрос, наверное, жутко ламерский, но всё же.
Нужно написать простейший аналоговый секундомер, который должен пройти вокруг своей оси и остановиться (а может и не останавливаться, это не важно).
На форуме нашёл хороший Стрелка секундомера не движется , но хотелось бы более простой.
Поэтому вопрос: можно ли обойтись в таймере без использования синуса и косинуса, и если да, то как?
Я пробовал, но получилось беда бедойВ итоге стрелка где-то на 25 секундах настолько удлиняется, что улетает за сам циферблат. Я понимаю, что я определенно что-то делаю не так, но подскажите, пожалуйста, в какую сторону мне нужно копать.
Заранее спасибо за ответы нубу
Решение задачи: «Простейший графический секундомер»
textual
Листинг программы
CLS DIM x AS INTEGER DIM y AS INTEGER CONST a = 24 SCREEN 11 WINDOW (-60, 45)-(60, -45) LINE (-28, 28)-(28, -28), , B x = -3 y = 24 dx = 3 dy = 3 PRINT "Press any key" DO IF x < 24 AND y = 24 THEN x = x + dx IF x = 24 THEN 100 LINE (0, 0)-(x, a) SLEEP 1 LINE (0, 0)-(x, a), 0 ELSEIF y > -24 AND x = 24 THEN x = 24 y = y - dy IF y = -24 THEN 100 LINE (0, 0)-(a, y) SLEEP 1 LINE (0, 0)-(a, y), 0 ELSEIF x > -24 AND y = -24 THEN y = -24 x = x - dx IF x = -24 THEN 100 LINE (0, 0)-(x, -a) SLEEP 1 LINE (0, 0)-(x, -a), 0 ELSEIF y < 24 AND x = -24 THEN x = -24 y = y + dy IF y = 24 THEN 100 LINE (0, 0)-(-a, y) SLEEP 1 LINE (0, 0)-(-a, y), 0 END IF 100 LOOP UNTIL INKEY$ <> "" END
Объяснение кода листинга программы
- Объявлены две переменные типа Integer: x и y.
- Задана константа a равная 24.
- Установлен экран 11 и задано окно (-60, 45)-(60, -45).
- Нарисованы две линии: вертикальная линия от (-28, 28) до (-28, -28) и горизонтальная линия от (0, 0) до (24, a).
- Установлен начальный размер переменных dx и dy равный 3.
- Начальное значение переменной x установлено равным -3, а значение переменной y установлено равным 24.
- В цикле DO выполняется условие IF. Если x меньше 24 и y равно 24, то значение x увеличивается на dx, и выполняется условие IF. Если x равно 24, то на экране рисуется горизонтальная линия от (0, 0) до (x, a). Затем программа
спит
1 секунду, и линия перерисовывается без изменений. - Если y больше -24 и x равно 24, то значение x устанавливается равным 24, а значение y уменьшается на dy. Если y равно -24, то на экране рисуется вертикальная линия от (0, 0) до (a, y). Затем программа
спит
1 секунду, и линия перерисовывается без изменений. - Если x больше -24 и y равно -24, то значение y устанавливается равным -24, а значение x уменьшается на dx. Если x равно -24, то на экране рисуется горизонтальная линия от (-a, 0) до (-x, y). Затем программа
спит
1 секунду, и линия перерисовывается без изменений. - Если y меньше 24 и x равно -24, то значение x устанавливается равным -24, а значение y увеличивается на dy. Если y равно 24, то на экране рисуется вертикальная линия от (-a, 0) до (-x, y). Затем программа
спит
1 секунду, и линия перерисовывается без изменений. - Если ни одно из условий не выполняется, то программа продолжает выполнение цикла DO.
- Если значение переменной INKEY$ не равно пустой строке, то программа выходит из цикла DO.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д