void CChar::ballMove(int MouseX, int MouseY)
{
for(int i=0;i<50;i++)
{
if(MouseX >0 && MouseX<341 && MouseY>0 && MouseY<256)
{
ShotAttack[i].x-=2;
ShotAttack[i].y-=2;
}
if(MouseX >341 && MouseX<682 && MouseY>0 && MouseY<256)
{
ShotAttack[i].y-=2;
}
if(MouseX >682 && MouseX<1024 && MouseY>0 && MouseY<256)
{
ShotAttack[i].x+=2;
ShotAttack[i].y-=2;
}
if(MouseX >0 && MouseX<341 && MouseY>256 && MouseY<512)
{
ShotAttack[i].x-=2;
}
if(MouseX >682 && MouseX<1024 && MouseY>256 && MouseY<512)
{
ShotAttack[i].x+=2;
}
if(MouseX >0 && MouseX<341 && MouseY>512 && MouseY<768)
{
ShotAttack[i].x-=2;
ShotAttack[i].y+=2;
}
if(MouseX>341 && MouseX<682 && MouseY>256 && MouseY<512)
{
ShotAttack[i].y+=2;
}
if(MouseX >682 && MouseX<1024 && MouseY>512 && MouseY<768)
{
ShotAttack[i].x+=2;
ShotAttack[i].y+=2;
}
}
}
이 소스를 설명해드리면 일단 마우스 클릭값에 따라서 총알이 나가는 방향을 설정하려구 한건데요
if문 안에 있는 비교한 숫자들은 윈도우 창 기준으로
1 2 3
4 6
7 8 9
이런식으로 한건데요 문제는 일단 각 번호의 위치에 찍으면 그방향으로 미사일이 움직이는데
문제는
다같이 움직입니다
쉽게 설명하면 6번 방향으로 날라가던놈이 4번을 찍게되면 6번으로 진행하던 총알이 다시 4번 방향으로 가는 현상이 생기는겁니다
로직에서 문제가 있는것 같은데 왜 그런지 해결법좀 조언해주시면 감사하겠습니다
참고로 else if도 써봣는데 똑같았습니다.
이 밑은 키를 눌렀을경우 실행되게 한 로직입니다
if(myChar.MouseClick==HOLD_KEY)
{
if(myChar.getCharactorChange()==1)
{
if(myChar.ShotAttack[myChar.BallAttackNum].fire==FALSE)
{
myChar.ShotAttack[myChar.BallAttackNum].x=myChar.getPosX();
myChar.ShotAttack[myChar.BallAttackNum].y=myChar.getPosY();
myChar.ShotAttack[myChar.BallAttackNum].fire=TRUE;
if(myChar.BallAttackNum==49) myChar.BallAttackNum=0;
else myChar.BallAttackNum+=1;
}
}
공이 날아가는 방향은 클릭할 때 딱 정해지고, 그 이후엔 바뀌지 말아야지. 루프 안에서 방향에 대한 정보를 한번 쓰고 버리니 문제
루프가문제인듯,
새로운 총아에 대해서는 새로 생성되고 전에 녀석과는 관계가 없어야제