Вверх ↑
Ответов: 1907
Рейтинг: 623
#1: 2020-07-12 17:39:36 ЛС | профиль | цитата
Леонид писал(а):
Вообще надо двигать не красную точку, а карту. а точка должна быть в центре.
Во во!
Вот так и сделал точка стоит себе в центре и "смотрит" вверх, а всё вокруг нее вертится. Вот только вертеть "дешевле" сам холст перед отрисовкой, чем потом все изображение как у Леонид-а.
Схема (W - двигаться, A,D - поворот, Space - остановить движение точек

Add(Timer,9568122,84,217)
{
Interval=33
link(onTimer,16296757:doRefresh,[])
}
Add(MainForm,7072142,91,161)
{
Width=711
Height=458
Position=1
}
Add(PaintBox,16296757,126,217)
{
Width=700
Height=400
Color=16777215
ClearBeforeDraw=0
link(onBeforeDraw,3450544:doEvent1,[])
}
Add(Img_Point,9351544,763,441)
{
Color=16711680
Size=3
Point(X)
Point(Y)
link(onDraw,12696735:doEvent,[])
link(Bitmap,3013644:getVar,[])
link(X,8072376:Var1,[(776,369)])
link(Y,7920251:Var1,[(783,418)])
}
Add(Math,5147421,315,203)
{
Op2=2
Default=250
link(onResult,6669566:doWork2,[])
link(Op1,854946:Var2,[])
}
Add(Memory,9756808,378,203)
{
Default=Integer(0)
MakeExt(Default,,Y)
AddHint(1,-21,21,13,Default)
}
Add(Math,16455664,301,238)
{
OpType=1
Op2=2
Default=250
link(onResult,6669566:doWork3,[(359,244)])
link(Op1,854946:Var1,[(307,189)])
}
Add(Keyboard,6864804,217,231)
{
Key=68
link(onReadKey,1318274:doEvent,[])
}
Add(IndexToChanel,1318274,259,231)
{
link(onEvent2,16455664:doOperation,[])
}
Add(Keyboard,2734219,217,196)
{
Key=65
link(onReadKey,14052412:doEvent,[])
}
Add(IndexToChanel,14052412,259,196)
{
link(onEvent2,5147421:doOperation,[])
}
Add(Keyboard,9264453,217,154)
{
Key=87
link(onReadKey,7965526:doEvent,[])
}
Add(IndexToChanel,7965526,259,154)
{
link(onEvent2,8415989:doCalc,[])
}
Add(Hub,3450544,168,217)
{
OutCount=6
link(onEvent1,9264453:doReadKey,[(192,223)(192,160)])
link(onEvent2,2734219:doReadKey,[(200,230)(200,202)])
link(onEvent3,6864804:doReadKey,[])
link(onEvent4,7645734:doSetTransform,[(211,244)(211,363)])
link(onEvent5,7645734:doResetTransform,[(200,251)(200,370)])
link(onEvent6,8884940:doReadKey,[(194,258)(194,510)])
}
Add(Img_UseOffset,6583126,469,203)
{
X=-350
Y=-200
link(X,8415989:Result,[])
link(Y,11955774:Result,[(489,198)(524,198)])
}
Add(Img_UseRotate,8859586,371,252)
{
Angle=0
link(Angle,14427750:Var2,[])
}
Add(StrList,12969089,728,252)
{
Strings=#11:101,103,0,0|9:20,45,1,0|10:300,26,2,0|10:135,67,1,0|11:335,127,3,0|11:555,227,0,0|10:55,327,2,0|11:245,200,3,0|11:300,100,2,0|11:500,200,1,0|11:400,300,3,0|11:121,103,1,0|9:28,45,2,0|10:310,26,3,0|10:165,67,2,0|11:315,127,1,0|11:515,227,2,0|10:51,327,3,0|11:235,200,1,0|11:303,100,0,0|11:504,200,2,0|11:404,300,0,0|
}
Add(ArrayEnum,13336943,665,364)
{
link(onItem,11959826:doEvent1,[])
link(Array,2949624:Var1,[(671,299)])
}
Add(Img_Point,11768602,427,364)
{
X=350
Y=200
Color=16711935
Size=5
Point(X)
Point(Y)
link(onDraw,4487587:doDraw,[])
link(Bitmap,16505516:getVar,[])
}
Add(LineBreakEx,16505516,427,329)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,2483627,126,266)
{
Caption="bmp"
Type=3
link(_Data,16296757:Bitmap,[])
}
Add(LineBreakEx,124505,343,322)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,2075203,301,322)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,3231849,259,322)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,3013644,763,392)
{
Caption="bmp"
Type=2
}
Add(Hub,11959826,707,364)
{
OutCount=4
link(onEvent1,13845065:doSplit,[(772,370)(772,335)])
link(onEvent2,13657560:doSplit,[])
link(onEvent3,9351544:doDraw,[(755,384)(755,447)])
link(onEvent4,3352261:doEvent,[(730,391)(730,566)])
}
Add(Img_Line,1128388,301,357)
{
Point1=-1000
Point2=1000
LineStyle=2
link(onDraw,10826445:doDraw,[])
link(Bitmap,2075203:getVar,[])
}
Add(Img_Line,10826445,343,357)
{
Point1=-65536000
Point2=65536000
LineStyle=2
link(onDraw,10774283:doSetTransform,[])
link(Bitmap,124505:getVar,[])
}
Add(Img_Text,623198,259,357)
{
X=-6
Y=-120
Font=[MS Sans Serif,12,1,0,1]
Text="N"
link(onDraw,1128388:doDraw,[])
link(Bitmap,3231849:getVar,[])
}
Add(Img_SetTransform,7645734,217,357)
{
Point2=26215100
link(onSetTransform,623198:doDraw,[])
link(onResetTransform,10774283:doResetTransform,[])
link(Bitmap,14303955:getVar,[])
link(Transform,8859586:Transform,[(244,295)(377,295)])
}
Add(LineBreakEx,14303955,217,322)
{
Caption="bmp"
Type=2
}
Add(Img_SetTransform,10774283,385,357)
{
Point2=26215100
link(onSetTransform,1304847:doFor,[])
link(onResetTransform,11768602:doDraw,[])
link(Bitmap,4929607:getVar,[])
link(Transform,15911165:Transform,[(412,296)(475,296)])
}
Add(LineBreakEx,4929607,385,322)
{
Caption="bmp"
Type=2
}
Add(Img_UseRotate,15911165,469,252)
{
Angle=0
link(AddTransform,6583126:Transform,[])
link(Angle,14241382:Var3,[(482,243)])
}
Add(MathParse,8415989,476,161)
{
DataCount=1
MathStr="2 * sin (%1/180*pi) + %0"
Default=-350
link(onResult,11955774:doCalc,[])
link(X1,9143755:Var2,[])
}
Add(MathParse,11955774,518,161)
{
DataCount=1
MathStr="2 * cos (%1/180*pi) + %0"
Default=-200
link(X1,9143755:Var3,[(524,149)])
}
Add(HubEx,6669566,355,203)
{
link(onEvent,9756808:doValue,[])
}
Add(GetDataEx,14427750,378,238)
{
link(Data,9756808:Value,[])
}
Add(GetDataEx,854946,315,184)
{
Angle=1
link(Data,14427750:Var1,[(366,189)(366,243)])
}
Add(GetDataEx,9143755,476,144)
{
Angle=3
link(Data,14241382:Var1,[(433,149)])
}
Add(Random,10236209,931,560)
{
Max=3
link(onRandom,11892796:doStrCat,[])
}
Add(IndexToChanel,12696735,812,441)
{
Count=4
Point(Index)
link(onEvent1,5445148:doOperation,[])
link(onEvent2,1951545:doOperation,[(863,454)(863,468)])
link(onEvent3,2324044:doOperation,[(855,461)(855,489)])
link(onEvent4,8084396:doOperation,[(850,468)(850,510)])
link(Index,2207095:Var2,[])
}
Add(Math,5445148,875,441)
{
Op2=1
link(onResult,7987341:doWork2,[])
link(Op1,8072376:Var2,[])
}
Add(Memory,9781029,1050,329)
{
Default=Integer(0)
MakeExt(Default,,X)
}
Add(Math,1951545,910,462)
{
OpType=1
Op2=1
link(onResult,7987341:doWork3,[(948,468)])
link(Op1,1599697:Var2,[])
}
Add(HubEx,7987341,944,441)
{
link(onEvent,6400917:doWork3,[(970,447)])
}
Add(Math,2324044,952,483)
{
Op2=1
link(onResult,16376611:doWork2,[(1022,489)(1022,384)])
link(Op1,7920251:Var2,[])
}
Add(Memory,15067560,1057,378)
{
Default=Integer(0)
MakeExt(Default,,Y)
}
Add(Math,8084396,987,504)
{
OpType=1
Op2=1
link(onResult,16376611:doWork3,[(1037,510)])
link(Op1,3201385:Var2,[])
}
Add(GetDataEx,14241382,427,238)
{
Angle=3
link(Data,14427750:Var3,[])
}
Add(ArrayRW,7427723,1099,553)
{
link(Array,2949624:Var3,[(1105,299)])
link(Index,13336943:Index,[(1112,544)(678,544)])
}
Add(GetDataEx,2949624,742,294)
{
link(Data,12969089:Array,[])
}
Add(FormatStr,11384990,1050,560)
{
DataCount=3
Mask="%1,%2,%3"
link(onFString,7427723:doWrite,[])
link(Str1,13768270:Var2,[])
link(Str2,11417882:Var2,[])
}
Add(Math,2952193,819,560)
{
Op2=1
Default=250
link(onResult,2512205:doCompare,[])
link(Op1,13657560:Part2,[])
AddHint(-9,38,30,13,Op2)
}
Add(MultiStrData,13845065,812,329)
{
Char=","
link(onPart1,6400917:doWork2,[])
link(onPart2,16376611:doWork1,[(1037,342)])
}
Add(HubEx,6400917,966,329)
{
link(onEvent,9781029:doValue,[])
}
Add(HubEx,16376611,1033,378)
{
link(onEvent,15067560:doValue,[])
}
Add(GetDataEx,13768270,1050,364)
{
link(Data,9781029:Value,[])
}
Add(GetDataEx,11417882,1057,413)
{
link(Data,15067560:Value,[])
}
Add(MultiStrPart,13657560,812,371)
{
Char=","
link(Str,13845065:RemaindStr,[])
}
Add(GetDataEx,2207095,812,420)
{
link(Data,13657560:Part1,[])
}
Add(If_else,2512205,875,560)
{
Type=2
Op2=Integer(30)
link(onTrue,10236209:doRandom,[])
link(onFalse,6686438:doStrCatDlm,[(921,573)(921,615)])
AddHint(-6,-19,27,13,Op2)
}
Add(GetDataEx,8072376,875,364)
{
Angle=1
link(Data,1599697:Var1,[])
}
Add(GetDataEx,7920251,952,413)
{
Angle=1
link(Data,3201385:Var1,[])
}
Add(GetDataEx,1599697,910,364)
{
Angle=1
link(Data,13768270:Var1,[])
}
Add(GetDataEx,3201385,987,413)
{
Angle=1
link(Data,11417882:Var1,[])
}
Add(StrCatDelim,6686438,973,609)
{
Delimiter=","
link(onStrCatDlm,5049951:doWork3,[(1026,615)])
link(Str1,2207095:Var1,[(979,601)(789,601)(789,425)])
}
Add(StrCat,11892796,973,560)
{
Str2=",0"
link(onStrCat,5049951:doWork2,[])
}
Add(HubEx,5049951,1022,560)
{
link(onEvent,11384990:doString,[])
}
Add(For,1304847,518,357)
{
Start=-500
End=1000
Step=50
link(onEvent,13937395:doFor,[(558,363)(558,349)])
link(onStop,13336943:doEnum,[])
}
Add(For,13937395,567,343)
{
Start=-500
End=500
Step=50
link(onEvent,4744450:doDraw,[])
}
Add(LineBreakEx,16753551,609,308)
{
Caption="bmp"
Type=2
}
Add(IndexToChanel,3352261,735,560)
{
Count=1
Point(Index)
link(onEvent1,2952193:doOperation,[])
link(Index,10210202:Count,[])
}
Add(Keyboard,8884940,245,504)
{
Key=32
link(onReadKey,2270826:doData,[])
}
Add(IndexToChanel,10537779,329,504)
{
link(onEvent2,10210202:doNext,[])
}
Add(CounterEx,10210202,735,511)
{
Max=1
}
Add(ChangeMon,2270826,287,504)
{
link(onData,10537779:doEvent,[])
}
Add(LineBreakEx,4146830,469,329)
{
Caption="bmp"
Type=2
}
Add(Img_Text,4487587,469,364)
{
X=342
Y=180
Font=[Wingdings 3,22,0,16711935,2]
Text="h"
link(Bitmap,4146830:getVar,[])
}
Add(Img_Point,4744450,609,343)
{
Color=12632256
Size=3
Point(X)
Point(Y)
link(Bitmap,16753551:getVar,[])
link(X,1304847:Position,[(622,331)(649,331)(649,402)(524,402)])
}
Add(InfoTip,14461835,224,441)
{
Info=#24:Отключаем движение точек|
Width=162
Height=130
}
Add(InfoTip,11475779,658,203)
{
Info=#24:Перебираем массив точек.|53:(позиция X, позиция Y, направление, количество шагов)|64:Если точка прошла больше 30 шагов, может измениться направление |
Width=498
Height=445
}
Осталось выдать дробовик, разбросать боеприпасы по игровому полю и начать отстреливать точки
Леонид, ваша схема на моем стареньком ноутбуке дико виснет (процессор на 100%). И вот не могу понять это или из-за содержания картинки или из-за того что вы ее переворачиваете несколько раз в секунду. Так что большая просьба не выкладывать в схемах такие картинки, а то сильно отвлекает от поставленной задачи
карма: 9

0
Редактировалось 2 раз(а), последний 2020-07-12 17:41:12