JeuWeb - Crée ton jeu par navigateur
Temps Reel Java - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Temps Reel Java (/showthread.php?tid=5968)

Pages : 1 2 3 4


RE: Temps Reel Java - Aleskweb - 08-02-2012

Bon et bien merci pour ton aide.
J'ai bien mon timer qui tourne a 30fps c'est niquel.
Et si je comprends bien, dans les quand un personnage demande a bouger on rajoute un événement qui dure x image et qui déplace de x par image?
Enfin bon je pense que je devrais me débrouiller si j'ai compris le principe Big Grin


RE: Temps Reel Java - Maks - 08-02-2012

Quand un personnage demande à bouger, tu appelles une méthode draw()

Dans draw() tu définies :

private int frame = 0;
private int animState = -1;

ensuite à chaque actualisation du timer, tu fais ++frame ce qui te donne l'image à afficher et animState = 0; pour démarrer l'anim, ++animState aussi ensuite
Lorsque que frame = 4 par exemple (si ton image fais 4 frames) tu mets animState à -1
et tu conditionnes le dessin uniquement si animState !== -1
Pour gérer la durée, la frame sera égale à l'état de l'anim / DUREE car avec ++frame à chaque fois ça va aller trop vite pour être perceptible.
Ensuite tu peux aussi déclarer une variable pour les pixels restants à parcourir que tu ajoutes au X et au Y du dessin de ton personnage (pas les coordonnées X et Y de position).

J'espère que je me suis fait comprendre, honnêtement je me suis servi d'un tuto perso ^^

C'est toujours un peu le même principe, tu peux t'aider de scripts JS, C, C++...


RE: Temps Reel Java - Aleskweb - 08-02-2012

OuiOui Merci a toi j'ai compris, en fait ayant fait pas mal d'ActionScript 3 avec Flash j'ai été un peu déboussolé de plus avoir d'évent du style "ENTER_FRAME" Etc
Merci a toi Big Grin


RE: Temps Reel Java - Maks - 08-02-2012

Héhé bon courage pour la suite alors Smile


RE: Temps Reel Java - Aleskweb - 10-02-2012

Merci, juste:
J'ai ce code tout simple :


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javafx.scene.Group;
import javafx.scene.Parent;
/**
*
* @author TheTrope
*/
public class Rendu extends Parent{

int x = 0;
Group Ecran = new Group();
Map nmap;


public Rendu()
{

Map nmap = new Map(1,400,100);
Ecran.getChildren().add(nmap);
this.getChildren().add(Ecran);
new Timer(33,taskPerformer).start();

}

ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
nmap.setx(x);
System.out.println("Render");
x++;
}
};


}

Ma classe Map génère une map 2d iso et l'affiche.
Voici la classe en question :


import javafx.scene.Parent;
import javafx.scene.Group;

public class Map extends Parent{

private int x;
private int y;
private int startx;
private int starty;

private int cl_mx;
private int cl_my;
private Group partMap = new Group();

public Map(int id, int mx, int my){

startx = mx;
starty = my;
x = startx;
y = starty;
int currentx = 0;
int currenty = 0;
while (currenty<13){
while (currentx<13){
Tile tile = new Tile(1, x, y);
partMap.getChildren().add(tile);
x = x + 34;
y = y + 17;
currentx++;

}
currenty++;
x = startx -currenty*34;
y = starty + currenty*17;

currentx=0;


}
System.out.println("map cree");

this.getChildren().add(partMap);
}

public void setx(int x)
{
partMap.setTranslateX(x);
}


}

Normalement, a chaque "timer" cela devrait déplacer le groupe partMap et donc je devrais voir ma Map se déplacer vers la droite. Mais a la place, j'ai cette erreur :
Code :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at tkweb.Rendu$1.actionPerformed(Rendu.java:35)
    at javax.swing.Timer.fireActionPerformed(Timer.java:291)
    at javax.swing.Timer$DoPostEvent.run(Timer.java:221)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Si vous avez une idée?

Merci d'avance


RE: Temps Reel Java - Maks - 10-02-2012

Tu as un problème de syntaxe non ?

Dans ton constructeur pourquoi tu re-déclares une variable de type Map alors que tu pourrais faire this.map = new Map(); ?

Du coup dans ton constructeur tu vas bien avoir une Map mapn mais depuis la méthode rendu() tu vas avoir mapn = new Map(); ce qui ne rime pas à grand chose ?

Soit tu mets tout à this.mapn = new Map();
Soit tu enlèves ton attribut et tu instancies à chaque fois dans le constructeur et la méthode ^^


RE: Temps Reel Java - Aleskweb - 10-02-2012

Ah oui en effet. Merci beaucoup
Parfois faut pas aller chercher bien loin x)
Y a t'il des guides pour comprendre les messages d'erreurs?
Car la j'ai vu : "at tkweb.Rendu$1.actionPerformed(Rendu.java:35)" je me suis dit que ca venait de l'action Listener



RE: Temps Reel Java - Maks - 10-02-2012

Dans le listener tu avais rendu() et c'est rendu() qui posait problème. Souvent il faut remonter la chaîne ^^


RE: Temps Reel Java - Aleskweb - 10-02-2012

Okay Merci encore


RE: Temps Reel Java - Maks - 10-02-2012

No soucis ^^