// 캐릭터의 스테이트를 정의 //
void Char_State(Base_Character &chara)
{
if (!chara.isJumpEnd);
else if (KEY_DOWN(VK_SPACE)) // 스페이스 키 : 점프
{ chara.state = JUMP;
if (KEY_DOWN(VK_RIGHT)) chara.state = JUMP_RIGHT; // 동시에 눌린 경우 : 우방점프
else if (KEY_DOWN(VK_LEFT)) chara.state = JUMP_LEFT; // 동시에 눌린 경우 : 좌방점프
Last_Frame_Jump = Frame; chara.isJumpEnd = false;} //점프 시도한 프레임을 저장.(lastframejump)
else if (KEY_DOWN(VK_RIGHT)) // 오른쪽 화살표 키
{ chara.state = MOVE_RIGHT; chara.Way_4 = MOVE_RIGHT;
if (chara.isMoveRightEnd) { chara.isMoveRightEnd = false; if (!chara.isDash) chara.Last_Frame_Move_RIGHT = Frame; }
if (KEY_DOWN(VK_SPACE)) chara.state = JUMP_RIGHT;}
else if (KEY_DOWN(VK_LEFT) ) // 왼쪽 화살표 키
{ chara.state = MOVE_LEFT; chara.Way_4 = MOVE_LEFT;
if (chara.isMoveLeftEnd) { chara.isMoveLeftEnd = false; if (!chara.isDash) chara.Last_Frame_Move_LEFT = Frame; }
if (KEY_DOWN(VK_SPACE)) chara.state = JUMP_LEFT; }
else { chara.state = NONE; chara.isDashEnd = true; chara.isMoveRightEnd = true; chara.isMoveLeftEnd = true; }// chara.Speed = 3;
// 대쉬시 스피드. 수정요망 //
if (!chara.isDashEnd) chara.Speed = 5; else chara.Speed = 2;
// 대쉬플래그 세우기 (우로) : 한번 우키 입력 / 끊김 / 20프레임내 다시 입력 //
if (chara.Last_Frame_Move_RIGHT > 0) // 만약 라스트 프레임이 0보다 크다면!
{ if (Frame - chara.Last_Frame_Move_RIGHT >= 1 && Frame - chara.Last_Frame_Move_RIGHT <= 6)
if (!KEY_DOWN(VK_RIGHT)) //만약 프레임차이가 20보다 작을때 오른쪽 키가 안눌려졌다
chara.isDash = true; //그러면 대쉬 플래그가 선다
if (chara.isDash) // 안눌려진 후 12프레임 안에 다시 눌렸을때 그리고 다시 안눌렸을때 플래그 조절
{ if (Frame - chara.Last_Frame_Move_RIGHT <=12)
{ if (KEY_DOWN(VK_RIGHT)) { chara.isDashEnd = false; chara.isDash = false; chara.Last_Frame_Move_RIGHT = 0;} }
else {chara.isDash = false; chara.isDashEnd = true; chara.Last_Frame_Move_RIGHT = 0;} }
}
// 대쉬플래그 세우기 (좌로) : 한번 좌키 입력 / 끊김 / 20프레임내 다시 입력 //
if (chara.Last_Frame_Move_LEFT > 0) // 만약 라스트 프레임이 0보다 크다면!
{ if (Frame - chara.Last_Frame_Move_LEFT >= 1 && Frame - chara.Last_Frame_Move_LEFT <= 6)
if (!KEY_DOWN(VK_LEFT)) //만약 프레임차이가 20보다 작을때 오른쪽 키가 안눌려졌다
chara.isDash = true; //그러면 대쉬 플래그가 선다
if (chara.isDash) // 안눌려진 후 12프레임 안에 다시 눌렸을때 그리고 다시 안눌렸을때 플래그 조절
{ if (Frame - chara.Last_Frame_Move_LEFT <=12)
{ if (KEY_DOWN(VK_LEFT)) { chara.isDashEnd = false; chara.isDash = false; chara.Last_Frame_Move_LEFT = 0;} }
else {chara.isDash = false; chara.isDashEnd = true; chara.Last_Frame_Move_LEFT = 0;} }
}
}
// 캐릭터 초기화 //
void Init_Char(Base_Character &chara)
{
chara.positionX = 0; chara.positionY = 0; chara.Speed = 2; chara.isCols = false;
chara.Large_X = 23; chara.Large_Y = 32; chara.Way_4 = MOVE_RIGHT; chara.state = NONE;
chara.isMove = false; chara.isDash = false; chara.isJumpEnd = true; chara.isMoveRightEnd = true;
chara.isMoveLeftEnd = true; chara.isDashEnd = true;
chara.STREN = 5; chara.INDUR = 4; chara.VITAL = 5; chara.LEVEL = 1;
chara.EXP = 0; chara.HP = 100; chara.MP = 50;
chara.ATK = chara.STREN*10; chara.DEF = chara.INDUR*10; chara.SPI = 10;
chara.Last_Frame_Move_LEFT = 0; chara.Last_Frame_Move_LEFT = 0;
}
// 무기에 대한 정보 //
void Init_Weapon(Base_Weapon &weapon)
{
weapon.Attack_Range_X = 0; weapon.isSwing = 0; weapon.positionX = 0; weapon.positionY = 0;
weapon.Speed = 0; weapon.state = 0;
}
// 적에 대한 정보 //
void Init_Enemy(Base_Enemy &enem) // 적1
{
enem.positionX = (VGfloat)Full_Screen_X-300; enem.positionY = 0; enem.Speed = 2; enem.isCols = false;
enem.Large_X = 23; enem.Large_Y = 32; enem.Way_4 = MOVE_RIGHT; enem.state = NONE;
enem.isMove = false; enem.isDash = false; enem.isJumpEnd = true; enem.isDmgdEnd = true;
enem.STREN = 5; enem.INDUR = 4; enem.VITAL = 5; enem.LEVEL = 1;
enem.EXP = 0; enem.HP = 100; enem.MP = 50;
enem.ATK = enem.STREN*10; enem.DEF = enem.INDUR*10; enem.SPI = 10;
}
void Init_Enemy_2(Base_Enemy &enem) // 적2
{
enem.positionX = (VGfloat)Full_Screen_X-220; enem.positionY = 0; enem.Speed = 2; enem.isCols = false;
enem.Large_X = 23; enem.Large_Y = 32; enem.Way_4 = MOVE_RIGHT; enem.state = NONE;
enem.isMove = false; enem.isDash = false; enem.isJumpEnd = true; enem.isDmgdEnd = true;
enem.STREN = 5; enem.INDUR = 4; enem.VITAL = 5; enem.LEVEL = 1;
enem.EXP = 0; enem.HP = 100; enem.MP = 50;
enem.ATK = enem.STREN*10; enem.DEF = enem.INDUR*10; enem.SPI = 10;
}
// 충돌체크 //
bool Check_Cols_Fscreen(Base_Character &chara) // 전체화면 충돌 체크
{ if (chara.positionX > Full_Screen_X-50) {chara.isCols = true;}
else if (chara.positionX < 0) {chara.isCols = true;}
return chara.isCols;
}
// 충돌 체크 //
VGfloat Cols_Fscreen_Solve(VGfloat positionX, bool isCols)
{ return positionX; }