본문 바로가기
[ CODING STUDY ]/》C언어 공부

C언어 24장(c언어 게임만들기_2.5, 응용 함수, 전역변수, 조건문 활용, 콘솔글자색 바꾸기, 배경색)

by MRG 2020. 6. 8.
728x90
반응형

▣ 안녕하세요 ^^
게임 잘 만들고 계신가요?
오류가 나고 많이 안 되는 부분들이 있으셨을 거라 생각합니다.
그 과정이 필요합니다.
코딩은 자꾸 틀리고 다시 읽어보고 고치고 하는 과정들이 필요합니다.
인내해 주세요~~
어느새 여러분들이 많이 성장했을 겁니다.
도움이 필요하시면 방명록이나 댓글 남겨주세요~~


▣ 오늘은 간단하게 몬스터가 등장하고 
몬스터를 공격하는 코딩을 간단하게 진행해 보겠습니다.


▣ 공부하시다가 주의하실 부분은
최적화와 코딩에 가독성을 많이 생각하지 않고,
단순히 쉽게 게임을 만든다라는 목표로 게임 만들기 장을 구성했으니 
이점 참고하시고 공부해 주세요~~
제 코딩이 정답이 절대 아닙니다!!!

 

▣ 먼저 게임 정보를 좀 더 추가해 보겠습니다.
player Hp와 공격 및 아이템 획득 문구를 추가하고 바꿔주세요.
그런 다음에 항상 중간 디버깅을 하셔서 확인하셔야 합니다. 

 

▣ 그리고 게임 씬 하나를 더 추가하겠습니다.
여기서는 몬스터가 나오게 배열을 이용해서 
그려주세요.
저는 무서운 토끼 몬스터로 했습니다. ^^
여러분들이 원하시는 몬스터로 만든 다음에 색도 넣어주세요!!
꼭 중간중간 테스트를 하셔야 합니다.

 

▣ 저도 테스트해 보겠습니다.
그럼 문에 이렇게 토끼 몬스터가 등장하는 걸 확인했습니다.
아주 그럴싸하죠?? 
아주 뿌듯하네요 ^^
여러분들도 직접 게임 씬 5가 나오는 것까지 
완성해 주세요. 

 

▣ 그런 다음에 우리가 필요한 
전역 변수들을 추가하겠습니다.
저는 우선 플레이어 HP와 몬스터 HP를 
추가했는데요.
그런데 여기서 플레이어 공격이랑 몬스터가 죽은 상태가 나타난 변수가 보이죠?


▣ 이제부터는 우리가 상태에 대한 조건문을 만들어야 합니다.
우리는 플레이어에 공격 상태를 어떻게 데이터로 주고받을지
몬스터가 죽었는지 살아있는지에 대한 데이터를 어떻게 주고받을지를 
생각해야 합니다. 
컴퓨터 스스로 알 수도 없고, 스스로 할 수 도 없기 때문에
모든 상황을 우리가 변수를 통해서 아니면 다른 메모리 저장을 통해서 
데이터를 저장해둬야 합니다. 
그리고 그걸 활용해서 
조건을 만들어줘야 합니다.
상황에 따라 말이죠.
저는 간단하게 int형으로 
0은 거짓 1은 참인 상태로 만들었습니다.
이건 여러분들이 원하시는 방법으로 상태를 변수로 만들어주세요.


▣ 너무 복잡하지 않게 정해주세요!!!
코딩이 복잡한 게 정답은 아닙니다.

 

▣ 그리고 main함수에서 키를 누르면 공격을 할 수 있게 만들어주겠습니다. 
게임 씬 5 일 때 몬스터에 HP가 1씩 줄어들고,
공격 소리가 나오게 코딩을 했습니다.
소리는 공격하는 소리 여러분들이 원하시는 소리로 가져오시면 됩니다.


