Другие языки программирования и технологии
Рисунки в Qbasic !
Помогите пожалуйста сделать средний рисунок в SCREEN 12 Если есть какие-ниб конверторы изображений - дайте знать ! Оч надо ! 10 баллов отдам !
Могу предложить только анимированные аналоговые часики собственного изготовления:
DECLARE SUB drawhours (x!, y!, r!)
DECLARE SUB drawseconds (x!, y!, r!)
DECLARE SUB drawminutes (x!, y!, r!)
DECLARE FUNCTION dx! (n!)
DECLARE FUNCTION dy! (n!)
DECLARE FUNCTION rad! (n!) ' функция перевода градусов в радианы
SCREEN 12
maxx = 639 ' максимальное значение по оси X
maxy = 479 ' максимальное значение по оси Y
r1 = 75 ' радиус циферблата
r2 = 65 ' радиус часовых отметок
r3 = 70 ' радиус минутных отметок
r4 = 60 ' радиус секундной стрелки
r5 = 50 ' радиус минутной стрелки
r6 = 45 ' радиус часовой стрелки
FOR n = 0 TO 360 STEP 2
x = maxx / 2
y = maxy / 2
' рисуем циферблат:
IF n = 0 THEN
PSET (x + dx(n) * r1, y + dy(n) * r1), 10
ELSE
LINE -(x + dx(n) * r1, y + dy(n) * r1), 10
END IF
' рисуем минутные деления:
IF n MOD 6 = 0 AND n MOD 30 <> 0 THEN
LINE (x + dx(n) * r3, y + dy(n) * r3)-(x + dx(n) * r1, y + dy(n) * r1), 15
END IF
' рисуем часовые деления:
IF n MOD 30 = 0 THEN
LINE (x + dx(n) * r2, y + dy(n) * r2)-(x + dx(n) * r1, y + dy(n) * r1), 14
END IF
NEXT
drawhours x, y, r6
drawminutes x, y, r5
drawseconds x, y, r4
ON TIMER(1) GOSUB move
TIMER ON
DO
LOOP WHILE INKEY$ = ""
END
move:
drawhours x, y, r6
drawminutes x, y, r5
drawseconds x, y, r4
RETURN
SUB drawhours (x, y, r)
STATIC olda
h = TIMER / 3600
h = h - 3
IF h > 12 THEN
h = h - 12
END IF
LINE (x, y)-(x + dx(olda) * r, y + dy(olda) * r), 0
a = h * 30
olda = a
LINE (x, y)-(x + dx(a) * r, y + dy(a) * r), 11
END SUB
SUB drawminutes (x, y, r)
STATIC olda
m = (TIMER - INT(TIMER / 3600) * 3600) / 60
m = m + 45
IF m > 60 THEN
m = m - 60
END IF
LINE (x, y)-(x + dx(olda) * r, y + dy(olda) * r), 0
a = INT(m) * 6
olda = a
LINE (x, y)-(x + dx(a) * r, y + dy(a) * r), 9
END SUB
SUB drawseconds (x, y, r)
STATIC olda
m = (TIMER - INT(TIMER / 3600) * 3600) / 60
s = (m - INT(m)) * 60
s = s + 45
IF s > 60 THEN
s = s - 60
END IF
LINE (x, y)-(x + dx(olda) * r, y + dy(olda) * r), 0
a = INT(s) * 6
olda = a
LINE (x, y)-(x + dx(a) * r, y + dy(a) * r), 12
END SUB
FUNCTION dx (n)
dx = COS(rad(n))
END FUNCTION
FUNCTION dy (n)
dy = SIN(rad(n))
END FUNCTION
FUNCTION rad (n)
pi = ATN(1) * 4
rad = n * pi / 180
END FUNCTION
DECLARE SUB drawhours (x!, y!, r!)
DECLARE SUB drawseconds (x!, y!, r!)
DECLARE SUB drawminutes (x!, y!, r!)
DECLARE FUNCTION dx! (n!)
DECLARE FUNCTION dy! (n!)
DECLARE FUNCTION rad! (n!) ' функция перевода градусов в радианы
SCREEN 12
maxx = 639 ' максимальное значение по оси X
maxy = 479 ' максимальное значение по оси Y
r1 = 75 ' радиус циферблата
r2 = 65 ' радиус часовых отметок
r3 = 70 ' радиус минутных отметок
r4 = 60 ' радиус секундной стрелки
r5 = 50 ' радиус минутной стрелки
r6 = 45 ' радиус часовой стрелки
FOR n = 0 TO 360 STEP 2
x = maxx / 2
y = maxy / 2
' рисуем циферблат:
IF n = 0 THEN
PSET (x + dx(n) * r1, y + dy(n) * r1), 10
ELSE
LINE -(x + dx(n) * r1, y + dy(n) * r1), 10
END IF
' рисуем минутные деления:
IF n MOD 6 = 0 AND n MOD 30 <> 0 THEN
LINE (x + dx(n) * r3, y + dy(n) * r3)-(x + dx(n) * r1, y + dy(n) * r1), 15
END IF
' рисуем часовые деления:
IF n MOD 30 = 0 THEN
LINE (x + dx(n) * r2, y + dy(n) * r2)-(x + dx(n) * r1, y + dy(n) * r1), 14
END IF
NEXT
drawhours x, y, r6
drawminutes x, y, r5
drawseconds x, y, r4
ON TIMER(1) GOSUB move
TIMER ON
DO
LOOP WHILE INKEY$ = ""
END
move:
drawhours x, y, r6
drawminutes x, y, r5
drawseconds x, y, r4
RETURN
SUB drawhours (x, y, r)
STATIC olda
h = TIMER / 3600
h = h - 3
IF h > 12 THEN
h = h - 12
END IF
LINE (x, y)-(x + dx(olda) * r, y + dy(olda) * r), 0
a = h * 30
olda = a
LINE (x, y)-(x + dx(a) * r, y + dy(a) * r), 11
END SUB
SUB drawminutes (x, y, r)
STATIC olda
m = (TIMER - INT(TIMER / 3600) * 3600) / 60
m = m + 45
IF m > 60 THEN
m = m - 60
END IF
LINE (x, y)-(x + dx(olda) * r, y + dy(olda) * r), 0
a = INT(m) * 6
olda = a
LINE (x, y)-(x + dx(a) * r, y + dy(a) * r), 9
END SUB
SUB drawseconds (x, y, r)
STATIC olda
m = (TIMER - INT(TIMER / 3600) * 3600) / 60
s = (m - INT(m)) * 60
s = s + 45
IF s > 60 THEN
s = s - 60
END IF
LINE (x, y)-(x + dx(olda) * r, y + dy(olda) * r), 0
a = INT(s) * 6
olda = a
LINE (x, y)-(x + dx(a) * r, y + dy(a) * r), 12
END SUB
FUNCTION dx (n)
dx = COS(rad(n))
END FUNCTION
FUNCTION dy (n)
dy = SIN(rad(n))
END FUNCTION
FUNCTION rad (n)
pi = ATN(1) * 4
rad = n * pi / 180
END FUNCTION
Ого долгож будеш делать в ручную.. .
Похожие вопросы
- У кого есть рисунки в QBASIC
- qBasic
- помогите написать простые программы на Qbasic
- QBASIC сформировать мосив состоящая С М-строк,и М-столбцов
- Косинус в qbasic
- Интересные примеры для QBasic
- Что пришло на смену Qbasic?
- Помогите написать в QBasic программу-фильтр! У МЕНЯ ЗАЧЕТ!!!
- Простейшая программа/игра по qbasic
- Помогите найти ошибку qbasic