anScript

Simple game

variableCreate(screenX, 800.i)
variableCreate(screenY, 600.i)

variableCreate(score, 0.i)
variableCreate(scoreS, 0.s)

variableCreate(life, 500.i)
variableCreate(lifeS, 500.s)

variableCreate(text, var.s)

/Prepare namespace for members
instructionCreate(gameBegin)
    variableCreateLocal(xPos, 0.i)
    variableCreateLocal(yPos, 1.i)
    variableCreateLocal(alpha, 2.i)
    variableCreateLocal(color, 3.i)
    variableCreateLocal(rd, 4.i)
}
/End namespace for members
instructionCreate(gameEnd)
    variableDeleteLocal(xPos)
    variableDeleteLocal(yPos)
    variableDeleteLocal(alpha)
    variableDeleteLocal(color)
    variableDeleteLocal(rd)
}

/////////////////
// Ball object //
/////////////////

/Constructor
instructionCreate(ballConstruct, newBallObject)
    newBallObject.variableAssign(var[])
    newBallObject.arraySetSize(5.i)
    variableCreateLocal(rand,var.i)
    
    rand.mathGetRandomNumber()
    rand.basicModulo(rand,screenX)
    newBallObject[xPos].variableAssign(var.i)
    newBallObject[xPos].basicSubstraction(0.i,rand)
    
    rand.mathGetRandomNumber()
    rand.basicModulo(rand,screenY)
    newBallObject[yPos].variableAssign(rand)
    
    newBallObject[alpha].variableAssign(var.f)
    
    
    newBallObject[color].variableAssign(var[])
    newBallObject[color].arraySetSize(3.i)
    
    rand.mathGetRandomNumber()
    rand.basicModulo(rand,256.i)
    newBallObject[color][0.i].variableAssign(rand)
    rand.mathGetRandomNumber()
    rand.basicModulo(rand,256.i)
    newBallObject[color][1.i].variableAssign(rand)
    rand.mathGetRandomNumber()
    rand.basicModulo(rand,256.i)
    newBallObject[color][2.i].variableAssign(rand)
    
    rand.mathGetRandomNumber()
    rand.basicModulo(rand,7.i)
    rand.basicAddition(rand,6.i)
    newBallObject[rd].variableAssign(rand)
    
    variableDeleteLocal(rand)
}
/Destructor
instructionCreate(ballDestruct, oldBallObject)
    oldBallObject.variableAssign(var)
}
instructionCreate(ballMove, ballObject)
    variableCreateLocal(bool,var.i)
    comparisonIsLess(bool,ballObject[xPos],screenX)
    logicIf(bool)
        ballObject[xPos].basicAddition(ballObject[xPos],2.i)
    }
    logicNegation(bool)
    logicIf(bool)
        /'bool' reused to store distance
        bool.basicSubstraction(pad[yPos], ballObject[yPos])
        /Absolute value
        bool.basicMultiplication(bool, bool)
        bool.mathSquareRoot()
        bool.comparisonIsLess(bool, 40.i)
        logicIf(bool)
            score.basicAddition(score, ballObject[rd])
            scoreS.variableAssign(score)
            scoreS.variableToCharArray()
        }
        logicNegation(bool)
        logicIf(bool)
            life.basicSubstraction(life, ballObject[rd])
            lifeS.variableAssign(life)
            lifeS.variableToCharArray()
            bool.comparisonIsLess(life, 0.i)
            logicIf(bool)
                gameOver()
            }
        }
        ballObject.ballDestruct()
        ballObject.ballConstruct()
    }
    variableDeleteLocal(bool)
}
instructionCreate(ballDraw, ballObject)
    graphicWindowSetCircle(ballObject[xPos],ballObject[yPos],ballObject[rd],ballObject[color][0.i],ballObject[color][1.i],ballObject[color][2.i])
}

/////////////////
//  Pad object //
/////////////////

/Constructor
instructionCreate(padConstruct, newPadObject)
    newPadObject.variableAssign(var[])
    newPadObject.arraySetSize(4.i)
    variableCreateLocal(rand,var.i)
    
    newPadObject[xPos].variableAssign(screenX)
    
    newPadObject[yPos].variableAssign(var.i)
    newPadObject[yPos].basicDivision(screenX,2.i)
    
    newPadObject[alpha].variableAssign(var.f)
    
    newPadObject[color].variableAssign(var[])
    newPadObject[color].arraySetSize(3.i)
    
    rand.mathGetRandomNumber()
    rand.basicModulo(rand,256.i)
    newPadObject[color][0.i].variableAssign(rand)
    rand.mathGetRandomNumber()
    rand.basicModulo(rand,256.i)
    newPadObject[color][1.i].variableAssign(rand)
    rand.mathGetRandomNumber()
    rand.basicModulo(rand,256.i)
    newPadObject[color][2.i].variableAssign(rand)
    
    variableDeleteLocal(rand)
}
/Destructor
instructionCreate(padDestruct, oldPadObject)
    oldPadObject.variableAssign(var)
}
instructionCreate(padMove, padObject, direction)
    logicSwitch(direction)
        logicCase(u.s)
            padObject[yPos].basicAddition(padObject[yPos], 3.i)
        }
        logicCase(d.s)
            padObject[yPos].basicSubstraction(padObject[yPos], 3.i)
        }
    }
}
instructionCreate(padDraw, padObject)
    graphicWindowSetCircle(padObject[xPos], padObject[yPos],40.i, padObject[color][0.i], padObject[color][1.i], padObject[color][2.i])
}

instructionCreate(scoreDraw)
    text.basicAddition(Score:<t>.s, scoreS, <n>Life:<t>.s, lifeS)
    graphicWindowSetText(10.i,70.i,text,RobotoRegular.ttf.s,50.i,100.i,100.i,100.i)
}

instructionCreate(gameOver)
    variableCreate(x, var.i)
    variableCreate(y, var.i)
    x.basicDivision(screenX, 5.i)
    y.basicDivision(screenY, 2.i)
    graphicWindowSetText(x,y,Game<s>over.s, RobotoRegular.ttf.s,100.i,200.i,100.i,100.i)
    timeWait()
}

gameBegin()
variableCreate(balls,var)
balls.arraySetSize(10.i)
balls.arrayForEach(ballConstruct)

variableCreate(pad,var)
pad.padConstruct()

graphicWindowCreate(screenX,screenY,anScript<s>best<s>game.s)

variableCreate(input,var.i)

/Main game loop
logicLoop(1.i)
    balls.arrayForEach(ballDraw)
    pad.padDraw()
    scoreDraw()
    graphicWindowToggleDrawing(1.i)
    windowGetKeyInputNow(input)
    logicSwitch(input)
        logicCase(27.i)
            gameEnd()
            runtimeExit()
        }
        logicCase(119.i)
            pad.padMove(u.s)
        }
        logicCase(115.i)
            pad.padMove(d.s)
        }
    }
    balls.arrayForEach(ballMove)
    timeWait(8.i)
    graphicWindowToggleDrawing(0.i)
    graphicWindowClear()
}