반응형
경일게임아카데미 프로그래밍반 28기 6일차 수업 (21. 04. 15)
열거형
#include <iostream>
using namesapce std;
enum TEST
{
ZERO,
ONE,
TWO
};
void main()
{
int number[3];
number[ZERO] = 1;
number[ONE] = 3;
number[TWO] = 5;
// 위 문장을 풀어서 이해하면 number[0] = 1, number[1] = 3, number[2] = 5과 같다.
}
마리오의 현재 상태를 이용한 열거형 예제
#include <iostream>
using namesapce std;
enum MARIOSTATE
{
RIGHT_IDEL,
LEFT_IDEL,
RIGHT_RUN,
LEFT_RUN,
RIGHT_JUMP,
LEFT_JUMP
};
void main()
{
// 마리오를 이용한 예제
MARIOSTATE marioState;
marioState = RIGHT_IDEL;
if (marioState == RIGHT_IDEL)
marioState == RIGHT_RUN;
int num;
cout << "1. 왼쪽서기, 2. 오른쪽 달리기 3. 왼쪽 달리기" << endl;
cout << "마리오의 행동을 입력하세요 : ";
cin >> num;
// ERROR로 인한 주석처리
/* marioState = num; */
// 해당 문장은 각각의 형이 맞지 않아 실행되지 않는다.
// marioState는 enum 형태이므로 num 앞에 형을 명시해줘야한다.,
// 고로 아래와 같이 사용해줘야 한다.
marioState = (MARIOSTATE)num;
}
기타 꿀팁!
// 스위치 문에 enum문을 작성할때 Tab을 눌러주면 자동 완성이 된다!
switch (marioState)
{
case RIGHT_IDEL:
break;
case LEFT_IDEL:
break;
case RIGHT_RUN:
break;
case LEFT_RUN:
break;
case RIGHT_JUMP:
break;
case LEFT_JUMP:
break;
default:
break;
}
열거형의 선언
#include <iostream>
using namesapce std;
// ENUM을 꼭 0부터 사용하라는 법은 없다. 각각의 변수에 값을 대입해도 된다.
// 이하 예)
/*
enum MARIOSTATE2
{
RIGHT_IDEL = 5,
LEFT_IDEL = 3,
RIGHT_RUN = 7,
LEFT_RUN = 11,
RIGHT_JUMP,
LEFT_JUMP
};
*/
// 각각의 변수에 정수형 값을 삽입할 수도 있으며 LEFT_RUN가 11이므로 RIGHT_JUMP의 값은 12가 된다.
void main()
{
}
문자열의 길이를 반환하는 함수 strlen
#include <iostream>
using namesapce std;
void main()
{
// 1. strlen()
// 문자열의 길이를 반환해주는 함수
char str[5] = "star";
// str을 4로 설정하면 star 맨 끝에 있는 개행이 들어가지 못하므로 5로 설정해줘야 한다
// 아래는 배열에 들어간 값이다.
// star[0] = s
// star[1] = t
// star[2] = a
// star[3] = r
// star[4] = '/0'
int size = strlen(str);
cout << "문자열 길이는 : " << size << endl;
// 문법적으로는 s, t, a, r, /0이라 5라고 생각할 수 있지만 /0을 제외한 4가 맞다.
char str2[128] = "i kill you c++ SSIBAL";
int size2 = strlen(str2);
cout << "문자열 길이는 : " << size2 << endl;
}
문자열을 비교하는 함수 strcmp
#include <iostream>
using namesapce std;
void main()
{
// 2. strcmp()
// 문자열 비교 함수
// 두 문자열을 비교하여 오른쪽이 크면 -1, 왼쪽이 크면 1
// 두 문자열이 같으면 0을 반환한다.
char str3[64] = "abc";
char str4[64] = "abd";
int result = strcmp(str3, str4);
// 게임 내 정보를 세이브 파일로 불어올 때 예외처리할 떄 사용된다.
cout << result << endl;
}
문자열을 이어 붙여주는 함수 strcat
#include <iostream>
using namesapce std;
void main()
{
// 3. strcat
// 오른쪽 문자열을 왼쪽에 이어 붙여준다.
// 왼쪽 문자열은 오른쪽 문자열을 포함할 버퍼값(배열크기)를 가지고 있어야 한다
char str5[128] = "oh! ";
char str6[64] = "i'm going home!";
strcat_s(str5, str6);
cout << str5 << endl;
}
문자열을 복사해주는 함수 strcpy
#include <iostream>
using namesapce std;
void main()
{
// 4. strcpy
// 오른쪽의 문자열을 왼쪽으로 복사해준다.
// 당연히 왼쪽 문자열 버퍼가 오른쪽 문자열 보다 크거나 같아야 한다
char str7[6] = "apple";
char str8[6];
strcpy_s(str8, str7);
cout << str7 << endl;
// 예) 문자열 뒤집기
char str9[128];
cin >> str9;
// 바나나를 입력한다고 하자.
// str[0] = 'b' str[0] = '\n'
// str[1] = 'a' str[0] = 'a'
// str[2] = 'n' str[0] = 'n'
// str[3] = 'a' str[0] = 'a'
// str[4] = 'n' str[0] = 'n'
// str[5] = 'a' str[0] = 'a'
// str[6] = '\n' str[0] = 'b'
for (int i = strlen(str9) - 1; i >= 0; i--)
{
cout << str9[i];
}
}
문제. 문자열 중 짝수번째만 거꾸로 출력하기
1. 문자열을 입력받아라
2. 입력받은 문자열중 짝수번째 문자만 꺼구로 출력되게 하라
예) a, b, c, d, e => a, d, c, b, e
#include <iostream>
using namesapce std;
void main()
{
char str10[128];
cin >> str10;
// 서순 출력
cout << "서순 출력 : ";
for (int i = 0; i < strlen(str10); i++)
{
cout << str10[i];
}
cout << endl;
// 짝수번째 문자만 거꾸로 출력 [선생님]
cout << "짝수번째 문자만 거꾸로 출력 : ";
for (int i = 0; i < strlen(str10); i++)
{
// 짝수번째 문자열이면 == 홀수번째 배열 인덱스
if (i % 2 == 1)
{
if (strlen(str10) % 2 == 0)
{
// 5에서 뺴느냐
cout << str10[strlen(str10) - i];
}
else
{
// 6에서 뺴느냐
cout << str10[strlen(str10) - i - 1];
}
}
// 홀수번째 문자열이면 == 짝수째 배열 인덱스
else
{
cout << str10[i];
}
}
// 짝수번째 문자만 거꾸로 출력 [선생님것 보고]
cout << "짝수번째 문자만 거꾸로 출력 : ";
for (int i = 0; i < strlen(str10); i++)
{
if (i % 2 == 1)
{
// strlen 참조 대상 배열이 짝수인 경우
if (strlen(str10) % 2 == 0)
{
cout << str10[strlen(str10) - i];
}
// strlen 참조 대상 배열이 홀수인 경우
else
{
cout << str10[strlen(str10) - i - 1];
}
}
else
{
cout << str10[i];
}
}
cout << endl;
// 짝수번째 문자만 거꾸로 출력 [스스로]
cout << "짝수번째 문자만 거꾸로 출력 : ";
for (int i = 0; i < strlen(str10); i++)
{
if (i % 2 == 1)
{
if (strlen(str10) % 2 == 0)
{
cout << str10[strlen(str10) - i];
}
else
{
cout << str10[strlen(str10) - i - 1];
}
}
else
{
cout << str10[i];
}
}
}
삼항연산자
#include <iostream>
using namesapce std;
void main()
{
// 삼항연산자
// 항이 3개여서 삼항 연산자라고 한다
// 문법 구조는
// 조건 ? 참 : 거짓
// 조건이 참일때 참 영역이 실행되고 아니면 거짓 영역이 실행됨
cout << endl << endl;
int luckynum = 7;
luckynum == 7 ? cout << "yes" : cout << "no";
}
반응형
'학원 > 경일게임아카데미' 카테고리의 다른 글
10. 일곱번째 수업 (0) | 2022.12.09 |
---|---|
9. 여섯번째 수업과제 [0을 움직여라 게임 제작] (0) | 2022.12.04 |
7. 다섯번째 수업 과제 [카드게임 제작] (0) | 2022.12.02 |
6. 다섯번째 수업 (0) | 2022.12.01 |
5. 네번째 수업 과제 [1인 빙고게임 제작] (0) | 2022.11.30 |