Пример #1
0
    // Start is called before the first frame update
    void Start()
    {
        int currentLevel = SceneManager.GetActiveScene().buildIndex;

        scoreFinalGreen.text = "Hijau: " + ScoreText.scoreAmountGreen;
        scoreFinalRed.text   = "Merah: " + ScoreText2.scoreAmountRed;

        if (ScoreText.scoreAmountGreen >= minGreen && ScoreText2.scoreAmountRed >= minRed)
        {
            if (currentLevel >= PlayerPrefs.GetInt("levelUnlocked"))
            {
                PlayerPrefs.SetInt("levelUnlocked", currentLevel + 1);
                Debug.Log("level sekarang" + currentLevel);
            }
            WinText.SetActive(true);
        }
        else
        {
            LoseText.SetActive(true);
            titleLose.SetActive(true);
            replayButton.SetActive(true);
            readButton.SetActive(false);
            nextButton.SetActive(false);
            titleWin.SetActive(false);
            image.SetActive(false);
        }
    }
Пример #2
0
 //決定ボタンを押したときの挙動
 //とりあえずplayerは1,computerは2にしとく
 public void Det()
 {
     if (PlayerTurn)
     {
         if (Masume[x % n, y % n, z % n] == 0)
         {
             Masume[x % n, y % n, z % n] = 1;
             Cubes[x % n, y % n, z % n].GetComponent <Renderer>().sharedMaterial = Materials[Masume[x % n, y % n, z % n]];
             if (Judge(1) == 1)
             {
                 WinText.SetActive(true);
                 Continue   = false;
                 PlayerTurn = false;
             }
             if (starter == 2)
             {
                 turnnum++;
                 TurnText.text = turnnum + "回目";
             }
             x = y = z = 1;
             WhichTurnText.text = "コンピューターのターン";
             PlayerTurn         = false;
         }
         else
         {
             //キャンヴァスに「ここは選択できません」
         }
     }
     else
     {
         if (Masume[x % n, y % n, z % n] == 0)
         {
             PlayerTurn = true;
             Masume[x % n, y % n, z % n] = 2;
             Cubes[x % n, y % n, z % n].GetComponent <Renderer>().sharedMaterial = Materials[Masume[x % n, y % n, z % n]];
             for (i = 0, j = 1; i < n; i++)
             {
                 j *= 2;
             }
             if (Judge(j) == 1)
             {
                 LoseText.SetActive(true);
                 Continue   = false;
                 PlayerTurn = false;
             }
             if (starter == 1)
             {
                 turnnum++;
                 TurnText.text = turnnum + "回目";
             }
             x = y = z = 1;
             WhichTurnText.text = "あなたのターン";
         }
         else
         {
         }
     }
 }
    //backup data for undo

    // Use this for initialization
    void Start()
    {
        gamelength = 50;
        turn       = 0;
        //initializing default game variable values
        data = new BackgroundData(10000, Random.Range(60, 80), 10000, 3);
        AverageTemperature = data.Temperature;
        //lake
        data.WaterSources[0] = new WaterSource("Lake", 100000, 5000, 1, 1);
        //aquifer
        data.WaterSources[1] = new WaterSource("Aquifer", 100000, 5000, 1, 1);
        //shipments
        data.WaterSources[2] = new WaterSource("Shipment", 0, 0, 1, 10);

        //set initial water towers
        data.CalculateWaterDistributionRate();


        //Set Initial Rain Interval and TurnCount
        RainTurnCount       = Random.Range(2, 4);
        RainInterval        = Random.Range(3, 5);
        AverageRainInterval = RainInterval;

        //reseting event icons/text
        WinText.SetActive(false);
        // Rain.enabled = false;
        Drought.SetActive(false);
        Monsoon.SetActive(false);
        MigrationIn.SetActive(false);
        MigrationOut.SetActive(false);
        WarmFront.SetActive(false);
        ColdFront.SetActive(false);
        LoseText.SetActive(false);
        LoseCounterText.text = "Lives: 10";
        //buttons
        Endturn.onClick.AddListener(EndturnListener);
        LakeReserve.maxValue     = data.WaterSources[0].GetReserve();
        AquiferReserve.maxValue  = data.WaterSources[1].GetReserve();
        ShipmentReserve.maxValue = 50000;

        City.SetLakeMax(100000);
        City.SetLakeCurrent(LakeReserve.maxValue);

        WTInvestment.onClick.AddListener(delegate { SetCurrentInvestment(0); });
        LKInvestment.onClick.AddListener(delegate { SetCurrentInvestment(1); });
        AQInvestment.onClick.AddListener(delegate { SetCurrentInvestment(2); });
        Invest1000.onClick.AddListener(delegate { InvestInCurrent(1000); });
        Invest2000.onClick.AddListener(delegate { InvestInCurrent(2000); });
        Invest5000.onClick.AddListener(delegate { InvestInCurrent(5000); });
        WaterShipment.onClick.AddListener(delegate { SetCurrentInvestment(3); });
    }
