// ConsoleApplication1.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다.
//
//#include "stdafx.h"
#include
#include
#include
//캐릭터 정보
typedef struct _캐릭터구조체정보
{
char* 이름;
int 레벨;
int 체력;
int 마력;
int 공격력;
int 방어력;
unsigned int 아이템;
}캐릭터구조체정보;
//아이템 종류
typedef enum _이넘아이템 {
아이템_빔 = 0,
아이템_무기 = 1,
아이템_갑옷 = 2,
아이템_장신구1 = 4,
아이템_장신구2 = 8
} 이넘아이템;
//상수는 대부분 대문자
#define 공격 1
#define 방어 2
#define 마법 3
#define 도망 4
#define 공격_메세지 "공격 입력 처리 호출!"
#define 방어_메세지 "방어 입력 처리 호출!"
#define 마법_메세지 "마법 입력 처리 호출!"
#define 도망_메세지 "도망 입력 처리 호출!"
//전역 함수 선언
//화면 정리
void 정리화면();
//플레이어와 적의 정보 표시
//체력 마법력 방어력 공격력 이름 레벨 아이템
void 출력캐릭터정보(캐릭터구조체정보* _정보);
//적 정보 초기화
void 리셋_적정보(캐릭터구조체정보* _정보);
//플레이어 조작 관련 정보 표시
void 출력플레이어조작정보();
//새로운 부분 추가
// 입력 및 버퍼 비우기
int 입력처리();
void 정리입력버퍼();
// 처리 -> 정보 갱신
void 입력공격처리(캐릭터구조체정보* _플레이어, 캐릭터구조체정보* _적);
void 입력방어처리();
void 입력마법처리();
void 입력도망처리();
//함수 선언부에는 '''매개변수명'''을 생략가능
//보다 가독성을 높이기 위해서 변수명을 넣는걸 추천
void 입력메인처리(
int _정수입력, //함수선언부에는 매개변수명을 생략가능하지만 보다 가독성을 높이기위해서 변수명을 넣는걸 추천
캐릭터구조체정보* _플레이어,
캐릭터구조체정보* _적
);
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
//함수 정의
void 정리화면()
{
system("@cls||clear");
}
void 출력캐릭터정보(캐릭터구조체정보* _정보)
{
if (_정보 == 0) //정보가 0이면
return; //돌아가
//포인터 멤버 접근 연산자
printf(">>> %s <<<\n", _정보->이름);
printf("* 레벨 : %d\n", _정보->레벨);
printf("* 체력 : %d\n", _정보->체력);
printf("* 마력 : %d\n", _정보->마력);
printf("* 공격력 : %d\n", _정보->공격력);
printf("* 방어력 : %d\n", _정보->방어력);
}
void 리셋_적정보(캐릭터구조체정보* _정보)
{
if (_정보 == 0) //정보가 0이면
return; //돌아가
_정보->이름 = "임나일본부의 개 아신왕";
_정보->레벨 = 1;
_정보->체력 = 100;
_정보->마력 = 10;
_정보->공격력 = 20;
_정보->방어력 = 30;
_정보->아이템 = 아이템_빔;
}
void 출력플레이어조작정보()
{
printf("-*- 수박도 액션을 선택하라카이 -*-\n");
printf("1.공격 2.방어 3.마법 4.도망\n");
}
int 입력처리(
)
{
int 정수입력 = 0;
printf(">> ");
scanf_s("%d", &정수입력);
return 정수입력;
}
void 정리입력버퍼()
{
while (getchar() != '\n');
//널문자가 아닐때까지 버퍼 빼는 함수를 반복시킴
}
void 입력공격처리(캐릭터구조체정보* _플레이어, 캐릭터구조체정보* _적)
{
printf(공격_메세지);
_적->체력 -= _플레이어->공격력;
if (_적->체력
{
_적->체력 = 0;
//적 사망
}
}
void 입력방어처리()
{
printf(방어_메세지);
}
void 입력마법처리()
{
printf(마법_메세지);
}
void 입력도망처리()
{
printf(도망_메세지);
}
void 입력메인처리(
int _정수입력,
캐릭터구조체정보* _플레이어,
캐릭터구조체정보* _적
)
{
switch (_정수입력)
{
case 공격: 입력공격처리(
_플레이어, _적
);
break;
case 방어: 입력방어처리();
break;
case 마법: 입력마법처리();
break;
case 도망: 입력도망처리();
break;
}
}
int main()
{
_wsetlocale(LC_ALL, L"korean");
wchar_t * 한글문자열 = L"한글 잘 나옵니다.";
//"한글 잘 나옵니다.";
캐릭터구조체정보 플레이어 =
{
"미소년 광키리토 호태왕", //이름
666, //레벨
2500, //체력
666, //마력
666, //공격력
666, //방어력
아이템_무기
//unsigned int 아이템;
};
//동적할당의 경우 주의해야할 부분 많음
캐릭터구조체정보* 적 =
(캐릭터구조체정보*)malloc(sizeof(캐릭터구조체정보));
리셋_적정보(적);
//입력
//그후 에 처리
//정보갱신으로 이어짐.
while (1)
{
정리화면();
출력캐릭터정보(&플레이어);
출력캐릭터정보(적);
출력플레이어조작정보();
int 정수입력 = 입력처리();
정리입력버퍼();
입력메인처리(
정수입력,
&플레이어,
적
);
}
if (적 != 0) //적이 0이 아니면
{
free(적); //해제
//널로 채우고
적 = //0;
NULL;
}
return 0;
}
오 C... 옛날 머드 게임 갬성이네.
ㅇㅇ - dc App