2010-12-16 4 views
0

Я работаю над проектом игры в мраморный лабиринт в j2me.Я столкнулся с проблемой, связанной с движением и контролем мяча., связанный с Marble Maze Game

кода я использую это

private SensorConnection sensor; 
Data[] data; 
double value[] = new double[3]; 
double PreValueX1, PreValueX2, PreValueY1, PreValueY2; 
double CurrentValX, CurrentValY; 
int ballX,ballY; 

Sensor = (SensorConnection) Connector.open("sensor:acceleration");//To open connection 
public void run() { 
while(true){ 
try { 
         data = compass.getData(1);/ 
        } catch (IOException ex) { 
         ex.printStackTrace(); 
        } 
        for (int i = 0; i < data.length - 1; i++) { 
         value[i] = data[i].getDoubleValues()[0];/Get data For X and Y axis 

        } 

        CurrentValX = value[0]; 
        CurrentValY = value[1]; 

        if (CurrentValX < PreValueX1) { 
         left = false; 
         right = true; 

        } else if (CurrentValX > PreValueX1) { 
         left = true; 
         right = false; 

        } 
        if (CurrentValY < PreValueY1) { 
         down = false; 
         up = true; 

        } else if (CurrentValY > PreValueY1) { 
         down = true; 
         up = false; 

        } 
if (right == true) { 
      ballX += 10;   
     } else if (left == true { 
      ballX -= 10;   
     } 
     if (down == true) { 
      ballY += 10;   
     } else if (up == true) { 
      ballY -= 10;    
     } 

        CurrentValY = PreValueY1; 
        CurrentValX = PreValueX1; 

dodraw(); 
repaint(); 
} 

//Function used to draw the image of ball 
dodraw(){ 
ballSprite.setPosition(ballX, ballY); 
ballSprite.paint(g);//Graphics==g 
} 

Теперь проблема здесь я столкнулся, если я уменьшаю скорость ПРИМЕРА: ее сочинительство ballx+=4;ballY+=4 OR ballx-=4;ballY-=4, Тогда я получаю контроль над моим мячом

И если моя скорость будет равна 10, тогда я не получу контроль над своим мячом. Короче, я могу получить только одну скорость или контроль.

Но я хочу сделать как скорость, так и контроль.

+0

Исправить форматирование кода. Кроме того, какая мобильная ОС? – Robert 2010-12-16 06:25:24

ответ

1

Для более реалистичного поведения вы должны сохранить вектор движения вашего мрамора и изменить его каждый кадр в соответствии с данными датчика и добавить его в положение мрамора в каждом кадре. ,

Вы можете пойти полным способом моделирования, using the equations for Kinmatics, чтобы рассчитать скорость вашего мрамора.

+0

Thanx вы, но я сделал это. Но он не работает. – 2010-12-16 09:57:30