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
'IT > 유니티' 카테고리의 다른 글
6. 유니티 교육 (유니티 기본) (0) | 2016.07.22 |
---|---|
5. 유니티 교육 (C++로 구현한 간단한 게임) (1) | 2016.07.21 |
4. 유니티 교육 (간단한 게임 구조만들기) (0) | 2016.07.20 |
3. 유니티 교육 (구조체와 함수) (0) | 2016.07.20 |
1. 유니티 교육 (C++교육) (0) | 2016.07.18 |