▣ isMonsterDie를 살펴보면 1로 제가 값을 대입해 줄걸 볼 수 있습니다.
이걸 왜 넣었을까요??
isMonsterDie 1인 상태면 몬스터가 죽은 상태이기 때문에
공격키를 누를 수 있게 하면 안 되겠죠?
그래서 추가했습니다. 
다시 정리하면 
몬스터가 없으면 공격 버튼을 비활성화하는 것과 같다고 생각하시면 되겠네요.
허공에 공격을 하는 것 필요 없기 때문이죠.
그리고 isPlayerAttack은 플레이어가 공격했을 때
게임 씬 5에서 작동해야 하는 코딩이 있기 때문에 1에 상태를 주었습니다.
이건 상황에 따라 다르기 때문에 
다르게 코딩을 하셔도 됩니다.


▣ 변수에 활용은 여러분들이 원하시는 방법으로 하시면 됩니다. 
함수에 매개변수에 값을 전달해 주셔도 되고, 
포인터를 이용해서 하셔도 됩니다. 

 

▣ 자 이제 게임 씬 5를 수정해 볼까요?
처음에 조건문을 먼저 추가했습니다.
조건문을 살펴보면
monsterHp가 1 미만일 때,
몬스터에 죽은 상태를 1로 상태를 지정해 주었습니다.
저건 하셔도 되고 안 하셔도 되긴 합니다.
저는 나중을 위해서 만들어두었습니다.

 

▣ 그리고 배열에서 색을 넣을 때
몬스터에 HP가 0 미만이면 검은색으로 바뀌게 하여
몬스터가 HP가 0 미만일 때 죽어서 사라지는 효과로 보이게 해 주었습니다.
우리가 저번장에 했던 아이템과 동일합니다.
몬스터 HP가 아닌 몬스터 죽은 상태 변수를 이용하셔서 조건문을 만드셔도 됩니다.
코딩이 너무 길다 싶으시거나
반복되는 부분이 있어서 묶고 싶다 하시는 분은 
함수를 이용하셔도 되겠네요.

 

▣ 몬스터가 공격을 당할 때 
몬스터에 눈에 색이 바뀌는 효과도 넣었습니다.
색은 여러분들이 정하셔도 되고,
그리고 어디에 효과가 나올지도 여러분이 정하시면 됩니다. 
저는 눈을 바뀌게 했으니깐요.
만약에 효과가 나오는 게 때릴 때마다 하게 하고 싶으신 분은
배열에 색을 넣어주는 반복문을 두 개로 나누어 조건문으로 검사를 한 다음에,
두 개에 상황을 만들어주시면 되겠죠?


▣ 아니면 코딩이 너무 길어진다 생각하시면 함수로 나누셔도 되겠네요.

 

▣ 그리고 밑에 monsterHP가 표시되는 건 몬스터에 HP가 0이 미만이 아닌 상태일 때만 
나오게 했습니다.
그래야 몬스터가 죽은 상태가 되었을 때
그 몬스터에 HP도 사라져 보이겠죠?

 

▣ 이렇게 말이죠.
그럼 다시 게임 씬 4를 갔다가 게임 씬 5를 와도 
몬스터가 보이지 않는 걸 확인할 수 있습니다. 

▣ 오늘은 여기까지 몬스터가 나오게 하고 
몬스터를 공격하게 하는 코딩을 진행해 보았습니다.
아이템을 획득하는 것과 비슷하기 때문에 어렵지 않으셨을 거라 생각하지만
몬스터에 상태와 플레이어가 공격했을 때에 상태에 대한 
알고리즘을 생각하셔야 해서 
복잡하게 느끼셨을 거라 생각도 듭니다. 

▣ 너무 걱정하지 마세요. 
잘하고 계십니다. 
지금 이렇게 사고하는 게 코딩에서는 너무 중요합니다.
그리고 만약 오류가 났다면 꼭 지금까지 저희가 훈련했던 것처럼
코딩을 꼼꼼하게 읽고 고치는 연습을 하셔야 합니다. 
혹시 정말 안되시거나 질문 아니면 피드백이 필요하신 분은 댓글 남겨주세요~~
그럼 다음장에서 이어서 만들어도록 하겠습니다.


▣ 포기하지 마세요~~ 저도 했습니다~~ 파이팅!!!

728x90
반응형

댓글