void FormGame:: createGame()
{
    _green_circles_destroyers = 0;
    _red_circles_destroyers = 0;

    RandomNumberMannager::_index = 0;

    _tanks.clear();

    _timing = 0;
    _game =  Game::instance();
    _game->init();

    Team* team_1 = new Team(GREEN, "Green", _game);
    Team* team_2 = new Team(RED, "Red", _game);

    for(int i = 0; i < _players_data.size(); ++i)
    {
        PlayerData pd = _players_data.at(i);
        Player* player = new Player(pd._nick, pd._rank, pd._index_of_tank, _scene, _mini_map_scene, (pd._team == 1 ? team_1: team_2));
        player->getTank()->setObstructecAreas(Terrain::instance()->getObstructedAreas());
        player->getTank()->setCorner(Terrain::instance()->getWidthInPX(), Terrain::instance()->getHeightInPX());
        _tanks.append(player->getTank());

        connect(player->getTank(), &ITank::notifyDead, this, &FormGame::updateTankDeaths);
        connect(player->getTank(), &ITank::notifyLevelUp, this, &FormGame::updateTankLevel);
        connect(player->getTank(), &ITank::notifyTimeToReborn, this, &FormGame::updateTankTimeToReborn);
        connect(player->getTank(), &ITank::notifyReborn, this, &FormGame::updateTankReborn);
    }

    int index_of_this_player = TcpGameConnectionClient::instance()->index();
    if(_players_data.at(index_of_this_player)._team == 1)
        team_2->setLikeEnemy();
    else
        team_1->setLikeEnemy();

    foreach(IObject * object, Terrain::instance()->objects())
    {
        object->setTanks(_tanks);
        if(object->inherits("CircleOfPower"))
        {
            CircleOfPower* cp = dynamic_cast<CircleOfPower*>(object);
            Team* team = cp->team() == 1 ? team_1 : team_2;
            if(cp->player() <= team->getTanks().size())
                cp->setTank(team->getTanks().at(cp->player()-1));

            connect(cp, &CircleOfPower::notifyDesactive, this, &FormGame::circleOfPowerDesactive);
        }
        object->initObject();
    }