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