Простейший графический секундомер - QBasic

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Вопрос, наверное, жутко ламерский, но всё же. Нужно написать простейший аналоговый секундомер, который должен пройти вокруг своей оси и остановиться (а может и не останавливаться, это не важно). На форуме нашёл хороший Стрелка секундомера не движется , но хотелось бы более простой.

Поэтому вопрос: можно ли обойтись в таймере без использования синуса и косинуса, и если да, то как?

Я пробовал, но получилось беда бедой
Листинг программы
  1. X1 = 320
  2. Y1 = 240
  3. X2 = 240
  4. Y2 = 180
  5. DX = 1
  6. DY = 1
  7. FOR i = 0 TO 360
  8. LINE (X1, Y1)-(X2,Y2), 0
  9. X2 = Y2 + DY
  10. X2 = X2 + DX
  11. LINE (X1, Y1)-(X2, Y2), 6
  12. SLEEP 1
  13. NEXT i
В итоге стрелка где-то на 25 секундах настолько удлиняется, что улетает за сам циферблат. Я понимаю, что я определенно что-то делаю не так, но подскажите, пожалуйста, в какую сторону мне нужно копать. Заранее спасибо за ответы нубу

Решение задачи: «Простейший графический секундомер»

textual
Листинг программы
  1. CLS
  2. DIM x AS INTEGER
  3. DIM y AS INTEGER
  4. CONST a = 24
  5. SCREEN 11
  6. WINDOW (-60, 45)-(60, -45)
  7.  
  8. LINE (-28, 28)-(28, -28), , B
  9. x = -3
  10. y = 24
  11. dx = 3
  12. dy = 3
  13. PRINT "Press any key"
  14.  
  15. DO
  16.    IF x < 24 AND y = 24 THEN
  17.       x = x + dx
  18.       IF x = 24 THEN 100
  19.       LINE (0, 0)-(x, a)
  20.       SLEEP 1
  21.       LINE (0, 0)-(x, a), 0
  22.    ELSEIF y > -24 AND x = 24 THEN
  23.       x = 24
  24.       y = y - dy
  25.       IF y = -24 THEN 100
  26.       LINE (0, 0)-(a, y)
  27.       SLEEP 1
  28.       LINE (0, 0)-(a, y), 0
  29.    ELSEIF x > -24 AND y = -24 THEN
  30.       y = -24
  31.       x = x - dx
  32.       IF x = -24 THEN 100
  33.       LINE (0, 0)-(x, -a)
  34.       SLEEP 1
  35.       LINE (0, 0)-(x, -a), 0
  36.    ELSEIF y < 24 AND x = -24 THEN
  37.       x = -24
  38.       y = y + dy
  39.       IF y = 24 THEN 100
  40.       LINE (0, 0)-(-a, y)
  41.       SLEEP 1
  42.       LINE (0, 0)-(-a, y), 0
  43.    END IF
  44. 100
  45. LOOP UNTIL INKEY$ <> ""
  46. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы