Microsoft Small Basic

Program Listing:
Embed this in your website
' Challenge of the month July 2013 // Walking man by NaochanON
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
Copyright (c) Microsoft Corporation. All rights reserved.