Skip to content

Instantly share code, notes, and snippets.

@IrakliMeto
Created November 26, 2021 07:47
Show Gist options
  • Save IrakliMeto/6fc95989afdb49a136babcdf9248dca3 to your computer and use it in GitHub Desktop.
Save IrakliMeto/6fc95989afdb49a136babcdf9248dca3 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;
var brickRemoveCount = 0;
var brickSum = NUM_BRICKS_PER_ROW * NUM_ROWS;
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);
}
// this function delete paddle when you dont have life
function deletePaddle(event) {
remove(drawPaddle);
}
// Constants for ball
var ball;
var BALL_RADIUS = 15;
var dx = 4;
var dy = 4;
var paddleElement;
var brickElement;
var life = 3;
// 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(getWidth() / 2 - BALL_RADIUS / 2, 150);
add(ball);
}
// this function check game status
function checkGame(){
if(ball.getY() + BALL_RADIUS >= getHeight()){
remove(ball);
drawBall();
life--;
}
if(life == 0) {
removeAll();
stopTimer(draw);
mouseMoveMethod(deletePaddle);
println("You Loose, Looseeeeeeeeer !")
}
if(brickRemoveCount === brickSum ) {
removeAll();
stopTimer(draw);
mouseMoveMethod(deletePaddle);
println("You Win, olalalaaaaaaa !")
}
}
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;
}
deleteBrick(checkForColision());
paddleElement = getElementAt(ball.getX(), ball.getY() + ball.getRadius() + 1);
if (paddleElement !== null){
dy = -dy;
}
checkGame();
}
function moveBall(){
ball.setPosition(200, 200);
ball.setColor(Color.black);
}
function deleteBrick (bricks){
if (bricks.length !== 0) {
for(var i = 0; i < bricks.length; i++) {
remove(bricks[i]);
brickRemoveCount++;
}
dy = -dy;
}
}
function checkForColision(){
const bricks = [];
brickElement = getElementAt(ball.getX(), ball.getY() - ball.getRadius() - 5);
if (brickElement != null) {
bricks.push(brickElement);
}
brickElement = getElementAt(ball.getX() + ball.getRadius() + 5, ball.getY());
if (brickElement != null) {
bricks.push(brickElement);
}
brickElement = getElementAt(ball.getX() - ball.getRadius() - 5, ball.getY());
if (brickElement != null) {
bricks.push(brickElement);
}
return bricks;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment