/** * Just put first free cell on board */ public function getCell(Board $board, $type) { $free = $board->getFreeCell(); if (empty($free)) { ExceptionFactory::runtime("Not have free cells"); } $position = $this->getPosition($board, $type); switch ($type) { case Cell::TIC: $cell = Cell::createTic($position); break; default: $cell = Cell::createTac($position); } return $cell; }
/** * One step * * @param $type * @param $position * * @throws Exception\WrongCellException */ public function step($type, $position) { switch ($type) { case Cell::TIC: $cell = Cell::createTic($position); break; case Cell::TAC: $cell = Cell::createTac($position); break; default: throw ExceptionFactory::wrongCellException($type); break; } // Human step $this->board->addCell($cell); if ($this->board->isFinish()) { return; } // Strategy step $cell = $this->strategy->getCell($this->board, $this->oppositeType); $this->board->addCell($cell); }