ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 치명타 기능 구현하기 // 스파르타 C#문법 심화 팀과제
    게임 개발기록 2024. 5. 2. 14:08

    드디어 코드를 쳐본다. 우선 우리 팀은 팀과제를 팀장이 만들어 놓은 코드를 활용 하기로 했다. 

     

    그래서 코드를 읽고 나서 어떻게 코드를 짤까 생각을 했어야 했는데 코드 읽는 게 생각보다 쉽지가 않다.. ㅋㅋ

    읽어 보려고 시간 날렸다. 튜터님들은 어떻게 읽으면서 바로 이해를 하는 걸까.

     

    팀장님한테 코드 물어보고 설명 듣고 코드를 작성 하였다. 

     

    일단 설계 돼 있는 것은 전투 결과가 나오면서 공격 기능이 실행 되고 전투의 결과도 Console로 출력 하게 했었다. 

     

    나는 이 공격 부분을 조금 수정을 해서 치명타 기능을 넣어보도록 하겠다. 

     

     

    우선, 공격에서도 두 가지를 나눴었다. Player라면 장비공격력 추가, Monster라면 그냥 stet 공격력만 적용을 되게 했었다.

    일단 Player에만 치명타를 넣게 했다. 그래서 Player가 공격 하는 조건문 안에 코드를 추가 시켜 주었다. 

     

    일단 15%의 확률로 치명타가 발생 하게 해야 한다.

    난 처음에 숫자가 많아지면 메모리도 많아질까 생각 하면서 최대한 적은 숫자로 Random값을 뽑을까 이런 생각을 했었다.

    그래서 막 5는 20%니까 6... 이런 식으로

    예전에 tictacto 게임 만들면서 List로 Random 값을 뽑아 온 게 기억에 남아서 그랬던 것 같다.. ㅋㅋ 

     

    아무튼 Random random = new Random(); 을 만들어 주고

    int probability = Random.Next(100); 코드를 조건문 안에 넣어줘서 Mathod가 실행 될 때마다 Random한 값을 받아오게 했다. 지금은 0이 생략 되었으니 0~ 99 의 숫자 중에서 선택 되는 것이다. 

     

    그리고 15% 확률로 치명타가 터지게 해주면 된다. if( probability < 15) 조건문을 써주면 된다. 

    이 조건문 안에서 damage 계산 할 때는 ItemAtk와 StetAtk 를 합친 후에 1.6f를 곱해줘서 높은 데미지가 적용 되게 해주었다. **float 값을 연산에 사용 하면 float가 돼서 int로 형변환을 해줘야 한다.

     

    그리고 else를 써서 15보다 높은 숫자가 선택 되면 그냥 ItemAtk만 추가 되는 걸로, 

     

    이렇게 해서 치명타가 적용 되게 구현 했다. 

     

    그리고 마지막으로 치명타! 이런 Console만 나오게 까지 했다. 

     

    Mathod 실행 되는 곳에 bool critical = false; 선언을 해줘서 실행 될 때마다 bool값을 만들어 주게 한 다음에 치명타가 터지면 true로 바뀌게 해줬다. 

     

    그리고 나중에 Console 출력 하는 곳에다가 

     

    Console.WriteLine( critical? "치명타!" : "" ) 

    이렇게 삼항연산자를 사용 해서 치명타가 적용 되면 문구도 나오게 해줬다. 

     

    구현 된 모습

     

Designed by Tistory.