Каким методом возможно решить эту задачу?

YPower

Новичок
Доброго дня!

У меня есть следующая задача - создать прототип игры и заставить работать нижележащий код.
Game - класс игры, а Tile - это плитка в игре (отдельный участок имеющий координаты). Реализуйте недостающие классы и методы так, чтобы в результате было выведено игровое поле как в комментариях (там должен быть дом, деревья, газон и цветы).

php
class Game
{

}

class Tile
{

}

$game = new Game([
new House(0,0), //дом
new Tree(1,0), //дерево
new Tree(2,0), //дерево
new Lawn(0,1), //газон
new Lawn(0,2), //газон
new Lawn(0,3), //газон
new Lawn(0,3), //газон
new Flower(3,0), //цветок
new Flower(1,3), //цветок
]);

/*
0 1 2 3
0 🏠 🌳 🌳 🌼
1 🌿
2 🌿
3 🌿 🌼

*/

Не пойму какой метод в данном случае использовать. Только начал изучать классы и методы и кроме простых методов типа show не знаком.
Нужно ли здесь создавать какой - то div или таблицу или надо работать через координаты?

Могли бы, пожалуйста, подсказать или хотя бы направить в нужном направлении?
 

WMix

герр M:)ller
Партнер клуба
я бы несколько иначе поступил бы, тебе координаты внутри класса tree не так чтоб нужны

PHP:
// пусть будет game
class Game
{
  private $map = [];

  //определи размер поля
  public function Game($width, $height){
     //создаем
     for($x=0; $x<$width; $x++){
       $this->map[$x] = [];
       for($y=0; $y<$height; $y++){
         $this->map[$x][$y] = null;
       }
     }
  }
//заполняем
  public setMapCell($x, $y, MapCell $obj){
      $this->map[$x][$y] = $obj;
  }
  // выводим
  public function drawMap(){
    foreach($map as $row){
      foreach($map as $cell){
        echo $cel->getImage();
      }
    }
  }
}
//хорошо бы работать с однотипными обьектами
interface MapCell{
  public function getImage();
}

// допустим дом
class House implements MapCell{
  public function  getImage(){
    return '🏠';
  }
}


$game = new Game(1,1);
$game->setMapCell(0,0, new House);
$game->drawMap();
Нужно ли здесь создавать какой - то div или таблицу или надо работать через координаты?
любой вариант (рисовать можно и на холсте)
 

YPower

Новичок
я бы несколько иначе поступил бы, тебе координаты внутри класса tree не так чтоб нужны

PHP:
// пусть будет game
class Game
{
  private $map = [];

  //определи размер поля
  public function Game($width, $height){
     //создаем
     for($x=0; $x<$width; $x++){
       $this->map[$x] = [];
       for($y=0; $y<$height; $y++){
         $this->map[$x][$y] = null;
       }
     }
  }
//заполняем
  public setMapCell($x, $y, MapCell $obj){
      $this->map[$x][$y] = $obj;
  }
  // выводим
  public function drawMap(){
    foreach($map as $row){
      foreach($map as $cell){
        echo $cel->getImage();
      }
    }
  }
}
//хорошо бы работать с однотипными обьектами
interface MapCell{
  public function getImage();
}

// допустим дом
class House implements MapCell{
  public function  getImage(){
    return '🏠';
  }
}


$game = new Game(1,1);
$game->setMapCell(0,0, new House);
$game->drawMap();

любой вариант (рисовать можно и на холсте)

Большое спасибо! Буду теперь разбирать Ваш код )
 
Сверху