본문 바로가기

IT/유니티

2. 유니티 교육 (C++교육)

1. 배열


어제 공부한거에 이어서 오늘은 배열에 대해서 학습해보겠습니다.

C++과정은 비쥬얼 스튜디어 2015에서 실행했습니다.


#include<stdio.h>


void main(void) {


//여러개의 변수를 묶어 놓은것 (배열)

//들어가는 데이터의 종류는 다양함. 대신 같은 종류로만 가능함.

//크기는 자유이지만, 메모리가 어느정도 허락하는 선을 지키는것이 좋음.

char Data[5] = { 'A','B', 'C', 'D', 'E' };


//배열에는 각각의 위치번호가 붙는데 이것을 이용하면, 아래와 같이 데이터를 지정할수 있다.

printf("%c %c %c %c %c ", Data[0], Data[1], Data[2], Data[3], Data[4]);



int numData[5] = { 100, 200, 300, 400, 500 };


printf("%d %d %d %d %d ", numData[0], numData[1], numData[2], numData[3], numData[4]);



float floatData[5] = { 10.1, 20.2, 30.3, 40.4, 50.5 };


printf("%.1f %.1f %.1f %.1f %.1f ", floatData[0], floatData[1], floatData[2], floatData[3], floatData[4]);


//반복문으로 처리하자.

for (int i = 0; i < 5; i++) {


//배열에는 각각의 위치번호가 붙는데 이것을 이용하면 아래와 같이 데이터를 지정할수 있다.

//배열의 방번호는 고정적인것이 아니라, 변수를 사용하는 것이 가능하다.

//변수를 사용하는 것뿐만 아니라, 수식을 사용하는 것도 가능하다.

printf("\n%c", Data[i]);

}


//while문도 한번 해보자

int loop = 0;

while (loop < 5) {

printf("\n%.1f", floatData[loop]);

++loop;

}



//게임에 적용한다면, 무엇을 할수 있을까?

//검색패턴을 만들어 보자!


//구조체를 이용해서 인벤토리를 만들어보자

//Sword, Gun, Rocket, Laser, Plasma

struct weapon {

char *name;

char id;

double attack;

};


weapon wInven[5] = { {"Long Sword",'S', 17.8},{"Short Gun", 'G', 74.3 }

,{"Destroy", 'R', 62.3 },{"Tearer", 'L', 24.0 },{"Cutter", 'P', 40.5 }, };


char searchWord = 'G';


for (int i = 0; i < 5; i++) {

if (wInven[i].id == searchWord) {

printf("\n%s power is %.1f",wInven[i].name , wInven[i].attack);

}

}


//게임에서 키보드를 누르면 특정무기로 바뀌는 것

char keyboard;

printf("\n원하는 무기를 선택해주세요(S/G/R/L/P)");

scanf("%c", &keyboard);


//문자열을 출력할때는 %s로 출력한다. 배열의 마지막까지 출력한다.

//즉 'p'와 "p"는 1바이트와  2바이트로 차이가 나며,

//"p"는 보이지는 않지만 마지막에 0에 들어가서 그 문자열이 끝나는지점을 지정해준다.

for (int i = 0; i < 5; i++) {

if (wInven[i].id == keyboard) {

printf("\n당신이 선택한 무기는 %s입니다.", wInven[i].name);

}

}


switch (keyboard)

{

case 'S': {printf("You choose a sword"); break; }

case 'G': {printf("You choose a gun"); break; }

case 'R': {printf("You choose a rocket"); break; }

case 'L': {printf("You choose a laser"); break; }

case 'P': {printf("You choose a plazma"); break; }


default:

break;

}


printf("\n");


if (keyboard == 'S') {

printf("You choose a sword");

}

else if (keyboard == 'G') {

printf("You choose a gun");

}

else if (keyboard == 'R') {

printf("You choose a rocket");

}

else if (keyboard == 'L') {

printf("You choose a laser");

}

else if (keyboard == 'P') {

printf("You choose a plazma");

}


for (int i = 0; i < 5; i++) {

if (wInven[i].id == keyboard) {

printf("\nThis weapon power is %.1f", wInven[i].attack);

}

}


}



(배열을 게임에서 이용한다면 아래와 같이 이용해서 퍼즐 게임을 만들수도 있을것이다.)





배열을 이용해서 디아블로의 벨트를 만들어 볼까요?


//디아블로의 물약벨트를 만들어보자

char belt[2][3] =

{

//첫번째 벨트에 있는 물건

{ 'a', 'b', 'c' },

//두번째 벨트에 있는 물건 

{ 'd', 'e', 'f' }

};


int beltNum;


printf("\n몇번째 벨트를 확인하시겠습니까? (1/2)");

scanf("%d", &beltNum);


for (int i = 0; i < 3; i++) {

printf("%c ", belt[beltNum - 1][i]);

}



2중 배열을 이용해서 벨트와 같은 구조를 만들어 보았습니다.



2. break와 continue




//break의 이용. 게임에서 이용한다면, 연속기의 캔슬등에 적용할수 있다.

int loop = 1;


while (loop <= 10) {

if (loop == 5) {

//while문을 중단하고 나온다.

break;

}

loop++;

printf("%d", loop);

}

//탈출위치




//continue 라는 특수한 명령어 (반복문에서 사용하는 전용 명령어)

int loop = 1;


while (loop <= 10) {

if (loop == 5) {

//절취선 이하는 실행하지 않는다. 

continue;

}

//---------------------------------------

loop++;

printf("%d", loop);

}


//크리티컬을 구현할때 사용할수 있을꺼 같다.

//특정상황일때만 어떤 특정행동을 하게 한다.

//continue 이용해서 1234678910을 찍어보자

int loop = 1;


while (loop <= 10) {

if (loop == 5) {

loop++;

continue;

}

printf("%d", loop);

loop++;

}



자료형마다 한계치가 있다.

int의 한계치는 -2147483647 ~ 2147483648