Простейший графический секундомер - QBasic
Формулировка задачи:
Здравствуйте!
Вопрос, наверное, жутко ламерский, но всё же.
Нужно написать простейший аналоговый секундомер, который должен пройти вокруг своей оси и остановиться (а может и не останавливаться, это не важно).
На форуме нашёл хороший Стрелка секундомера не движется , но хотелось бы более простой.
В итоге стрелка где-то на 25 секундах настолько удлиняется, что улетает за сам циферблат. Я понимаю, что я определенно что-то делаю не так, но подскажите, пожалуйста, в какую сторону мне нужно копать.
Заранее спасибо за ответы нубу
Поэтому вопрос: можно ли обойтись в таймере без использования синуса и косинуса, и если да, то как?
Я пробовал, но получилось беда бедой
Листинг программы
- X1 = 320
- Y1 = 240
- X2 = 240
- Y2 = 180
- DX = 1
- DY = 1
- FOR i = 0 TO 360
- LINE (X1, Y1)-(X2,Y2), 0
- X2 = Y2 + DY
- X2 = X2 + DX
- LINE (X1, Y1)-(X2, Y2), 6
- SLEEP 1
- NEXT i
Решение задачи: «Простейший графический секундомер»
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.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д