Как организовать движение объекта к цели - VB
Формулировка задачи:
Всем, Здравствуйте! Интересует такой вопрос. Как организовать движение объекта (обьект , двигается вперед, но может поворачивать на определенный угол и снова едет вперед) к цели С, из A в B цель передвинулась, я получил координаты из них стороны и углы треугольника (через аркосинус), полученного вершинами, начала , куда передвинулся обьект и целью, Дальше нужно организовать перемещение , вернее , надо как то проверять условия, чтобы обьект , через определённые промежутки времени, опять проверял направление и снова двигался к цели. Уже 3 дня бьюсь над этой задачей. Не знаю как организовать проверку и правильный поворот. То есть цель , сама должна поворачиваться, потом двигаться , проверять и так далее) Помогите пожалуйста!
Решение задачи: «Как организовать движение объекта к цели»
textual
Листинг программы
LCLICK(613,322) // 4754312 //-------------------------------- $edpov=2350/360 //-------------------------------- #ps2_keyboard //-------------------------------- $x0=0 $y0=0 $xc=0 $yb=0 $xc=0 $yc=0 $ac=0 $ab =0 $bc =0 //----------------- $xc= 687 $yc= 445 $shag=3000 //----------------- m1: GETSCREEN COLORMODE(6) IF_PIXEL_IN(236,34, 1032,713, 8339455) $x0=$_return1 $y0=$_return2 KEYDOWN (#w) WAITMS (1000) KEYUP(#w) ELSE KEYDOWN (#A) WAITMS (50) KEYUP(#A) GOTo(m1) end_if m2: WAITMS(50) GETSCREEN COLORMODE(6) IF_PIXEL_IN(236,34, 1032,713, 8339455) $xb=$_return1 $yb=$_return2 KEYDOWN (#d) WAITMS ($ugzap3) KEYUP(#d) $ugzap3=0 ELSE $ugzap3=$ugzap3+50 KEYDOWN (#A) WAITMS (50) KEYUP(#A) GOTo(m2) end_if WAITMS(50) m3: goto(rasug) rasug1: if ($ac>10) goto(usloviya) usloviya1: goto(cvet) cvet1: WAITMS(50) KEYDOWN (#w) WAITMS ($shag) KEYUP(#w) goto(cvet2) cvet21: goto(m3) end_if HALT //-------------------------------- cvet: $ugzap1=0 m4: GETSCREEN COLORMODE(6) IF_PIXEL_IN(236,34, 1032,713, 8339455) $x0=$_return1 $y0=$_return2 kEYDOWN (#d) WAITMS ($ugzap1) KEYUP(#d) $ugzap1=$ugzap1+50 ELSE kEYDOWN (#A) WAITMS (50) KEYUP(#A) $ugzap1=$ugzap1+50 GOTo(m4) end_if goto(cvet1) HALT //-------------------------------- cvet2: $ugzap2=0 m5: GETSCREEN COLORMODE(6) GETSCREEN COLORMODE(6) IF_PIXEL_IN(236,34, 1032,713, 8339455) $xb=$_return1 $yb=$_return2 KEYDOWN (#d) WAITMS ($ugzap2) KEYUP(#d) ELSE kEYDOWN (#A) WAITMS (50) KEYUP(#A) $ugzap2=$ugzap2+50 GOTo(m5) end_if goto(cvet21) HALT //-------------------------------- rasug: $ac=dist($x0,$y0,$xc,$yc) $a=$ac $ab=dist($x0,$y0,$xb,$yb) $b=$ab $bc=dist($xc,$yc,$xb,$yb) $c=$bc //------ WAITMS(50) TFCLEAR ("C:\KLM\lotro\ras\a.txt") WAITMS(50) TFCLEAR ("C:\KLM\lotro\ras\b.txt") WAITMS(50) TFCLEAR ("C:\KLM\lotro\ras\c.txt") WAITMS(50) //------ TFCLEAR ("C:\KLM\lotro\ras\aug.txt") WAITMS(50) TFCLEAR ("C:\KLM\lotro\ras\cug.txt") WAITMS(50) //------ TFWrite("C:\KLM\lotro\ras\a.txt",$a,1) WAITMS(50) TFWrite("C:\KLM\lotro\ras\b.txt",$b,1) WAITMS(50) TFWrite("C:\KLM\lotro\ras\c.txt",$c,1) WAITMS(50) //------ EXECUTE("C:\KLM\lotro\arcos.exe") WAIT(1) //------ $ug= TFREAD ("C:\KLM\lotro\ras\aug.txt",1) WAITMS(50) $ug0= TFREAD ("C:\KLM\lotro\ras\cug.txt",1) goto(rasug1) HALT //-------------------------------- usloviya: $tt=0 inc($g,1) print("<br>",$g) $ugpov=180-$ug $pov=round($ugpov*$edpov,0) $ug1=$ug0+$ug0/10 //$povnov=$ug0 $rad1=3.14159265359/180*$ug1 $rad0= 3.14159265359/180*$ug0 print("rad0 ",$rad0," $rad1 ",$rad1) print("ug ",$ug1," $ug0 ",$ug0) print("ugpov ",$ugpov) //------ if ($rad0<$rad1) $tt=1 KEYDOWN (#a) WAITMS ($pov) KEYUP(#a) end_if //------ if ($rad0>$rad1) $tt=2 KEYDOWN (#d) WAITMS ($pov) KEYUP(#d) end_if //if ($rad0=$rad) //end_if //------ if ($tt=2) print("d ") else print("a ") end_if print("<br>",$g) goto(usloviya1) HALT //--------------------------------
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д