Unity/수업내용(C#)

[3.9] 조건문, 반복문, 점프문 사용 예제 (스타크래프트)

ljw4104 2021. 3. 9. 17:22

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study00
{
    class Program
    {
        static void Main(string[] args)
        {
            //커맨드센터가 생성되었습니다.
            //SCV가 생성되었습니다. * 4

            Console.WriteLine("커맨드센터가 생성되었습니다.");
            Console.WriteLine("커맨드센터(1500/1500)");
            for (int i = 0; i < 4; i++)
            {
                Console.WriteLine("SCV_{0} 가 생성되었습니다(45/45)", i);
            }

            /*마린이 생성되었습니다.
             *
             * 공격력 : 2
             * 체력 : 10
             * 
             * 저글링시 생성되었습니다.
             * 공격력 : 1
             * 체력 : 5
             * 마린이 저글링을 공격(2)했습니다(3/5,1/5,0/5).
             */

            Console.WriteLine("마린이 생성되었습니다.");
            int marineHp = 10, marineAttack = 2;

            Console.WriteLine("저글링이 생성되었습니다");
            int zergHp = 5, zergAttack = 1, zergMaxHp = 5;

            for (; ; )
            {
                zergHp -= marineAttack;
                if (zergHp <= 0) zergHp = 0;
                Console.WriteLine("마린이 저글링을 공격({0})했습니다. ({1}/{2}) {3}%",
                    marineAttack, zergHp, zergMaxHp, (((float)zergHp / (float)zergMaxHp) * 100));

                if (zergHp <= 0)
                {
                    Console.WriteLine("저글링이 죽었습니다.");
                    break;
                }
            }

            int mineral = 90, gas = 200;

            Console.WriteLine("SCV가 생성되었습니다.");
            int people = 0, maxPeople = 10;
            people++;

            int requireSupplyDepot = 100;

            int n = 0;
            for (int i = 0; i <= 100; i += 5)
            {
                bool isStart = false;
                if (isStart)
                {
                    Console.WriteLine("SCV가 서플라이디팟을 건설을 시도 합니다.");
                }
                if (mineral > requireSupplyDepot)
                {
                    Console.WriteLine("SCV가 서플라이디팟을 건설합니다. {0}%", i);
                }
                else
                {
                    while (mineral < requireSupplyDepot)
                    {
                        if (n++ == 0)
                        {
                            Console.WriteLine("미네랄이 부족합니다.");
                        }
                        mineral += 8;
                        Console.WriteLine("SCV가 미네랄을 캤습니다. +8");
                        Console.WriteLine("미네랄 : {0}", mineral);
                    }
                    i -= 5;
                    isStart = true;
                }
            }

            Console.WriteLine("서플라이디팟이 완성 되었습니다.");
            mineral -= requireSupplyDepot;
            maxPeople += 8;
            Console.WriteLine("인구수 : {0}/{1}", people, maxPeople);

            ///////////////////////////////////////////////////////////////////////

            int templarEnergy = 10, maxTemplarEnergy = 55;
            int requirePsyonicStorm = 40;

            while (true)
            {
                Console.WriteLine("템플러가 지짐이를 시도합니다.");
                if (templarEnergy > requirePsyonicStorm)
                {
                    Console.WriteLine("템플러가 지졌습니다.");
                    templarEnergy -= requirePsyonicStorm;
                    Console.WriteLine("에너지 ({0}/{1})", templarEnergy, maxTemplarEnergy);
                    break;
                }
                else
                {
                    Console.WriteLine("에너지가 부족합니다.");
                    for (;templarEnergy < 50;)
                    {
                        Console.WriteLine("에너지가 충전되었습니다. ({0}/{1})", ++templarEnergy, maxTemplarEnergy);
                    }
                }
            }
        }
    }
}