<?php

class Animal {
    public $body;
    public $x;
    public $y;
    public $name;

    public function printSymbol()
    {
        echo $this->body;
    }
}

class Mouse extends Animal {
    public $body;
    public $x;
    public $y;
    public $name;
}

class Cat extends Animal {
    public $body = "K";
    public $x;
    public $y;
    public $name;
}

class Dog extends Animal {
    public $body = "D";
    public $x;
    public $y;
    public $name;
}

class Field {
    public $width;
    public $height;
    public $field = array();
    public $animals = array();

    public function __construct($width, $height)
    {
        $this->width = $width;
        $this->height = $height;
    }

    public function createField()
    {
        for ($i = 1; $i <= $this->height; $i++) {
            for($j = 1; $j <= $this->width; $j++) {
                $this->field[$j][$i] = ".";
            }
        }
    }

    public function placeTheAnimals()
    {
        $i = 1;
        $this->createField();
        foreach ($this->animals as $animal) {
            if ($animal->x == NULL && $animal->y == NULL) {
                do {
                    $animal->x = mt_rand(1, $this->width);
                    $animal->y = mt_rand(1, $this->height);
                } while ($this->field[$animal->y][$animal->x] != ".");
                if ($animal instanceof Mouse) {
                    $animal->body = $i++;
                }
            }
            $this->field[$animal->y][$animal->x] = $animal;
        }
    }

    public function showField()
    {
        for ($i = 1; $i <= $this->height; $i++) {
            for($j = 1; $j <= $this->width; $j++) {
                if ($this->field[$i][$j] instanceof Animal) {
                    $this->field[$i][$j]->printSymbol();
                } else {
                    echo $this->field[$i][$j];
                }
            }
            echo "\n";
        }
    }

}

$cat1   = new Cat("cat1");
$cat2   = new Cat("cat2");
$mouse1 = new Mouse("mouse1");
$mouse2 = new Mouse("mouse2");
$mouse3 = new Mouse("mouse3");
$dog1   = new Dog("dog1");
$field  = new Field(10,10);
$field->animals = array($cat1, $cat2, $mouse1, $mouse2, $mouse3, $dog1);
$field->placeTheAnimals();
$field->showField();