Пример #4
0
    // Start is called before the first frame update
    void Start()
    {
        n       = StartBut.n;
        lvl     = StartBut.lvl;
        starter = StartBut.starter;
        if (starter == 1)
        {
            PlayerTurn         = true;
            WhichTurnText.text = "あなたのターン";
        }
        else
        {
            PlayerTurn         = false;
            WhichTurnText.text = "コンピューターのターン";
        }

        Buttons = GameObject.Find("Buttons");
        WinText.SetActive(false);
        LoseText.SetActive(false);

        //キューブの初期配置
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
                for (k = 0; k < n; k++)
                {
                    Cubes[i, j, k] = Instantiate(CubePrefab) as GameObject;
                    Cubes[i, j, k].transform.position = new Vector3(i + 0.5f * (1.0f - n), j + 0.5f * (1.0f - n), k + 0.5f * (1.0f - n));
                    Masume[i, j, k] = 0;
                }
            }
        }
        x = y = z = 0;

        //真ん中のキューブを選択不能にした時
        if (StartBut.noncenter)
        {
            if (n % 2 == 0)
            {
                Masume[n / 2, n / 2, n / 2] = 3;
                Cubes[n / 2, n / 2, n / 2].GetComponent <Renderer>().sharedMaterial = Materials[3];
                Masume[n / 2 - 1, n / 2, n / 2] = 3;
                Cubes[n / 2 - 1, n / 2, n / 2].GetComponent <Renderer>().sharedMaterial = Materials[3];
                Masume[n / 2, n / 2 - 1, n / 2] = 3;
                Cubes[n / 2, n / 2 - 1, n / 2].GetComponent <Renderer>().sharedMaterial = Materials[3];
                Masume[n / 2, n / 2, n / 2 - 1] = 3;
                Cubes[n / 2, n / 2, n / 2 - 1].GetComponent <Renderer>().sharedMaterial = Materials[3];
                Masume[n / 2 - 1, n / 2 - 1, n / 2] = 3;
                Cubes[n / 2 - 1, n / 2 - 1, n / 2].GetComponent <Renderer>().sharedMaterial = Materials[3];
                Masume[n / 2, n / 2 - 1, n / 2 - 1] = 3;
                Cubes[n / 2, n / 2 - 1, n / 2 - 1].GetComponent <Renderer>().sharedMaterial = Materials[3];
                Masume[n / 2 - 1, n / 2, n / 2 - 1] = 3;
                Cubes[n / 2 - 1, n / 2, n / 2 - 1].GetComponent <Renderer>().sharedMaterial = Materials[3];
                Masume[n / 2 - 1, n / 2 - 1, n / 2 - 1] = 3;
                Cubes[n / 2 - 1, n / 2 - 1, n / 2 - 1].GetComponent <Renderer>().sharedMaterial = Materials[3];
            }
            else
            {
                Masume[n / 2, n / 2, n / 2] = 3;
                Cubes[n / 2, n / 2, n / 2].GetComponent <Renderer>().sharedMaterial = Materials[3];
            }
        }
    }
    //button listeners
    private void EndturnListener()
    {
        if (turn < gamelength)
        {
            if (LoseCounter == 0)
            {
                LoseText.SetActive(true);
                turn = 50;
            }
            else if (data.WaterDistributionRate < data.WaterConsumptionRate)
            {
                LoseCounter--;
                LoseCounterText.text = "Lives: " + LoseCounter.ToString();
            }
            data.ExtractWaterSources();
            Debug.Log("Lake Reserve: " + data.WaterSources[0].GetReserve() + " Max Reserve: " + 100000);
            City.SetLakeCurrent(data.WaterSources[0].GetReserve());

            if (RainTurnCount == 0)
            {
                data.SetEvent(0, Random.Range(10, 20));
                RainTurnCount = RainInterval;
                City.SetRainEnabled(true);
            }
            else
            {
                City.SetRainEnabled(false);
                RainTurnCount--;
            }
            if (CurrentTempEventTurnCount != 0 && CurrentTempEvent < 2)
            {
                if (CurrentTempEvent == 0)
                {
                    data.SetEvent(1, Random.Range(5, 7));
                    CurrentTempEventTurnCount--;
                    WarmFront.SetActive(true);
                    ColdFront.SetActive(false);
                }
                else if (CurrentTempEvent == 1)
                {
                    data.SetEvent(2, Random.Range(5, 7));
                    CurrentTempEventTurnCount--;
                    WarmFront.SetActive(false);
                    ColdFront.SetActive(true);
                }
            }
            else
            {
                if (CurrentTempEventTurnCount > 0)
                {
                    CurrentTempEventTurnCount--;
                }
                if (data.Temperature < AverageTemperature)
                {
                    data.SetEvent(1, Random.Range(3, 5));
                }
                else
                {
                    data.SetEvent(2, Random.Range(3, 5));
                }
                WarmFront.SetActive(false);
                ColdFront.SetActive(false);
            }

            if (CurrentPopEventTurnCount != 0 && CurrentPopEvent < 2)
            {
                if (CurrentPopEvent == 0)
                {
                    data.SetEvent(3, Random.Range(1000, 5000));
                    CurrentPopEventTurnCount--;
                    MigrationIn.SetActive(true);
                    MigrationOut.SetActive(false);
                }
                else if (CurrentPopEvent == 1)
                {
                    data.SetEvent(4, Random.Range(1000, 5000));
                    CurrentPopEventTurnCount--;
                    MigrationIn.SetActive(false);
                    MigrationOut.SetActive(true);
                }
            }
            else
            {
                if (CurrentPopEventTurnCount > 0)
                {
                    CurrentPopEventTurnCount--;
                }
                MigrationIn.SetActive(false);
                MigrationOut.SetActive(false);
            }

            if (CurrentRainEventTurnCount != 0 && CurrentRainEvent < 2)
            {
                if (CurrentRainEvent == 0)
                {
                    Drought.SetActive(true);
                    Monsoon.SetActive(false);
                    CurrentRainEventTurnCount--;
                }
                else if (CurrentRainEvent == 1)
                {
                    Drought.SetActive(false);
                    Monsoon.SetActive(true);
                    CurrentRainEventTurnCount--;
                }
            }
            else
            {
                if (CurrentRainEventTurnCount > 0)
                {
                    CurrentRainEventTurnCount--;
                }
                Drought.SetActive(false);
                Monsoon.SetActive(false);
            }

            data.IncrementPopulation(10);
            data.CalculateWaterDistributionRate();
            data.IncrementFund();
            turn++;
            GenerateEvents();
            Debug.Log("Current Rain Event: " + CurrentRainEvent + ". Turn Count: " + CurrentRainEventTurnCount +
                      "| Current Pop Event: " + CurrentPopEvent + ". Turn Count: " + CurrentPopEventTurnCount +
                      "| Current Temp Event: " + CurrentTempEvent + ". Turn Count: " + CurrentTempEventTurnCount);
        }
        else if (turn == gamelength)
        {
            WinText.SetActive(true);
        }
    }
Пример #6
0
 void Start()
 {
     WinText.SetActive(false);
     LoseText.SetActive(false);
 }
Пример #7
0
 void LoseGame()
 {
     LoseText.SetActive(true);
     Time.timeScale = 0;
 }