원티드_언리얼RPG 2기/C++
열거형,클래스
하시무
2025. 2. 27. 17:49
열거형(enumeration)
관련된 상수들의 집합을 의미 있는 이름으로 묶어서 표현할 수 있는 데이터 타입
#include <iostream>
#include <Windows.h>
using namespace std;
enum TileType
{
EARTH, //디폴트 0부터 시작된다.
FOREST,
SWAMP
};
enum class TileType : uint8_t //2바이트씩할당을 부호가없는 정수 1바이트씩으로 변환 메모리절약
{
Earth,
Forest,
Swamp
};
struct Tile
{
int posX, posY;
//int type; 0:땅, 1.숲, 2.늪
TileType type;
char shape; //0.#, 1.^, 2. ~
};
class Car // 틀, 설계도
{
//멤버 변수(field, attribute, state, data,...)
private:
float moveSpeed;
float maxMoveSpeed;
short gear;
string color;
RECT rc;
//멤버 함수(method, 동작, 기능, 함수..)
public:
void Setup(float moveSpeed, float maxMoveSpeed, short gear, string color, RECT rc)
{
(*this).moveSpeed = moveSpeed; //인스턴스(메모리에 할당된 객체)의 주소를 말하는 this
//this->moveSpeed
this->maxMoveSpeed = maxMoveSpeed;
this->gear = gear;
this->color = color;
this->rc = rc;
}
void SpeedUp() {}
void SpeedDown() {}
void ChangeGear() {}
void Run() {}
void Draw()
{ //DeviceContext
HDC hdc = GetWindowDC(GetForegroundWindow());
Ellipse(hdc, rc.left, rc.top, rc.right, rc.bottom); //내접하는원 그리기
}
};
int main()
{
Car car1;
Car car2;
RECT rc{ 100, 100, 200, 200 };
car1.Setup(0, 5.0f, 1, "빨간색", rc);
car2.Setup(0, 10.0f, 1, "파란색", rc);
while (1)
{
car1.Draw();
Sleep(500);
}
Tile Tilemap[5][5];
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
Tilemap[i][j].posX = i;
Tilemap[i][j].posY = i;
Tilemap[i][j].type = (TileType)(rand() % 3); //명시적 형변환
//Tilemap[i][j].type = TileType::EARTH;
Tilemap[i][j].shape = '#';
}
}
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
std::cout << (int)Tilemap[i][j].type;
std::cout << Tilemap[i][j].shape;
}
std::cout << "\n";
}
}