1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| @Override
public void onSensorChanged(SensorEvent event) {
Sensor mySensor = event.sensor;
if (mySensor.getType() == Sensor.TYPE_ACCELEROMETER) {
float x = 0, y = 0, z = 0;
if(!(lastSensorValues != null)) {
lastSensorValues[0] = 0;
lastSensorValues[1] = 0;
currentSensorValues = lastSensorValues;
}
switch (mDisplay.getRotation()) {
case Surface.ROTATION_0:
x = event.values[0];
y = event.values[1];
break;
case Surface.ROTATION_90:
x = -event.values[1];
y = event.values[0];
break;
case Surface.ROTATION_180:
x = -event.values[0];
y = -event.values[1];
break;
case Surface.ROTATION_270:
x = event.values[1];
y = -event.values[0];
break;
}
currentSensorValues[0] = x;
currentSensorValues[1] = y;
currentSensorValues[2] = event.values[2];
currentSensorValues = exponentialSmoothing(lastSensorValues, currentSensorValues, 0.5f);
z = currentSensorValues[2];
long currentTime = System.currentTimeMillis();
long diffTime = currentTime - TimeSinceLastUpdate;
if ((diffTime) > 30) {
TimeSinceLastUpdate = currentTime;
score += 1;
int indexDeletedGold = -1;
for(Obstacle o : obstacles) {
o.setPos((int) (o.getX() + (currentSensorValues[0] * z)), (int) (o.getY() - (currentSensorValues[1] * z)));
if(o.isInCollisionWith(perso.getX(), perso.getY(), perso.getPersoX(), perso.getPersoY())){
Intent i = new Intent().putExtra("score", score);
((GameActivity) getContext()).setResult(Activity.RESULT_OK, i);
((GameActivity) getContext()).finish();
}
}
for(Coin c : coins){
c.setPos((int) (c.getX() + (currentSensorValues[0] * z)), (int) (c.getY() - (currentSensorValues[1] * z)));
if(c.isInCollisionWith(perso.getX(), perso.getY(), perso.getPersoX(), perso.getPersoY()))
indexDeletedGold = c.taken(getContext(), 0, coins);
}
if(indexDeletedGold > -1) {
coins.get(indexDeletedGold).image.recycle();
coins.remove(indexDeletedGold);
coins.add(Coin.generateNewCoin(getScreen()[0], getScreen()[1], coins, getContext()));
}
}
}
} |
Partager