본문 바로가기

정리 카테고리/실습_과제

Unity-5일차 실습-과제 (02-26)

1. 과제 내용: 스스로 조건 만들고  결과보기(int, float, for, if, bool 을 활용)


 (요구 사항)

 -보스몬스터의 이름을 "큰 곰"으로 한다.

 -보스몬스터를 연속공격을 통해 총 10회 데미지를 준다.

 -공격중 크리티컬이 발동할 확률은 20%

 -크리티컬의 추가 데미지는 1~20%이다.

 -공격을 받은 이후 보스몬스터는 10%확률로 체력을 회복한다.

 -회복이후 현재 보스몬스터의 체력을 보여준다. 


(요구 사항에 필요한것들)

 -보스몬스터의 이름을 "큰 곰"으로 한다. => 보스몬스터의 이름을 저장하여 활용 한다.(=문자열 함수 활용)

 -보스몬스터를 연속공격을 통해 총 10회 데미지를 준다. => 10회 반복하여 공격을 한다. (=반복 동작은 반복문을 활용)

 -공격중 크리티컬이 발동할 확률은 20% => 랜덤으로 나오는 수를 20%확률이 되도록 비교한다.(=비교확인을 위한 bool과 조건문 활용) 

 -크리티컬의 추가 데미지는 1~20%이다. => 랜덤으로 1~20이 나오도록 한후 기본 공격력에 추가계산한다.

 -공격을 받은 이후 보스몬스터는 10%확률로 체력을 회복한다. => 랜덤을 활용하여 확률이 20%가 될수 있도록 한다.

 -회복이후 현재 보스몬스터의 체력을 보여준다. => 체력의 변화를 저장할 공간이 필요하다.(=체력을 위한 변수)


+확률을 쓸때 숫자를 1부터 100까지 출력하고 그중 당첨이 되는 숫자의 수를 확률로 활용했습니다.

       (예를들어 100개중 20개가 당첨이면 20%확률) %(나머지를 0으로 체크)로 개수를 정할수 있습니다.

       bool test = (랜덤의 숫자 % 5 == 0);  이러면 5의 배수가 당첨숫자입니다.(5의 배수 == 100개중 20개)   


2.결과 화면:





3.소스 코드:

    
        void Start () {

        string monNam = "큰 곰";//보스 몬스터 이름
        float monHP = 30000;    //보스 몬스터 체력
        int damage = 220;       //기본 데미지
        float monPlu = 19.9f;   //회복량
        var criDam = 0;         //크리티컬이 20%
        var criPer = 0;         //추가 데미지 1~20%
        var pluPer = 0;         //회복 10%
        bool perChek;           //확률 체크 (참,거짓)

        Debug.Log("보스 몬스터"+monNam+"을 사냥합니다.");
        Debug.Log("보스 몬스터" + monNam + "을 연속공격 스킬 10회가격합니다.");
        for(int i=1; i < 11; i++)
        {
            Debug.Log(i + "번째 공격을 합니다.");
            //크리티컬발동 활률을 위한 랜덤
            criDam = Random.RandomRange(1, 101);
            perChek = (0 == (int)criDam % 5);
            if (perChek)
            {
                Debug.Log("크리티컬 발동!!!!");
                //추가 데미지 계산을 위한 랜덤
                criPer = Random.RandomRange(1, 21);
                Debug.Log(criPer+"%추가 데미지가 들어갑니다.");
                monHP = monHP - damage - (damage * criPer / 100);
                Debug.Log((damage + (damage * criPer / 100)) + "데미지를 주었습니다.");
            }
            else
            {
                monHP = monHP - damage;
                Debug.Log(damage + "데미지를 주었습니다.");
            }
            //회복 확률을 위한 랜덤
            pluPer = Random.RandomRange(1, 101);
            perChek = (0 == (int)criPer % 10);
            if (perChek)
            {
                Debug.Log("보스 몬스터" + monNam + "가 회복합니다.");
                monHP = monHP + monPlu;
            }

            Debug.Log(monNam+"의 현재 체력은 " + (int)monHP + " 남았습니다.");
        }



    }