Excellent program written by NaoChanOn
Challenge of the month July 2013 // Walking man by NaochanON
Program Code:
Shapes_Init()
Shapes_Add()
While (pos<1100)
dx=6
dy=2
MM=MM+5
walking()
If -30<MM And MM<30 Then
NN=MM
ElseIf 30<=MM and MM<90 Then
NN=60-MM
Elseif MM=90 then
MM=-30
EndIf
Program.Delay(200)
endwhile
Sub armlegmoving
rad=math.GetRadians(NN)
‘————————————– Arm & Hand —————————————————————————————
ArmCP=»X=»+(shapes.GetLeft(shp[7][«obj»])+shp[7][«width»]/2)+»;Y=»+(shapes.Gettop(shp[7][«obj»]))
ArmDR= shp[5][«height»]/2
Shapes.Rotate(shp[8][«obj»],NN) ‘ Left arm // backward
Shapes.Move(shp[8][«obj»],ArmCP[«X»]- ArmDR*Math.Sin(rad), ArmCP[«Y»]+ArmDR*Math.cos(rad)-(shp[5][«y»]-shp[7][«y»]))
Shapes.Rotate(shp[9][«obj»],NN) ‘ Left hand // backward
Shapes.Move(shp[9][«obj»],ArmCP[«X»]- 2*ArmDR*Math.Sin(rad), ArmCP[«Y»]+2*ArmDR*Math.cos(rad)+shp[6][«height»]/2)
Shapes.Rotate(shp[5][«obj»],-NN) ‘ Right arm // forward
Shapes.Move(shp[5][«obj»],ArmCP[«X»]+ArmDR*Math.Sin(rad), ArmCP[«Y»]+ArmDR*Math.cos(rad) -(shp[8][«y»]-shp[7][«y»]) )
Shapes.Rotate(shp[6][«obj»],-NN) ‘ Right hand// forward
Shapes.Move(shp[6][«obj»],ArmCP[«X»]+ 2*ArmDR*Math.Sin(rad), ArmCP[«Y»]+2*ArmDR*Math.cos(rad)+shp[9][«height»]/2)
‘————————————– Leg & Foot ————————————————————————————— —————-
LegCP=»X=»+(shapes.GetLeft(shp[7][«obj»])+shp[7][«width»]/2-5)+»;Y=»+(shapes.Gettop(shp[7][«obj»]) +shp[7][«height»]-5) ‘ 5… adjustment
LegDR=shp[10][«height»]/2
Shapes.Rotate(shp[10][«obj»],NN) ‘ Left leg // backward
Shapes.Move(shp[10][«obj»],LegCP[«X»]- LegDR*Math.Sin(rad), LegCP[«Y»])
Shapes.Rotate(shp[11][«obj»],NN) ‘ Left foot // backward
Shapes.Move(shp[11][«obj»],LegCP[«X»]- 2*LegDR*Math.Sin(rad), LegCP[«Y»]+2*LegDR*Math.cos(rad))
Shapes.Rotate(shp[12][«obj»],-NN) ‘ Right leg// forward
Shapes.Move(shp[12][«obj»],LegCP[«X»]+ LegDR*Math.Sin(rad), LegCP[«Y»])
Shapes.Rotate(shp[13][«obj»],-NN) ‘ Left foot // forward
Shapes.Move(shp[13][«obj»],LegCP[«X»]+ 2*LegDR*Math.Sin(rad), LegCP[«Y»]+2*LegDR*Math.cos(rad))
EndSub
Sub walking
For k=1 To Array.GetItemCount(shp)
Shapes.Move(shp[k][«obj»],Shapes.GetLeft(shp[k][«obj»])+dx,Shapes.Gettop(shp[k][«obj»])+dy)
endfor
pos=Shapes.GetLeft(shp[1][«obj»])
armlegmoving()
EndSub
Sub Shapes_Add
GraphicsWindow.BackgroundColor=»Lightcyan»
GraphicsWindow.Width=1200
GraphicsWindow.Height=700
For i = 1 To Array.GetItemCount(shp)
GraphicsWindow.PenWidth = shp[i][«pw»]
GraphicsWindow.PenColor = shp[i][«pc»]
GraphicsWindow.BrushColor = shp[i][«bc»]
If shp[i][«func»] = «rect» Then
shp[i][«obj»] = shapes.AddRectangle(shp[i][«width»], shp[i][«height»])
ElseIf shp[i][«func»] = «ell» Then
shp[i][«obj»] = shapes.AddEllipse(shp[i][«width»], shp[i][«height»])
ElseIf shp[i][«func»] = «tri» Then
shp[i][«obj»] = shapes.AddTriangle(shp[i][«x1»], shp[i][«y1»], shp[i][«x2»], shp[i][«y2»], shp[i][«x3»], shp[i][«y3»] )
ElseIf shp[i][«func»] = «line» Then
shp[i][«obj»] = shapes.AddLine(shp[i][«x1»], shp[i][«y1»], shp[i][«x2»], shp[i][«y2»])
EndIf
Shapes.Move(shp[i][«obj»], X0 + shp[i][«x»], Y0 + shp[i][«y»])
If shp[i][«angle»] <> 0 Then
Shapes.Rotate(shp[i][«obj»], shp[i][«angle»])
EndIf
EndFor
EndSub
Sub Shapes_Init
X0 = 10 ‘ x offset
Y0 = 50 ‘ y offset
shp[1] = «func=ell;x=42;y=0;width=34;height=45;bc=#EB9869;pc=#EB9869;pw=2;» ‘ face
shp[2] = «func=line;x=65;y=13;x1=0;y1=0;x2=8;y2=1;pc=#6A5ACD;pw=4;» ‘ Eye
shp[3] = «func=line;x=65;y=29;x1=0;y1=0;x2=8;y2=3;pc=#F80800;pw=2;» ‘ mouse
shp[4] = «func=tri;x=74;y=17;x1=0;y1=0;x2=10;y2=8;x3=0;y3=12;angle=0;bc=#EB9869;pc=#EB9869;pw=1;» ‘nose
shp[5] = «func=rect;x=53;y=50;width=8;height=60;angle=0;bc=#6A5ACD;pc=#000000;pw=1;» ‘ Left arm
shp[6] = «func=ell;x=53;y=110;width=13;height=22;angle=0;bc=#EB9869;pc=#EB9869;pw=8;» ‘ Left hand
shp[7] = «func=ell;x=40;y=42;width=33;height=103;bc=#00AA00;pc=#00AA00;pw=2;» ‘ body
shp[8] = «func=rect;x=53;y=50;width=8;height=60;angle=0;bc=#00BB00;pc=#000000;pw=1;» ‘ Right arm
shp[9] = «func=ell;x=53;y=110;width=13;height=22;angle=0;bc=#EB9869;pc=#EB9869;pw=2;» ‘ Right hand
shp[10] = «func=rect;x=50;y=140;width=12;height=71;angle=0;bc=#6A5ACD;pc=#6A5ACD;pw=2;» ‘ left Leg
shp[11] = «func=ell;x=50;y=209;width=33;height=13;angle=0;bc=#BED3CA;pc=#414C3E;pw=2;» ‘ left foot
shp[12] = «func=rect;x=50;y=140;width=12;height=71;angle=0;bc=#00AA00;pc=#6A5ACD;pw=2;» ‘ Right Leg
shp[13] = «func=ell;x=50;y=209;width=33;height=13;angle=0;bc=#1AD3CA;pc=#414C3E;pw=2;» ‘ Right foot
EndSub