public function createPieces(Game $game)
 {
     $pieces = array();
     $player = $game->getPlayer('white');
     // Bishop on black square
     $file = 2 * mt_rand(1, 4) - 1;
     $pieces[$file] = $this->createPiece('Bishop', $file, 1);
     // Bishop on white square
     $file = 2 * mt_rand(1, 4);
     $pieces[$file] = $this->createPiece('Bishop', $file, 1);
     // Queen and Knights
     foreach (array(6 => 'Queen', 5 => 'Knight', 4 => 'Knight') as $rand => $class) {
         $file = $this->getEmptyFile($pieces, mt_rand(1, $rand));
         $pieces[$file] = $this->createPiece($class, $file, 1);
     }
     // Rooks and King
     foreach (array('Rook', 'King', 'Rook') as $class) {
         $file = $this->getEmptyFile($pieces, 1);
         $pieces[$file] = $this->createPiece($class, $file, 1);
     }
     // Pawns
     for ($it = 1; $it <= 8; $it++) {
         $pieces[] = $this->createPiece('Pawn', $it, 2);
     }
     $pieces = array_values($pieces);
     $player->setPieces($pieces);
     $player->getOpponent()->setPieces($this->mirrorPieces($pieces));
     $game->ensureDependencies();
     $game->setInitialFen(Forsyth::export($game));
 }
 public function createPiecesMinimal(Game $game)
 {
     $pieces = array();
     $player = $game->getPlayer('white');
     $pieces[] = new Piece(1, 2, 'Pawn');
     $player->setPieces($pieces);
     $player->getOpponent()->setPieces($this->mirrorPieces($pieces));
     $game->setInitialFen(null);
 }