This title may be not fully appropriate. Code below shows nice looking circles and triangle. Probably most interesting parts are sin(&var.f x, var.f angle)
and move(&var ballObject, var.f h)
. In fact this example shows true power of anScript.
/Sinus
instructionCreate(sin,x,angle)
variableCreateLocal(s,angle)
variableCreateLocal(w,angle)
variableCreateLocal(i,2.f)
variableCreateLocal(logic,var.i)
logicLoopI(logic,comparisonIsLessOrEqual,logic,i,50.f)
w=0.f-1.f*w*angle*angle/((2.f*i-2.f)*(2.f*i-1.f))
s.basicAddition(s,w)
i.basicAddition(i,1.f)
}
variableAssign(x,s)
variableDeleteLocal(s,w,i,logic)
}
/Cosinus from sinus
instructionCreate(cos,x,sin)
x=1.f-sin*sin
x.mathSquareRoot()
}
/Prepare namespace for ball members
instructionCreate(ballBegin)
variableCreateLocal(x, 0.i)
variableCreateLocal(y, 1.i)
variableCreateLocal(r, 2.i)
variableCreateLocal(g, 3.i)
variableCreateLocal(b, 4.i)
variableCreateLocal(R, 5.i)
variableCreateLocal(a, 6.i)
}
/End namespace for ball members
instructionCreate(ballEnd)
variableDeleteLocal(x)
variableDeleteLocal(y)
variableDeleteLocal(r)
variableDeleteLocal(g)
variableDeleteLocal(b)
variableDeleteLocal(R)
variableDeleteLocal(a)
}
/Constructor
instructionCreate(ballConstruct, newBallObject,RR,GG,BB,RD)
newBallObject.variableAssign(var[])
newBallObject.arraySetSize(7.i)
newBallObject[x].variableAssign(var.i)
newBallObject[y].variableAssign(var.i)
newBallObject[r].variableAssign(RR)
newBallObject[g].variableAssign(GG)
newBallObject[b].variableAssign(BB)
newBallObject[R].variableAssign(RD)
newBallObject[a].variableAssign(pi)
newBallObject.move(0.f)
}
/Destructor
instructionCreate(ballDestruct, oldBallObject)
oldBallObject.variableAssign(var)
}
instructionCreate(draw, ballObject)
consolePrint(x:<t>.s,ballObject[x],<t>y:<t>.s,ballObject[y])
consoleNewLine()
graphicWindowSetCircle(200.i,0.i,200.i,239.i,108.i,0.i)
graphicWindowSetCircle(ballObject[x],ballObject[y],ballObject[R],ballObject[r],ballObject[g],ballObject[b])
graphicWindowSetConvexShape(0.i,0.i,400.i,0.i,ballObject[x],ballObject[y],50.i,50.i,50.i)
}
instructionCreate(move, ballObject, h)
ballObject[a]=ballObject[a]+h*0.01.f
variableCreateLocal(trig,var.f)
sin(trig,ballObject[a])
ballObject[x].variableToFloatNumber()
ballObject[x]=150.f*trig
ballObject[x].variableToIntegerNumber()
ballObject[x]=ballObject[x]+200.i
cos(trig,trig)
ballObject[y].variableToFloatNumber()
ballObject[y]=150.f*trig
ballObject[y].variableToIntegerNumber()
variableDeleteLocal(trig)
}
graphicWindowCreate(400.i,200.i,ball_simulation.s)
graphicWindowToggleDrawing(0.i)
ballBegin()
variableCreate(ball,var)
variableCreate(input,var.i)
variableCreate(comparisonTemp,var.i)
variableCreate(minusOne,0.f)
/Known bug: cannot just type -1.f
minusOne.basicSubstraction(minusOne,1.f)
ball.ballConstruct(221.i,44.i,0.i,50.i)
logicLoop(1.i)
ball.draw()
graphicWindowToggleDrawing(1.i)
windowGetKeyInput(input)
logicSwitch(input)
logicCase(27.i)
ball.ballDestruct()
ballEnd()
runtimeExit()
}
logicCase(119.i)
ball.move(1.f)
}
logicCase(115.i)
ball.move(minusOne)
}
}
graphicWindowToggleDrawing(0.i)
graphicWindowClear()
}