UML class diagram:
Ball
– xPos: double
– yPos: double – radius: double – xVel: double – yVel: double – colour: Paint
+ Ball( startX: double, startY: double, startRadius: double, colour: Paint) + tick()
+ setxVel( xVel: double)
+ setyVel( yVel: double)
+ getRadius(): double
+ getxPos(): double
+ getyPos(): double
+ getColour(): Paint
+ getxVel(): double
+ getyVel(): double
+ setxPos(xPos: double)
+ setyPos(yPos: double)
+ think()
propertyListeners
1 BallPit
– height: double
– width: double
– balls: List
– collissionBalls: List
– tickCount: long = 0
– propertyListeners: ArrayList
+ BallPit(width: double, height: double)
+ getHeight(): double
+ getWidth(): double
+ tick()
+ getBalls(): List
– checkCollision(ballA:Ball, ballB:Ball): boolean – handleCollision(ballA:Ball, ballB:Ball)
+ addPropertyListener(lis: PropertyListener)
– publishPropertyEvent()
App
+ main(args: String[])
+ start(primaryStage: Stage)
GameWindow
– gc: GraphicsContext
– scene: Scene
– model: BallPit
– statusPanel: StatusPanel
+ GameWindow(model: BallPit) + getScene(): Scene
+ run()
– draw()
*
StatusPanel
– labels: ArrayList