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

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

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


▣ 안녕하세요 ^^
저번장까지에 내용을 활용하여 게임 잘 만들어보셨나요?
지금까지 포기하지 않고 열심히 달려오신 분은
분명 많이 실력이 늘었을 거라 생각합니다.
코딩은 무언가 만들어갈 때 실력이 가장 빠르게 향상됩니다. 
그러니 포기하지 마시고 끝까지 진행해 주세요.


▣ 그럼 오늘은 플레이어가 레벨업을 하면 
파워가 오르고 
그 파워에 따라 몬스터한테 공격을 할 수 있고,
그리고 몬스터가 랜덤으로 우리가 공격했을 때 
아니면 몬스터가 살아있는 게임씬함수로 호출될 때 우리를 공격하는 코드를 간단하게 해 보겠습니다. 


▣ 다시 말씀드리지만, 
제 코딩이 정답이 아닙니다. 
저는 정말 쉽게 만들자라는 생각으로 
만들었습니다.
그러니 코드에 활용과 최적화 그리고 가독성을 
생각하시면서 여러분들만에 게임코딩을 만들어주세요.
제가 만든건 참고만 해주세요 ^^

 

▣ 먼저 전역변수에서 
플레이어 파워라는 변수를 만들어주겠습니다.
전역 변수로 하는 이유는 모든 게임 씬 함수에서 
플레이어 파워를 사용해야 하기 때문입니다.
당연히 매개변수나 포인터로 하셔도 됩니다.

 

▣ 그런 다음에 몬스터를 만나는 
게임 씬에서 e 키를 누르면 이제 1이 아닌 
플레이어에 파워에 따라 HP가 떨어지게 코딩으로 바꿔줍니다. 

 

▣ 그리고 우리가 현재 플레이어에 파워를 알아야 하기 때문에
게임 정보 함수에서 플레이어 파워 게이지를 보이게 printf함수를 추가해 줍니다.
그럼 이렇게 옆에 playerPower가 잘 보이죠??

 

 

▣ 그럼 이제 레벨업을 하면 파워가 +1 되게 코딩을 바꿔줘야 합니다.
LvUP함수에서 레벨업을 했을 경우 playerPower변수가 오르게 코딩을 추가해줍니다.
테스트를 위해서 경험치가 2가 되면 레벨업을 하게 만들어주세요.

 

▣ 그리고 디버깅을 해서 테스트를 해봅니다.
그럼 몬스터를 쓰러뜨리면 레벨업을 하고 
파워가 오르는 걸 확인할 수 있습니다. 

 

▣ 그리고 다음 게임 씬으로 가서 몬스터를 공격하면 
이렇게 파워 따라 몬스터 HP가 깎이는 걸 볼 수 있습니다.
드디어 레벨업 부분도 코딩을 마쳤네요 ^^
이건 여러분들이 원하시는 방향으로 레벨을 디자인해주세요.


▣ 그럼 이제 몬스터가 공격하게 해 보겠습니다.
이건 하나하나 그래픽을 넣고 하게 하지 않고
랜덤 함수로 간단하게 
우리가 e로 공격했을 경우나 
몬스터가 살아있는 상태에서 그 해당 게임 씬으로 갔을 경우
랜덤 함수를 활용하여 랜덤 함수에 값이 우리가 정한 값이랑 동일하면
우리에 HP가 떨어지고 몬스터가 공격했다는 
문구가 나오게 만들어보겠습니다. 

 

▣ 먼저 랜덤 함수에 시드 값을 
계속 바꾸기 위해서 time.h를 추가해줍니다.
혹시 랜덤에 대해서 모르시는 분은
랜덤 함수를 배우는 장을 꼭 공부하시고 와주세요.

 

 

▣ 그리고 전역 변수에서 몬스터에 공격 상태를 나타내 주는 변수를 만듭니다.
랜덤으로 했을 경우 그 값이 1이 나오면 몬스터가 공격을 하는 방식으로 만들 겁니다.
간단하게 이야기해서 monsterAttack변수 값이 1이 되면 공격인 것입니다.
그리고 main함수에서 시드 값을 계속 바꿔주기 위해서 이렇게 코딩을 해줍니다. 
그럼 시간에 따라 시드 초기값이 바뀌겠죠?
그런 다음에

 

▣ e키를 눌렀을 때에 코딩에 순서를 바꿔줍니다.
우리가 전에는 뒤죽박죽으로 코딩을 해서 e를 눌러도 먼저 HP가 떨어지지 않는 현상이 있었습니다.
그건 프로그램에 순차적 원리를 생각하지 않고 코딩을 했기 때문에
이렇게 소리부터 시작해서 변수 값을 떨어뜨리는 것부터 진행한 후에 함수를 호출하면
그 문제가 해결이 됩니다.

 

▣ 그리고 몬스터가 있는 게임 씬 함수로 가서 
만약 몬스터가 죽지 않았을 경우 
몬스터에 HP를 출력해주는걸 다시 코딩을 수정합니다.
혹시 버그를 대비해 &&를 사용해서
두 변수가 참일 경우로 조건문을 바꿨습니다.
그리고 그 안에서
몬스터 공격 상태 값을 랜덤으로 했을 경우 1~5중에서 1에 값이 나오면
플레이어에 HP가 떨어지고 
몬스터에게 공격당했다는 문구가 나오게 코딩을 해줍니다.
그럼 몬스터가 죽지 않을 경우
그 게임 신을 호출했을 때 1이 되면
자동으로 공격하는 것처럼 코딩이 완성되겠죠?


▣ 밑에서 몬스터가 죽었을 경우 플레이어가 공격한 상태에서만 
LvUP함수를 호출하게 코딩을 해줍니다.
이렇게 하지 않으면 무조건 몬스터가 죽더라도 해당 씬에 함수를 호출했을 때 
계속 레벨업을 합니다.
그러니 이렇게 조건문 변경해주세요.

 

▣ 다음에 게임 씬 6 함수도 동일하게 고쳐주시고

 

▣ 테스트를 해보겠습니다.
디버깅을 해서 몬스터가 나오는 씬에서 
공격을 하면 랜덤으로 공격을 당하는 걸 확인할 수 있습니다.
그리고 몬스터가 살아있을 경우에는 게임씬 5와 6일 이동할 때
랜덤으로 몬스터한테 공격을 당할 수 도 있습니다.
아주 그럴싸합니다.
우리가 자동 NPC를 만든 겁니다. ^^
이게 기초라고 생각하시면 됩니다. 

 

▣ 저는 이렇게 게임 씬 6까지 
어렵게 HP 40 남기고 클리어를 했습니다. ^^
여러분들도 여러분들이 원하시는 레벨 디자인으로 만들어서 진행해 주세요.


▣ 자 오늘은 이렇게 플레이어에 파워와 
몬스터에 공격을 구현해 보았습니다.
이제 많이 게임다워졌네요 ^^
아주 재미있습니다.
여러분들도 여러분들만에 게임을 잘 만들고 계시죠??
혹시 게임을 만들다가 피드백이 필요하시거나
질문이 있으시면 댓글 남겨주세요 ^^
그럼 다음장에서 뵙겠습니다.



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

728x90
반응형

댓글