Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.48 KB | None | 0 0
  1. var helpers = {
  2. randRange: function (min, max) {
  3. return Math.floor(Math.random() * (max - min + 1) + min);
  4. }
  5. }
  6.  
  7. var Board = {
  8. grid: [],
  9. width: 15,
  10. height: 15,
  11. obstacleChance: 15,
  12.  
  13. // remplit le tableau d'instances de Cell
  14. fill: function() {
  15. for (var x = 0; x < this.width; x++) {
  16. this.grid.push([]);
  17. for (var y = 0; y < this.height; y++) {
  18. var cell = Object.create(Cell);
  19. cell.init(y, x, this.obstacleChance)
  20. this.grid[x].push(cell);
  21. }
  22. }
  23. },
  24.  
  25. getEmptyCell: function() {
  26. var board = this;
  27. // position aléatoire jusqu'à trouver une case vide
  28. function randCell() {
  29. x = helpers.randRange(0, board.width - 1);
  30. y = helpers.randRange(0, board.height - 1);
  31. if (board.grid[x][y].isObs || board.grid[x][y].hasWeapon || board.grid[x][y].hasPlayer
  32. // pas de joueur autour, temporaire
  33. || board.grid[x + 1][y].hasPlayer
  34. || board.grid[x][y + 1].hasPlayer
  35. || board.grid[x - 1][y].hasPlayer
  36. || board.grid[x][y - 1].hasPlayer
  37. ) {
  38. randCell();
  39. }
  40. }
  41. randCell();
  42. return Board.grid[x][y];
  43. },
  44.  
  45. placeWeapons: function() {
  46. for (var i = 1; i < Game.weapons.length; i++) {
  47. var cell = this.getEmptyCell();
  48. //
  49. cell.hasWeapon = true;
  50. cell.weaponId = Game.weapons[i].id;
  51. }
  52. },
  53.  
  54. placePlayers: function() {
  55. for (var i = 0; i < Game.playersNb; i++) {
  56. var cell = this.getEmptyCell();
  57. cell.hasPlayer = true;
  58. cell.playerId = i;
  59. Game.players[i].x = cell.x;
  60. Game.players[i].y = cell.y;
  61. }
  62. },
  63.  
  64. moveCoords: function(direction, x, y, steps) {
  65. var target = {x: x, y: y};
  66. if (direction === "N") {
  67. target.y -= steps;
  68. return target;
  69. } else if (direction === "E") {
  70. target.x += steps;
  71. return target;
  72. } else if (direction === "S") {
  73. target.y += steps;
  74. return target;
  75. } else {
  76. target.x -= steps;
  77. return target;
  78. }
  79. },
  80.  
  81. render: function(table) {
  82. var table = $('#board');
  83. table.html('');
  84. for (var i = 0; i < this.width; i++) {
  85. table.append(`<tr id="${i}"></tr>`);
  86. for (var j = 0; j < this.height; j++) {
  87. var currentRow = `tr[id="${i}"]`;
  88. var currentCell = this.grid[i][j];
  89. var imgUrl;
  90.  
  91. if (currentCell.hasPlayer) {
  92. imgUrl = `img/player${currentCell.playerId + 1}.png`;
  93. } else if (currentCell.isObs) {
  94. imgUrl = 'img/obstacle.png';
  95. }
  96. else if (currentCell.hasWeapon) {
  97. imgUrl = `img/weapon${currentCell.weaponId}.png`;
  98. } else {
  99. imgUrl = 'img/empty.png';
  100. }
  101.  
  102. var cell = `<td class="cell" data-x="${j}" data-y="${i}"><img src="${imgUrl}"/></td>`;
  103. $(currentRow).append(cell);
  104. }
  105. }
  106. $('.cell').click(Board.handleCellClick);
  107. $('.cell').hover(Board.handleCellHover);
  108.  
  109. // interface - a séparer
  110. var ui = $('#ui-players');
  111. ui.html(`<h3>Player 1</h3><p>Weapon: ${Game.players[0].weapon.name}</p>
  112. <p>HP: ${Game.players[0].hp}</p>
  113. <h3>Player 2</h3><p>Weapon: ${Game.players[1].weapon.name}</p>
  114. <p>HP: ${Game.players[1].hp}</p>`);
  115.  
  116.  
  117. },
  118.  
  119. handleCellClick: function() {
  120. var coords = $(this).data();
  121. var targetCell = Board.grid[coords.y][coords.x];
  122. var canMoveTo = ($(this).children('.cell-move').length === 1) ? true : false;
  123. var activePlayer = Game.players[Game.currentTurn];
  124. if (!Game.inBattle && !activePlayer.isMoving && canMoveTo) {
  125. activePlayer.move(targetCell.x, targetCell.y);
  126. activePlayer.isMoving = true;
  127. }
  128.  
  129. },
  130.  
  131. handleCellHover: function() {
  132. var ui = $('#ui-info');
  133. var coords = $(this).data();
  134. var cell = Board.grid[coords.y][coords.x];
  135. var message = '@' + coords.x + '-' + coords.y;
  136. if (cell.isObs) {
  137. message += '<br>Obstacle'
  138. } else if (cell.hasWeapon) {
  139. message += '<br>Weapon: ' + Game.weapons[cell.weaponId].name;
  140. } else if (cell.hasPlayer) {
  141. message += '<br>Player' + cell.playerId;
  142. }
  143. ui.html(message);
  144. },
  145.  
  146. //testing
  147. renderMoves: function() {
  148. var moves = Game.players[Game.currentTurn].getAvailableMoves();
  149. var table = $('#board')[0];
  150. for (var i = 0; i < moves.length; i++) {
  151. var tableCell = table.rows[moves[i].y].cells[moves[i].x];
  152. var $tableCell = $(tableCell);
  153.  
  154. $tableCell.append('<img class="cell-move" src="img/move.png"/>');
  155. }
  156. }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement