Exemplo n.º 1
0
        public int Run(int[] memory, PhaseSettings phaseSettings, bool feedback = false)
        {
            int final = -1;

            var a = new Amplifier("A", memory, () => phaseSettings.A);
            var b = new Amplifier("B", memory, () => phaseSettings.B);

            a.Linkto(b);
            var c = new Amplifier("C", memory, () => phaseSettings.C);

            b.Linkto(c);
            var d = new Amplifier("D", memory, () => phaseSettings.D);

            c.Linkto(d);
            var e = new Amplifier("E", memory, () => phaseSettings.E)
            {
                IsFinalStage = true
            };

            d.Linkto(e);
            if (feedback)
            {
                e.Linkto(a);
            }
            e.OnOutput += (_, i) => final = i;


            a.Post(0);

            return(final);
        }
Exemplo n.º 2
0
    public void Initialize(PhaseSettings newPhaseSettigns)
    {
        SC_KoaSpawn.Instance.InitNewPhase(newPhaseSettigns);
        curPhaseSettings = newPhaseSettigns;
        resetVariables();
        waves = newPhaseSettigns.waves;

        SC_WaveManager.Instance.InitializeWave(waves[curWaveIndex]);
    }
Exemplo n.º 3
0
        public void Challenge7Tests(string memory, int a, int b, int c, int d, int e, int expected, bool feedback)
        {
            var mem     = memory.Split(",").Select(int.Parse).ToArray();
            var setting = new PhaseSettings(a, b, c, d, e);
            var con     = new AmplifierController();

            var res = con.Run(mem, setting, feedback);

            Assert.Equal(expected, res);
        }
Exemplo n.º 4
0
    public void InitNewPhase(PhaseSettings newPhaseSettings)
    {
        int nbMaxFlock = 0;
        int nbSpawn    = 8;
        int nbWaves    = newPhaseSettings.waves.Length;

        GameObject container = Instantiate(containerPrefab);

        for (int i = 0; i < nbWaves; i++)
        {
            int nbFlock = newPhaseSettings.waves[i].initialSpawnFlock.Length;
            if (nbFlock < newPhaseSettings.waves[i].backupSpawnFlock.Length)
            {
                nbFlock = newPhaseSettings.waves[i].backupSpawnFlock.Length;
            }


            if (nbFlock > nbMaxFlock)
            {
                nbMaxFlock = nbFlock;
            }
        }

        koaTab2 = new GameObject[nbWaves, 2, nbMaxFlock, nbSpawn];

        for (int i = 0; i < nbWaves; i++)
        {
            WaveSettings curWave = newPhaseSettings.waves[i];

            for (int j = 0; j < curWave.initialSpawnFlock.Length; j++)
            {
                GameObject curKoa;
                koaTab2[i, 0, j, curWave.initialSpawnPosition[j]] = Instantiate(koaPrefab);
                curKoa = koaTab2[i, 0, j, curWave.initialSpawnPosition[j]];
                DisplaceKoaOnSpawn(curKoa, curWave.initialSpawnPosition[j]);
                StartCoroutine(GoTargetPos(i, 0, j, curWave.initialSpawnPosition[j], 700, 8f));
                curKoa.transform.SetParent(container.transform);
            }
            for (int k = 0; k < curWave.backupSpawnFlock.Length; k++)
            {
                GameObject curKoa;
                koaTab2[i, 1, k, curWave.backupSpawnPosition[k]] = Instantiate(koaPrefab);
                curKoa = koaTab2[i, 1, k, curWave.backupSpawnPosition[k]];
                DisplaceKoaOnSpawn(curKoa, curWave.backupSpawnPosition[k]);
                StartCoroutine(GoTargetPos(i, 1, k, curWave.backupSpawnPosition[k], 700, 8f));
                curKoa.transform.SetParent(container.transform);
            }
        }
        KoaCountMaster();
    }