anScript

Nice view

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()
}