Skip to content

Instantly share code, notes, and snippets.

@IrakliMeto
Created November 24, 2021 12:43
Show Gist options
  • Save IrakliMeto/5700d61cab7cb1d103dde7a636a73211 to your computer and use it in GitHub Desktop.
Save IrakliMeto/5700d61cab7cb1d103dde7a636a73211 to your computer and use it in GitHub Desktop.
/* Constants for bricks */
var NUM_ROWS = 8;
var BRICK_TOP_OFFSET = 10;
var BRICK_SPACING = 2;
var NUM_BRICKS_PER_ROW = 10;
var BRICK_HEIGHT = 10;
var SPACE_FOR_BRICKS = getWidth() - (NUM_BRICKS_PER_ROW + 1) * BRICK_SPACING;
var BRICK_WIDTH = SPACE_FOR_BRICKS / NUM_BRICKS_PER_ROW;
var brick;
function start(){
drawBricks();
mouseMoveMethod(drawPaddle);
// ball functions
drawBall();
setTimer(draw, 20);
moveBall();
}
// this function draw bricks
function drawBricks(){
for(var j = 0; j < NUM_ROWS;j++){
for(var i = 0; i < NUM_BRICKS_PER_ROW; i++){
brick = new Rectangle(BRICK_WIDTH, BRICK_HEIGHT);
if((j + 1) % 8 == 1 || (j + 1) % 8 == 2){
brick.setColor(Color.RED);
}
else if((j + 1) % 8 == 3 || (j + 1) % 8 == 4){
brick.setColor(Color.ORANGE);
}
else if((j + 1) % 8 == 5 || (j + 1) % 8 == 6){
brick.setColor(Color.GREEN);
}
else if ((j + 1) % 8 == 7 || (j + 1) % 8 == 0){
brick.setColor(Color.BLUE);
}
brick.setPosition(BRICK_WIDTH * i + BRICK_SPACING * (1 + i), BRICK_TOP_OFFSET + BRICK_HEIGHT * j + BRICK_SPACING * (1 + j));
add(brick);
}
}
}
/* Constants for paddle */
var PADDLE_WIDTH = 80;
var PADDLE_HEIGHT = 15;
var PADDLE_OFFSET = 10;
var paddle;
function drawPaddle(event){
remove(paddle);
var paddleX = event.getX() - PADDLE_WIDTH / 2 - PADDLE_OFFSET;
paddle = new Rectangle(PADDLE_WIDTH, PADDLE_HEIGHT);
paddle.setPosition(paddleX, getHeight() - PADDLE_OFFSET - PADDLE_HEIGHT );
paddle.setColor(Color.black);
add(paddle);
}
// Constants for ball
var ball;
var BALL_RADIUS = 15;
var dx = 4;
var dy = 4;
var ballElement;
var brickElement;
// Check if the ball has reached a wall.
// Then move the ball in the correct direction.
function draw(){
checkWalls();
ball.move(dx, dy);
}
function drawBall(){
ball = new Circle(BALL_RADIUS);
ball.setPosition(100, 100);
add(ball);
}
function checkWalls(){
// Bounce off right wall
if(ball.getX() + ball.getRadius() > getWidth()){
dx = -dx;
}
// Bounce off left wall
if(ball.getX() - ball.getRadius() < 0){
dx = -dx;
}
if(ball.getY() < 0){
dy = -dy;
}
brickElement = getElementAt(ball.getX() + BRICK_WIDTH, ball.getY() + BRICK_HEIGHT );
if (brickElement != null) {
remove(brickElement);
dy = -dy
}
ballElement = getElementAt(ball.getX(), ball.getY() + ball.getRadius());
if ((ballElement && ballElement.x == paddle.x)){
dy = -dy;
}
}
function moveBall(){
ball.setPosition(200, 200);
ball.setColor(Color.black);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment