횽아들 지금 내가 생각하고 있는 게임인데..될지 모르겠어
베리나이(125.142)
2013-12-29 19:59
추천 0
일단 내가 군대에 있어서 프로그램을 직접 못돌려봐서
방법이 통할지 안통할지 프갤횽아들한테 물어보는 거야
지금 오브젝트랑 적들 플레이어 클래스로 짜놓은다음에
각자 핸들 가지고 있게 하고
더블버퍼링으로 할거야.
일단 멀티스레드로 해서 페인트 스레드에서
그림을 계속 그리고 있고 그 스레드가 다 그렸다고 하면 화면으로 출력하는 방식으로..
그림을 그리는 방식은
배경을 먼저 그리고 그다음에 적들 그리고
총알 그리고 플레이어를 그리게 할 건데 여기서 시간을 너무 잡아 먹으면
화면 출력이 너무 늦지 않을까 걱정도 되긴 하는데...
일단 조금 정리해서 말하자면 이래.
적,플레이어,총알,아이템 등을 클래스화
그래픽 출력 방식은 더블 버퍼링으로
멀티 스레드를 이용해서 그리는 작업과 유저의 키입력 받는 걸 분리
될거 같애?
지금 클래스는 짜났고 내부 버퍼에 그림그리는 스레드를 생각해봐서
일단 끄적여 볼 생각인데..
class Object
{
private :
Parts ObjectParts;
UINT PosX;
UINT PosY;
UINT Degree;
FLOAT SinValue;
FLOAT CosValue;
UINT LimitOfVelocity;
UINT Velocity;
public :
Object() { }
Object(Parts aObjectParts, UINT aPosX, UINT aPosY, UINT aDegree, UINT aLimitOfVelocity, UINT aVelocity) :
ObjectParts(aObjectParts), PosX(aPosX), PosY(aPosY) , Degree(aDegree) , LimitOfVelocity(aLimitOfVelocity), Velocity(aVelocity) { SinValue = (FLOAT)sin(Radian(aDegree)), CosValue = (FLOAT)cos(Radian(aDegree));}
Object(Parts aObjectParts, UINT aPosX, UINT aPosY, FLOAT aSinValue, FLOAT aCosValue, UINT aLimitOfVelocity, UINT aVelocity) :
ObjectParts(aObjectParts), PosX(aPosX), PosY(aPosY), Degree(1000), SinValue(aSinValue), CosValue(aCosValue), LimitOfVelocity(aLimitOfVelocity), Velocity(aVelocity) { }
Object(Object &Other);
Object &operator = (Object &Other);
BOOL CalcPosXY(UINT ValueX, UINT ValueY);
BOOL SetPosXY(UINT aPosX,UINT aPosY);
void SetDegree(UINT aDegree) { Degree = aDegree, SinValue = sin(Radian(Degree)), CosValue = cos(Radian(Degree)); }
void CalcDegree(UINT AddValue);
void SetSinCosValue(FLOAT aSinValue, FLOAT aCosValue) { SinValue = aSinValue, CosValue = aCosValue; }
FLOAT CalcMoveTime(UINT Time);
void SetVelocity(UINT aVelocity);
BOOL CalcVelocity(UINT AddValue);
UINT seePosX() { return ObjectParts.seePosX(); }
UINT seePosX2() { return ObjectParts.seePosX2(); }
};
일단 이게 코드 중 하나야. 오브젝트인데 이걸 적,아이템,총알 그런곳에 포함시켜서
Degree에 따라서 비트맵을 회전시켜서 출력시키게 할 거야.
어때 대충....?
좀 망상인가..
댓글 0