Как сбросить кирпичи в 2D игре Canvas - PullRequest
0 голосов
/ 24 января 2019

Я новичок в Javascript, так что это может быть легко исправить, но я не могу найти способ сбросить кирпичи внутри холста. Я использую функцию redraw() Полный код на https://codepen.io/Jacob-Bruce/pen/mQgbXa

Я попытался повторно вызвать drawBricks, но теперь я понимаю, что мне нужно, чтобы массив работал.

// brick layout
var bricks = [];
for(var c=0; c<brickColumnCount; c++) {
  bricks[c] = [];
  for(var r=0; r<brickRowCount; r++) {
    bricks[c][r] = { x: 0, y: 0, status: 1 };
  }
}
// draw bricks
function drawBricks() {
  for(var c=0; c<brickColumnCount; c++) {
    for(var r=0; r<brickRowCount; r++) {
      if(bricks[c][r].status == 1) {
        var brickX = (r*(brickWidth+brickPadding))+brickOffsetLeft;
        var brickY = (c*(brickHeight+brickPadding))+brickOffsetTop;
        bricks[c][r].x = brickX;
        bricks[c][r].y = brickY;
        ctx.beginPath();
        ctx.rect(brickX, brickY, brickWidth, brickHeight);
        ctx.fillStyle = "#0095DD";
        ctx.fill();
        ctx.closePath();
      }
    }
  }
}
// redraw function -- used to reset when selecting mode
function redraw() {
  score = 0
  x = canvas.width/2;
  y = canvas.height-30;
  paddleX = (canvas.width-paddleWidth)/2
  // find how to make bricks reappear
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  drawBricks();
  drawBall();
  drawPaddle();
  drawScore();
  drawLives();
  collisionDetection();
} 

Я хочу, чтобы кирпичи снова появились и полностью перезагрузили игру, но в настоящее время она просто сбрасывает мяч и весло.

1 Ответ

0 голосов
/ 24 января 2019

Я думаю, вам нужно сделать что-то вроде этого ..

// brick layout
var bricks = [];
for(var c=0; c<brickColumnCount; c++) {
  bricks[c] = [];
  for(var r=0; r<brickRowCount; r++) {
    bricks[c][r] = { x: 0, y: 0, status: 1 };
  }
}

Изменить на

// brick layout
var bricks = [];
function resetBricks() {
    for(var c=0; c<brickColumnCount; c++) {
      bricks[c] = [];
      for(var r=0; r<brickRowCount; r++) {
        bricks[c][r] = { x: 0, y: 0, status: 1 };
      }
   }
}
resetBricks();

Затем вызвать метод resetBricks () в вашем коде, когда вы хотите ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...