본문 바로가기

IT/유니티

4. 유니티 교육 (간단한 게임 구조만들기)

1. 간단한 게임 구조 만들기


한 3일동안 c언어의 거의 모든것을 공부했으니까!?

공부했나? ㅋㅋ 

함수와 구조체 그리고 포인터를 공부했으니 거의 모든것을 했다고 해도 과언이 아닐것이다.

이제는 지금까지 공부한것을 토대로 간단한 게임구조를 만들어보자~~


#include<stdio.h>

#include<string.h>

#include<cstdlib>

#include<ctime>



int walkStamina = 1;

int runStamina = 3;

int weaponPoint = 1;

int damagePoint = 1;

int restPoint = 10;


//무기 이름 배열

char weaponName[4][10] =

{ "axe", "sword" ,"gun" ,"rocket" };


//------------------struct

//주인공 캐릭터의 정보를 저장할 구조체 설계

//1.이름(배열) 2.체력(정수) 3.스테미너(정수) 4.무기종류(정수) 

//5.무기내구도(정수)

struct Hero

{

char name[20];

unsigned int hp;

unsigned int stamina;

unsigned int weapon;

unsigned int weaponHp;

};


//랜덤함수

int getRandNum(int num) {

int returnValue;

returnValue = rand() % num;


return returnValue;

}


//------------------functions

//걷기(walk) 일정량의 스테미너를 감소 

void walk(Hero *hero) {

printf("\n\n걷습니다.");

hero->stamina = hero->stamina - walkStamina;

if (hero->stamina < 0) {

hero->stamina = 0;

printf("스테미나가 없어서 더이상 움직일수 없습니다.");

}

}


//달리기(run) 더많은 스테미너 감소

void run(Hero *hero) {

printf("\n\n달립니다.");

hero->stamina = hero->stamina - runStamina;

if (hero->stamina < 0) {

hero->stamina = 0;

printf("스테미나가 없어서 더이상 움직일수 없습니다.");

}

}

//공격하기(attack) 무기 내구도를 감소

void attack(Hero *hero) {

printf("\n\n공격합니다.");

hero->weaponHp = hero->weaponHp - weaponPoint;

if (hero->weaponHp < 0) {

hero->weaponHp = 0;

printf("무기가 망가져서 더이상 공격할수 없습니다.");

}

}


//공격당함(damaged) 체력을 감소

void damaged(Hero *hero) {

printf("\n\n공격당합니다.");

hero->hp = hero->hp - damagePoint;

if (hero->hp < 0) {

hero->hp = 0;

printf("사망하셨습니다.");

}

}


//영웅 초기화 함수

void initHero(Hero *hero) {

strcpy(hero->name, "MyHero");

hero->hp = 100;

hero->stamina = 100;

hero->weapon = getRandNum(4);

hero->weaponHp = 10 + getRandNum(10);


}




void showStatus(Hero *hero) {

printf("\n현재 영웅 상태");

printf("\n이름: %s", hero->name);

printf("\n체력: %d", hero->hp);

printf("\n스테미나: %d", hero->stamina);

printf("\n무기: %s", weaponName[hero->weapon]);

printf("\n무기내구력: %d", hero->weaponHp);

}

//------------------main

void main(void) {

//랜덤함수를 위한 설정

srand((unsigned)time(NULL));


//캐릭터를 만든후 데이터를 채워준다

Hero myHero;

initHero(&myHero);


//걷는다---현재상태를 출력한다

walk(&myHero);

showStatus(&myHero);


//뛴다---현재상태를 출력한다

run(&myHero);

showStatus(&myHero);


//공격한다---현재상태를 출력한다

attack(&myHero);

showStatus(&myHero);


//공격당한다---현재상태를 출력한다

damaged(&myHero);

showStatus(&myHero);



}


위 그림과는 관계없다. ㅠㅠ




영웅 구조체를 만들고, 

그 영웅의 행동을 함수로 만들어 보았습니다.

그리고 영웅이 행동을 했을대 제대로 적용되었는지 확인하기 위해서

상태확인 함수도 만들어서 적용했습니다.