Расчет начальных координат объектов Raketa и Sputuik

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    5,78 Кб
  • Опубликовано:
    2013-10-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Расчет начальных координат объектов Raketa и Sputuik

Министерство образования Российской Федерации

АНО

Международный институт «ИНФО-Рутения»

Московский государственный институт стали и сплавов






Курсовая работа

по курсу: Алгоритмизация и программирование

Тема:

Расчет начальных координат объектов Raketa и Sputuik












г. Боровичи

Задание

Перехват спутника ракетой. Спутник летит по круговой орбите слева направо. Ракета стартует из левого нижнего угла экрана. Управление моментом старта и вектором скорости ракеты (скорость постоянна)

Ракета стартует из левого нижнего угла экрана. Спутник летит слева направо, начиная с левого верхнего угла экрана по круговой орбите с центром в левом нижнем углу экрана и радиусом равным высоте экрана. Спутник изображен в виде вытянутого треугольника. Ракета имеет рисунок в форме стрелки и управляется под действием нажатия стрелок (LEFT или RIGHT - поворот влево или вправо). При контакте (определяется по расстоянию между объектами) спутник распадается на фрагменты в виде кружков.

DECLARATE SUB comm (vs, da, ar, com$)

вычисление команды на перемещение объекта Raketa

DECLARATE SUB coord (v, ar, dt, x, y)

вычисление новых координат объекта Raketa

DECLARATE SUB angle (ar, ang$)

вычисление угла разворота объекта Raketa

DECLARATE SUB Raketa (d$, x, y, ang$, ar, xc.yc, r, st)

перемещение объекта RaketaSUB coord (x1, y1, t, dt, vx, vy, ang1$)

вычисление новых координат объекта Sputnik

DECLARATE SUB Sputnik (x1, y1, st, do$, ang1$)

перемещение объекта SputnikSUB contact (xc, yc, st, x1, y1)

реализация контакта между объектами

SCREEN 9. WINDOWS (0, 0)-(800, 600). COLOR, 1

назначение синего цвета фона

t = 0: dt = 1

назначение отсчета текущего времени t интервалом dt

х = 0: у = 0

назначение начальной точки рисования объекта Raketa

v=10: vs=0

значение скорости ракеты постоянно и интервал изменения скорости равен нулю

ar=-1.5708: da=.15

начальное значение угла разворота ar объекта Raketa в радианах и интервал изменения угла da

d$ = bu20 e15 r5 f15 d20 y17 g17 u20 br5

макет рисунка объекта Raketa (строка оператора DRAW без символов закрашивания фигуры)

х1 = 0: y1=600

начальные координаты спутника

ar1 = -1.5708: da1 =.1

начальное значение угла ar1 расположения объекта Sputnik в радианах и величины изменения угла da1 при перемещении объекта Sputnik за 1 цикл

vx = 5: vy = 0

начальное значение компонент вектора скорости объекта Sputnik

do$ = u10 m+59,10 m-50,10 u10 br5

макет рисунка объекта Sputnik

r = 100

константа для вычисления контрольной точки контакта объектов

sr = 0

флаг, принимающий значение 1 при наличии контакта DO

начало цикла движения объектов

t = t + dt

счетчик времени

i = i + 1

счетчик цикла

angl = da1 * i

расчет угла поворота объекта Sputnik

x1 = -600 * sin (ang1)= 600 * cos (ang1)

расчет новых координат объекта Sputnik

vy = 5 * sin (ang1)

vx = -5 * cos (ang1)

расчет текущих значений вектора скорости объекта Sputnik

CALL comm(x1, y1, t, dt, i, vx, vy, ang1$)

расчет координат объекта Sputnik

CALL comm(vs, da, v, ar, com$)

определение команды на перемещение объекта Raketa (переменной com$ присваивается символ нажатой клавиши)

CALL coord(v, ar, dt, x, y)

расчет новых координат объекта Raketa

CALL angle(ar, ang$)

расчет угла разворота объекта Raketa

CALL ракета (d$, x, y, ang$, ar, xc, yc, r, st)

перемещение рисунка объекта Raketa


окончание работы программы (выход из цикла DO-LOOP) производится по одному из двух условий: либо нажата клавиша s, либо st = 1 (что означает наличие контакта)

CALL contact (xc, yc, st, x1, y1)

вычисление условий контакта путем сравнения координат контрольной точки (хс, ус) объекта Raketa и координат начальной точки рисования (xl, yl) объекта Sputnik

LOOP

конец цикла движения объектов

END

SUB angle (ar, ang$)

пересчет угла в радианах аr в угол в градусах ang$, требуемый оператором DRAW

pi = 3.1415

число π

ad = INT(ar * 180 / pi)

угол в градусах в числовой форме

ad$ = $(ad)

угол в градусах в символьной форме

IF ad >= 0 THEN adS = "+" + LTRIM$(RAK$(ad))

при положительном угле символ «+» будет отсутствовать, а он нужен в строке оператора DRAW, поэтому он добавляется

ang$ = "ta" + ad$

формирование фрагмента строки оператора DRAW END SUB

SUB comm (vs, da, v, ar, com$)= 6.2830 - числоi = l TO 1000

старт скорость ракета перехват спутник

