Пример #1
0
    /// <summary>
    /// Update this instance.
    /// если сервер, то случайным образом выбирается чей ход и отправляется на клиент
    /// если клиент, тогда ожидается выбор чей ход от сервера
    /// </summary>
    void Update()
    {
        if (mGameBegun)
        {
            // если сервер, то случайным образом выбирается чей ход и отправляется на клиент
            if (GameOptions.Instance.Server)
            {
                FieldOperations field = mGameOrder.EnemyField.GetComponent <FieldOperations>();
                if (mFirstUpdate && field.isAllShipsArePlaced)
                {
                    if (Random.Range(0, 2) == 0)
                    {
                        mGameOrder.SetPlayerTurn();
                        SendEnemyTurn();
                    }
                    else
                    {
                        mGameOrder.SetEnemyTurn();
                        SendYourTurn();
                    }

                    mFirstUpdate = false;
                }
            }

            // если клиент, тогда ожидается выбор чей ход от сервера
            if (mStartWithYourTurn.HasValue)
            {
                if (mStartWithYourTurn.Value)
                {
                    mGameOrder.SetPlayerTurn();
                }
                else
                {
                    mGameOrder.SetEnemyTurn();
                }

                mStartWithYourTurn = null;
            }
        }
    }
Пример #2
0
    /// <summary>
    /// Ms the game order_ on begin game.
    /// когда игрок расставил свои корабли
    /// компьютер тоже расставляет свои корабли
    /// </summary>
    void mGameOrder_OnBeginGame()
    {
        mGameBegun = true;

        FieldOperations field = mGameOrder.EnemyField.GetComponent <FieldOperations>();
        // список кораблей которые нужно расставить противнику
        List <int> ship_types = new List <int>
        {
            3, 2, 2, 1, 1, 1, 0, 0, 0, 0
        };

        // для каждого корабля из списка
        // проверяются возможные клетки для постановки корабля
        // и выбирается случайно из вожмных вариантов и ставится
        foreach (var type in ship_types)
        {
            List <ShipPos> pos = GetPossiblePoitions(type);

            if (pos.Count > 0)
            {
                int num = Random.Range(0, pos.Count);

                field.PlaceShip(type, pos[num].Horizontal, pos[num].X, pos[num].Y, false);
            }
        }

        // случайным образом выбирается чей ход
        if (Random.Range(0, 2) == 0)
        {
            mGameOrder.SetPlayerTurn();
        }
        else
        {
            mGameOrder.SetEnemyTurn();
        }

        mGameOrder.PlayerField.GetComponent <FieldOperations>().RefreshRedPlanes();
    }