public boolean onTouchEvent(MotionEvent event)
{
final float x = event.getX();
final float y = event.getY();
if ( event.getAction() == MotionEvent.ACTION_DOWN)
{
mStartX = x;
mStartY = y;
}
if ( event.getAction() == MotionEvent.ACTION_MOVE)
{
mEndX = x;
mEndY = y;
controlButton();
}
return movement;
}
public void controlButton()
{
for(int i=0; i<7; i++)
{
for(int j=0; j<7; j++)
{
if(mPPButton[i][j].IsSelected((int)mEndX, (int)mEndY)) // 움직임 관련부분
{
if(i > 0 && mPPButton[i-1][j].IsSelected((int)mStartX, (int)mStartY))
{
{
int temp = mPPButton[i][j].mState;
mPPButton[i][j].mState = mPPButton[i-1][j].mState;
mPPButton[i-1][j].mState = temp;
Vibrator vibe = (Vibrator) mMainContext.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(100);
}
if(preThink()==true)
{
think();
}
else
{
int temp = mPPButton[i][j].mState;
mPPButton[i][j].mState = mPPButton[i-1][j].mState;
mPPButton[i-1][j].mState = temp;
Vibrator vibe = (Vibrator) mMainContext.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(100);
}
}
else if(i < 6 && mPPButton[i+1][j].IsSelected((int)mStartX, (int)mStartY))
{
{
int temp = mPPButton[i][j].mState;
mPPButton[i][j].mState = mPPButton[i+1][j].mState;
mPPButton[i+1][j].mState = temp;
Vibrator vibe = (Vibrator) mMainContext.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(100);
}
if(preThink()==true)
{
think();
}
else
{
int temp = mPPButton[i][j].mState;
mPPButton[i][j].mState = mPPButton[i+1][j].mState;
mPPButton[i+1][j].mState = temp;
Vibrator vibe = (Vibrator) mMainContext.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(100);
}
}
else if(j > 0 && mPPButton[i][j-1].IsSelected((int)mStartX, (int)mStartY))
{
{
int temp = mPPButton[i][j].mState;
mPPButton[i][j].mState = mPPButton[i][j-1].mState;
mPPButton[i][j-1].mState = temp;
Vibrator vibe = (Vibrator) mMainContext.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(100);
}
if(preThink()==true)
{
think();
}
else
{
int temp = mPPButton[i][j].mState;
mPPButton[i][j].mState = mPPButton[i][j-1].mState;
mPPButton[i][j-1].mState = temp;
Vibrator vibe = (Vibrator) mMainContext.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(100);
}
}
else if(j < 6 && mPPButton[i][j+1].IsSelected((int)mStartX, (int)mStartY))
{
{
int temp = mPPButton[i][j].mState;
mPPButton[i][j].mState = mPPButton[i][j+1].mState;
mPPButton[i][j+1].mState = temp;
Vibrator vibe = (Vibrator) mMainContext.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(100);
}
if(preThink()==true)
{
think();
}
else
{
int temp = mPPButton[i][j].mState;
mPPButton[i][j].mState = mPPButton[i][j+1].mState;
mPPButton[i][j+1].mState = temp;
Vibrator vibe = (Vibrator) mMainContext.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(100);
}
}
}
}
}
}
int[] deadButtonX = new int[49];
int[] deadButtonY = new int[49];
int totDeadCnt = 0;
boolean preThink()
{
for(int i=0; i<49; i++)
{
deadButtonX[i] = 0;
deadButtonY[i] = 0;
totDeadCnt =0;
}
for(int i=0; i<7; i++)
{
for(int j=0;j<7; j++)
{
int tempState = mPPButton[i][j].mState;
int count=1;
for(int k=j+1;k<7; k++)
{
if(mPPButton[i][k].mState== tempState)
{
count++;
}
else
{
break;
}
}
if(count >=3)
{
for(int deadK =0; deadK < count; deadK++)
{
boolean isInsert = true;
for(int tempi=0; tempi<totDeadCnt; tempi++)
{
if( deadButtonX[tempi] == i &&
deadButtonY[tempi] == j+deadK)
{
isInsert = false;
}
}
if(isInsert == true)
{
deadButtonX[totDeadCnt] = i;
deadButtonY[totDeadCnt] = j + deadK;
totDeadCnt++;
}
}
}
count =1;
for(int k=i+1;k<7; k++)
{
if(mPPButton[k][j].mState== tempState)
{
count++;
}
else
{
break;
}
}
if(count >=3)
{
for(int deadK =0; deadK < count; deadK++)
{
boolean isInsert = true;
for(int tempi=0; tempi<totDeadCnt; tempi++)
{
if( deadButtonX[tempi] == i + deadK &&
deadButtonY[tempi] == j)
{
isInsert = false;
}
}
if(isInsert == true)
{
deadButtonX[totDeadCnt] = i + deadK;
deadButtonY[totDeadCnt] = j;
totDeadCnt++;
}
}
}
}
}
if(totDeadCnt > 0)
{
return true;
}
else
{
if(MySubActivity.slot_click_check == true){ // 아이템 사용하면
// 점수 안까임
}else if(MySubActivity.slot_click_check == false){// 아이템을 안쓴경우
score--; // 잘못된 이동이면 점수 차감
miss = MediaPlayer.create(mMainContext, R.raw.miss);
miss.start();
}
return false;
}
}
터치감이 너무 안좋아서 모션이벤트를 ACTION_UP에서 ACTION_MOVE로 바꿨더니 제대로 된 이동을 했는데도(터치무브) 점수가 차감되더라구요... 너무 민감해서 그런지 이유를 도통 모르겠습니다.... ACTION_UP으로 바꾸면 액정에서 손가락을 뗐을 때 control 매서드가 작동하면서 정상적으로 점수가 차감 또는 유지가 되지만 이러면 터치감이 너무 안좋더라구요,,, 어딜 손봐야 할까요??