Простейший графический секундомер - 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

Объяснение кода листинга программы

  1. Объявлены две переменные типа Integer: x и y.
  2. Задана константа a равная 24.
  3. Установлен экран 11 и задано окно (-60, 45)-(60, -45).
  4. Нарисованы две линии: вертикальная линия от (-28, 28) до (-28, -28) и горизонтальная линия от (0, 0) до (24, a).
  5. Установлен начальный размер переменных dx и dy равный 3.
  6. Начальное значение переменной x установлено равным -3, а значение переменной y установлено равным 24.
  7. В цикле DO выполняется условие IF. Если x меньше 24 и y равно 24, то значение x увеличивается на dx, и выполняется условие IF. Если x равно 24, то на экране рисуется горизонтальная линия от (0, 0) до (x, a). Затем программа спит 1 секунду, и линия перерисовывается без изменений.
  8. Если y больше -24 и x равно 24, то значение x устанавливается равным 24, а значение y уменьшается на dy. Если y равно -24, то на экране рисуется вертикальная линия от (0, 0) до (a, y). Затем программа спит 1 секунду, и линия перерисовывается без изменений.
  9. Если x больше -24 и y равно -24, то значение y устанавливается равным -24, а значение x уменьшается на dx. Если x равно -24, то на экране рисуется горизонтальная линия от (-a, 0) до (-x, y). Затем программа спит 1 секунду, и линия перерисовывается без изменений.
  10. Если y меньше 24 и x равно -24, то значение x устанавливается равным -24, а значение y увеличивается на dy. Если y равно 24, то на экране рисуется вертикальная линия от (-a, 0) до (-x, y). Затем программа спит 1 секунду, и линия перерисовывается без изменений.
  11. Если ни одно из условий не выполняется, то программа продолжает выполнение цикла DO.
  12. Если значение переменной INKEY$ не равно пустой строке, то программа выходит из цикла DO.
  13. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы