problème sur les sprites - Java - Programmation
Marsh Posté le 19-09-2008 à 00:34:58
Salut,
Après avoir décrypté ton message...
C'est du code dans une classe dérivée de Thread ?
Si oui, première chose, c'est tout sauf conseillé je pense de contrôler un jeu en utilisant des threads.
Si toutefois tu veux conserver cette méthode, peut-être que placer un Thread.sleep() (ou un truc du genre) peut calmer les ardeurs de ton programme.
Question : Ton programme, utilise-t-il 100% de processeur ?
@+
Marsh Posté le 18-09-2008 à 00:17:25
Bonsoir.s'il vous plaît j'ai besoin d'aide.voici ci dessous un bout de code.En fait le bout de code présent comme vous
le constater gère le déplacement du sprite.Ce qui se passe c'est que les déplacements à gauche comme à droite sont trop
rapides.Il faut être très délicat avec la souris pour qu'à chaque click le sprite ne se déplace que d'un cercle sinon le
sprite se déplace de 2 voir 3 cercles.Je ne sais donc pas comment faire pour qu'à chaque fois qu'on appuie que ce soit
à gauche ou à droite que le sprite se déplace d'un cercle à chaque fois.J'aimerais savoir ce qu'il faut que j'ajoute pour
que les déplacements soient ordonnés.
Merci de me répondre.Comment utiliser les timers?
public static final int keyDelay = 10;
private boolean[] isDown = {false, false, false, false};
private long[] keyTick = {0, 0, 0, 0};
private int[] keyValue = {GameCanvas.LEFT_PRESSED, GameCanvas.RIGHT_PRESSED, GameCanvas.FIRE_PRESSED, GameCanvas.UP_PRESSED};
private boolean isRunning = true;
public void checkKeys(int iKey, long currTick) {
long elapsedTick = 0;
//loop through the keys
for (int i = 0; i < 4; i++) {
// by default, key not pressed by user
isDown[i] = false;
// is user pressing the key
if ((iKey & keyValue[i]) != 0) {
elapsedTick = currTick - keyTick[i];
//is it time to toggle key state?
if (elapsedTick >= keyDelay) {
// save the current time
keyTick[i] = currTick;
// toggle the state to down or pressed
isDown[i] = true;
}
}
}
}
public void run(){
c1= a+y;//a correspond à la position en x du sprite et y correspond au diamètre de chaque cercle
int iKey = 0;
long lCurrTick = 0;
// current system time in milliseconds;
load();
g = getGraphics();
while (isRunning) {
lCurrTick = System.currentTimeMillis();
iKey = getKeyStates();
checkKeys(iKey, lCurrTick);
if (isDown[fireKey]) {
isRunning = false;
}
// position actuelle du van
int cx = Van.getX();
int cy = Van.getY();
if (((iKey & GameCanvas.LEFT_PRESSED) != 0) & (cx >= c1)) {
Van.setFrame(1);
// déplacer le van vers la gauche
cx -= y;
}
if (((iKey & GameCanvas.RIGHT_PRESSED) != 0) & (cx < c1)) {
Van.setFrame(1);
//déplacer le van vers la droite
cx += y;
}
}
Van.setPosition(cx, cy);