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

C언어 25장(c언어 게임만들기_3, 배열응용, 응용 함수, 전역변수, 조건문 활용, 반복문, 콘솔글자색 바꾸기, 배경색)

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

▣ 안녕하세요 ^^ 
저번장 숙제는 다해보셨나요?
이제 게임에 틀이 거의 완성되어 가고 있네요.
오늘은 플레이어가 몬스터를 죽이면
경험치가 오르고 레벨업을 하는 
아주 간단한 함수를 구현해 보겠습니다. 

▣ 매 장마다 말씀드리지만, 
제가 만든 코딩이 정답이 아닙니다.
정말 쉽게 게임을 만들기 위해서
가독성과 최적화를 생각하지 않고 만들었기 때문에,
이점 참고해주시고 
공부하면서 여러분들만에 코딩으로 바꿔서 게임을 만들어보세요.

 

▣ 먼저 게임 정보 함수에 플레이어에 레벨과 
경험치를 표현해주는 함수를 추가해 보겠습니다.
경험치를 함수 표현한 하는 이유는 
우리가 경험치 게이지를 배열로 표현해야 하기 때문입니다. 

 

▣ 경험치게이지를 배열로 만들어서 색을 넣고 표현했습니다.
경험치에 변수값에 따라 반복하게 하게 하는 형식으로 진행했습니다.
경험치가 1이면 한번 반복하기 때문에,
한 개만 색을 넣어주겠죠?
두 번이면 두 개만 
그렇기 때문에 경험치가 오르는 걸 표현할 수 있습니다.
경험치 변수는 전역 변수로 진행했습니다. 
함수 매개변수나 포인터로 하셔도 됩니다. 
그리고 함수에 마지막에 꼭 다시 색을 초기화하는 거 잊지 마세요.

 

▣ 그리고 꼭 함수를 선언해 주는 것 잊지 마세요.
전역 변수로 플레이어에 레벨과 경험치를 만들었습니다. 

 

▣ 자 이제 디버깅을 해서 확인을 해보면
게임 정보에 플레이어 레벨과
경험치 게이지가 노란색으로 표현되어 있는 걸 확인할 수 있습니다.
아주 멋집니다.  ^^
혹시 안되다 하시는 분은 
게임 정보 함수에서
경험치 게이지를 올려주는 함수를 호출하는 코딩에 위치를 꼭 확인해 주세요.

 

▣ 자 이번에는 몬스터를 죽였을 경우 레벨업을 하는 함수를 만들어보겠습니다. 
함수를 하나하나 해석해 보면,
몬스터가 죽는 순간 플레이어 경험치가 +1이 되고
소리가 나온 다음에
만약에 경험치가 2가 되면 레벨업을 하고 
다시 경험치가 1로 바뀌게 됩니다.
그런 이유는 레벨업을 했을 때
경험치가 이어지는 게 아닌 다시 처음부터 경험치를 올려야 하기 때문에
초기화를 해준 겁니다.
그리고 조건문에 값을 2로 한 이유는
시험 삼아 한번 몬스터를 죽이면 레벨업 변수가 바뀌는지를 확인하기 위해서 이렇게 
코딩을 한 것입니다. 


▣ 우선 우리가 테스트해야 할 건 먼저 경험치가 잘 오르는지 확인하겠습니다.
그럼 조건문에 값을 바꿔야겠죠?
> 3으로 바꿔 주 주세요.

 

▣ 그럼 다시 몬스터가 있는 게임 씬에 
조건문으로 레벨업 함수를 몬스터가 죽었을 경우에 호출하게 하고
디버깅을 해서 확인해 보겠습니다.

 

▣ 그럼 이렇게 몬스터를 죽으면,
경험치가 오르는 걸 확인할 수 있습니다. 
신기하고 재미있죠? ^^
그리고 이번에는 경험치가 아닌 레벨업을 할 수 있게도 바꿔서 
테스트를 한번 꼭 해보세요.

 

▣ 자 마지막으로 이번에는 몬스터가 있는 게임신을 더 추가해 보도록 하겠습니다. 
먼저 똑같이 게임 씬 6을 만들어줍니다.
게임 씬 5에는 몬스터와 다르게 보이게 하게 위해서
몬스터에 눈에 색을 바꿔주었습니다.
저는 그리고

 

▣ 이렇게 게임씬 5에 있는 몬스터 1과 추가할 게임 씬 6에 있는 몬스터 2에 상태와 HP를 나타내는
전역 변수를 만들었습니다.
당연히 둘에 HP와 상태를 같은 전역 변수로 공유하게 되면
게임 씬 5가 죽었을 경우, 
게임 씬 6에 있는 몬스터가 죽은 상태로 나오게 되겠죠?
그러면 안 되기 때문에,
변수를 따로 나누었습니다.



▣ 그런데 이게 정답은 아닙니다.
사실 전역 변수로 만들지 않고,
정적 변수나 지역변수, 포인터를 통해서나 매개변수로 해줄 수도 있지만,
우리는 쉽게 만들기 위해서 가독성이 떨어지는
전역 변수를 사용하겠습니다.
그렇다고 이 방법이 틀린 건 아닙니다. ^^;;
그러나 꼭 이렇게 하실 필요도 없습니다. ^^;;
코딩은 정답이 없기 때문이죠.

 

 

▣ main함수에서 키를 눌렀을 때 작동하는 반복문에서
게임 씬 5와 게임 씬 6에 대한 조건문과 전역 변수를 바꿔줍니다. 
변수 이름이 바뀌었기 때문에 당연히 바꿔줘야겠죠?

 

▣ 그리고 이렇게 게임 씬 6 함수도 선언해주어야 합니다. 

 

▣ 코딩을 마쳤으면 디버깅을 하여 이제 확인을 해보겠습니다. 
5 지역에 가서 몬스터를 죽이면 이렇게 경험치가 
오르는 걸 확인할 수 있습니다. 
그리고

 

▣ 6 지역에서 몬스터를 죽이면 
레벨업을 하고 다시 경험치가 1로 돌아오는 걸 확인할 수 있습니다. ^^
아주 재미있네요 ^^


▣ 자 이렇게 오늘은 몬스터를 죽이면 
경험치가 오르고 레벨업이 하는 걸 구현해 보았습니다.
위에 있는 코딩들은 참고만 하시고,
여러분들에 창의적인 생각으로 
멋진 게임을 만들어보세요.


▣ 제가 c언어 게임을 간단하게 만들면서
너무 일이 커져버렸네요 ^^
사실 간단하게만 만들고 끝내려고 했는데
욕심이 생겨서 여기까지 왔네요.
어디까지 구현을 해야 할지는 고민이지만,
그래도 생각날 때마다 더 추가하여 만들어 
올리도록 하겠습니다. 

▣ 질문 있으시거나 게임을 만들다가 피드백이 필요하신 분은
댓글 남겨주세요 ^^
그럼 다음장에서 뵙겠습니다. 

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

728x90
반응형

댓글