замедляющий цикл, необходимый для того, чтобы нажатая клавиша была принята оператором INKFY$. Если не нажата ни одна клавиша, значение переменной соm$ равно пустой строке и движение объекта «Ракета» продолжается со старыми значениями параметров v и аг

com$ = INKEY;: IF com; <> "" THEN EXIT FORiRIGHTS(com$, I) = "M" THEN ar = ar - da

нажата клавиша RIGHT, угол уменьшился

IF RIGHTS(com$, 1) = "К" THEN ar = ar + da

нажата клавиша LEFT, угол увеличился

IF ar > pi2 THEN ar = ar - pi2

контролируется полный оборот, так как значение угла не может превышать 2π по модулю

IF ar < -pi2 THEN ar = ar + pi2 IF v > 0 THEN SOUND 37 + v * 500, .1

при увеличении скорости увеличивается частота сопровождающего звука. END SUB

SUB contact (хс, ус, st, xl, yl

расчет условия контакта

DIM xo(10), yo(10), dxo(10), dyo(10)

dist = SQR((x 1 - хс)^2 + (yl - ус)^2)

расчет расстояния между объектами

IF dist < 50 THEN

при расстоянии меньше 50 пикселов фиксируется контакт (флаг st равен. единице) st = 1

RANDOMIZE TIMER

FOR i = l TO 10

расчет начальных координат фрагментов объекта Sputuik

xo(i) = x1: yo(i) = yl(i) = 10 * RND: dyo(i) = 20 * RNDii=l TO 10

изображение фрагментов в виде разлетающихся белых кружков радиуса 5 пикселов (приращения координат их центров случайны, поэтому каждый кружок перемещается в своем направлении)

xo(i) = xo(i) + dxo(i): yo(i) = yo(i) + dyo(i)(xo(i), yo(i)), 5iWHILE xo(1) < 1000 OR yo(1) < 750

движение фрагментов прекращается, когда первый фрагмент достигнет границы экрана

END IFSUBcoord (v, ar, dt, x, y)

координаты х и у объекта Raketa рассчитываются по законам механики

dx = -v * SIN(ar) * dt: dy = v * COS(ar) * dt= x + dx: у = у + dy

END SUBcoord 1 (xl, yl, t, dt, i, vx, vy, angl$)

расчет координат движения объекта Sputnik х1 и у1 (рассчитываются

по законам механики)

x1 = 600 * sin (ang1)= 600 * cos (ang1)

рассчитываются координаты объекта Sputnik

vy = 5 * SIN(ang1)

vx = 5 * COS(ang1)

расчет текущих значений вектора скорости угол разворота фигуры спутника равен ang1 за i циклов объекта

Sputnik

angl$ = "ta" + ad$

формирование фрагмента строки для оператора DRAW. END SUB

RAKETA (d$, x, y, ang$, ar, xc, yc, r, st)

рисунок объекта RAKETA

PRESET (x, y)

фиксация точки начала рисования

figpnt$ = "сЗ" + ang$ + d$ + "p5,3 b15"

формирование строки рисунка (строка собрана из символа цвета 3, угла разворота, макета рисунка, символов внутренней окраски)

DRAW figpnt$

рисование фигуры объекта RAKETA

PRESET (x, y)

вторичная фиксация начальной точки (необходима, так как последняя точка рисунка может не совпасть с начальной точкой - а от нее рассчитываются координаты нового положения фигуры)

FOR i = l TO 30000: NEXT i

замедляющий цикл позволяет задержать изображение объекта на время, необходимое для глаза, перед тем, как стереть его

figdel$ = "с0" + d$ + "р0,0 b15"


DRAW figdel$

стирание объекта RAKETA

PRESET (x, у)

возвращение начальной точки dar = 1.27

угол в радианах, необходимый для расчета координат контактной точки (хс, ус) (эта точка находится прямо по курсу объекта перед ним на близком расстоянии - сделано это по той причине, что точка с координатами (х, у) находится в хвосте и неудобно по ней фиксировать контакт)

хс = х + r * COS(ar + dar): ус = у + r * SIN(ar + dar)

расчет координат хс и ус

PSET (х, у) ставится точка белым цветом, которая не стирается и изображает шлейф от движения объекта

IF st > 0 THEN DRAW figpnt$

восстановление рисунка объекта, который в момент контакта оказывается стертым. END SUB

Sputnik (xl, yl, st, do$, angl$)

рисунок объекта Sputnik

IF st = 0 THEN (xl,yl)

фиксация начальной точки рисования

figpnt$ = "с12" + angl$ + do$ + "p14,12 b15"

формирование строки оператора DRAW с окраской и заданным углом разворота

DRAW figpnt$

рисование фигуры объекта Sputnik PRESET (xl.yl), возврат начальной точки

OR i = 1 ТО 30000: NEXT i

замедляющий цикл для фиксации объекта на экране

figdel$ = "с0" + do$ + "р0,0 b15"

формирование строки стирания объекта Sputnik

DRAW figdel$

стирание объекта Sputnik

PRESET (xl, yl)

возврат начальной точки (если ее не возвращать, то может появиться эффект размазывания фигуры объекта)

END IFSUB

Похожие работы на - Расчет начальных координат объектов Raketa и Sputuik

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!