Нарисуйте доску на холсте с помощью объектов Javascript - PullRequest
0 голосов
/ 17 января 2019

Я хочу создать простую игру с Javascript и использовать canvas, чтобы показать это. У меня есть объект для доски, и я не понимаю, как нарисовать столбец и строку на холсте, используя ранее созданный объект доски.

Я попытался сделать функцию drawBoard, прототип Board, для использования this.width и this.height. Но он не использует эти значения.

Я совершенно заблудился о том, как повторно использовать свойства объекта (ширину и высоту) в этой функции рисования доски. Совершенно новый на холсте.

<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-compatible" content="IE-edge">
<meta name="viewport" content="width=device-width, initial-scale-1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.css">
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>

  <title>Lava Temple</title>

<style>
* {
  padding: 0;
  border: 0;
}

body{
  background-color: #181818;
}

#board {
  display: block;
  background-color: white;
  margin: 0 auto;
  margin-top: 100px;
}
</style>

</head>
<body>
    <canvas id="board" width="800" height="800"></canvas>

<script>

function Board(width, height) {
  this.width = width;
  this.height = height;
  this.chartBoard = [];

  for (var i = 0; i < this.width; i++) {
    const row = [];
    this.chartBoard.push(row);
    for (var j = 0; j < this.height; j++) {
        const col = {};
        row.push(col);
    }
  }
}

let board = new Board(10, 10);
console.log(board);

const canvas = document.getElementById('board');
const ctx = canvas.getContext('2d');

Board.prototype.drawBoard = drawBoard;

function drawBoard() {

  for (var i = 0; i < this.width; i++) {
    for (var j = 0; j < this.height; j++) {
        ctx.beginPath();
        ctx.strokeStyle = 'black';
        ctx.strokeRect(j * 80, i * 80, 80, 80);
        ctx.closePath();
    }
  }
}

drawBoard();

</script>

</body>
</html>

Фактические результаты: в консоли видны холст и объект доски.

Ожидаемые результаты. Созданная доска также нарисована на холсте черными мазками.

Почему: этот объект на доске будет содержать объекты Игроки / Оружие ...

1 Ответ

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

Вам нужно использовать Board.prototype.drawBoard = function() {.... Затем, когда вы вызываете drawBoard(), вы вызываете это так: board.drawBoard(), потому что это метод объекта board.

function Board(width, height) {
  this.width = width;
  this.height = height;
  this.chartBoard = [];

  for (var i = 0; i < this.width; i++) {
    const row = [];
    this.chartBoard.push(row);
    for (var j = 0; j < this.height; j++) {
      const col = {};
      row.push(col);
    }
  }
}

Board.prototype.drawBoard = function() {
  for (var i = 0; i < this.width; i++) {
    for (var j = 0; j < this.height; j++) {
      ctx.beginPath();
      ctx.strokeStyle = "black";
      ctx.strokeRect(j * 80, i * 80, 80, 80);
      ctx.closePath();
    }
  }
};

let board = new Board(10, 10);

const canvas = document.getElementById("board");
const ctx = canvas.getContext("2d");

board.drawBoard();
* {
  padding: 0;
  border: 0;
}

body{
  background-color: #181818;
}

#board {
  display: block;
  background-color: white;
  margin: 0 auto;
  margin-top: 100px;
}
<canvas id="board" width="800" height="800"></canvas>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...