Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2023, 10:37   #1
Светлана198
Новичок
Джуниор
 
Регистрация: 17.04.2023
Сообщений: 1
По умолчанию секундомер

Подскажите, пожалуйста, как сделать так чтобы стрелка начинала двигаться от 12. Стрелка начинается двигаться от 12, но она сначала уходит немного влево, затем возвращается к 12,и начинает правильно двигаться. Как сделать так чтобы стрелка не уходила влево
Вот код на Basic
SCREEN 12
INPUT r, n
DIM x(n), y(n)
FOR i = 1 TO n
x(i) = r * COS(i * (8 * ATN(i) - (4 + 3 * n) / n)) + 320
y(i) = r * SIN(i * (8 * ATN(i) - (4 + 3 * n) / n)) + 240
PSET (x(i), y(i))
NEXT
FOR i = 1 TO n
x(i) = r * COS(i * (2 * ATN(i) - (4 + 3 * n) / n)) + 320
y(i) = r * SIN(i * (2 * ATN(i) - (4 + 3 * n) / n)) + 240
PSET (x(i), y(i))
LINE (320, 240)-(x(i) - 2, y(i) - 2), 15
FOR x = 1 TO 1000000:
FOR z = 1 TO 100
NEXT
NEXT
LINE (320, 240)-(x(i) - 2, y(i) - 2), 0
NEXT
Светлана198 вне форума Ответить с цитированием
Старый 17.04.2023, 22:35   #2
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Сообщений: 184
По умолчанию

Все проблемы в формулах. Зачем вы арктангенс берёте?
Вот часики, переделать под секундомер проблем нет. Главное формулы есть.

Код:
CONST CX = 640 / 2    ' CenterX, Y
CONST CY = 480 / 2
CONST Pi = 3.141592653589397#
CONST Radius = 150

SCREEN 12
  DIM X(59) AS INTEGER, Y(59) AS INTEGER  ' Координаты для секундной стрелки. Чуть меньше Radius-a

  CIRCLE (CX, CY), Radius + 5, 8
  PAINT (1, 1), 1, 8
  CIRCLE (CX, CY), Radius + 6, 8
  CIRCLE (CX, CY), Radius + 7, 7, 1, 1 + Pi
  CIRCLE (CX, CY), Radius + 7, 8, 1 + Pi, 1

  FOR I = 0 TO 59
      J = (I + 45) MOD 60   ' Новая переменная J смещает начало отсчёта на "12 часов" вместо "15 часов" которые делает тригонометрия

      X(I) = CX + (Radius - 5) * COS(2 * Pi * (J / 60))
      Y(I) = CY + (Radius - 5) * SIN(2 * Pi * (J / 60))
     
      X1 = CX + Radius * COS(2 * Pi * (J / 60))
      Y1 = CY + Radius * SIN(2 * Pi * (J / 60))
     
      IF I MOD 5 = 0 THEN     ' Каждый пятый кружочек
        CIRCLE (X1, Y1), 2, 11
      ELSE
        PSET (X1, Y1), 3
      END IF
  NEXT

  DO
      LOCATE 10, 38: COLOR 7: PRINT "PAKETA"
      LOCATE 18, 37: COLOR 2: PRINT TIME$
      I = VAL(RIGHT$(TIME$, 2))
     
      CIRCLE (CX, CY), 13, 10
      PAINT (CX, CY), 2, 10
      LINE (CX, CY)-(X(I), Y(I)), 10
      SLEEP 1
      LINE (CX, CY)-(X(I), Y(I)), 0
  LOOP UNTIL INKEY$ <> ""
Изображения
Тип файла: png ZZ.png (5.8 Кб, 12 просмотров)
jillitil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Секундомер three_cats Общие вопросы C/C++ 1 06.02.2013 17:41
Секундомер ser70 Общие вопросы C/C++ 4 24.12.2012 04:03
Секундомер Ins1De Общие вопросы C/C++ 3 26.05.2010 22:14
Секундомер girkoff Общие вопросы C/C++ 3 26.12.2009 12:30
секундомер itisiam Общие вопросы Delphi 6 31.05.2007 16:55