ahh...justement comment on fait ?Citation:
Envoyé par saod
Version imprimable
ahh...justement comment on fait ?Citation:
Envoyé par saod
Merci, merci, merci.... pour une fois ca m'a evite de hurler.Code:Si c'est pour faire ce genre de jeux je ne pense pas qu'un layout sois conseillé !!! il vaut mieux dessiner toi meme tes bonhommes, tes formes, tes monstres, etc... avec la class Graphics ou Graphics2d ...
Non qu'il soit impossible de faire ca uniquement avec des composants Swing, mais bon .... si jamais on doit animer le deplacement des pieces... et puis quel gachis au niveau performance.
Regarde d'abord la demo la demo jfc/Java2Demo fournis avec le JDK ; ca te donnera un appercut des capacites de Java2D ainsi qu'un peu de code source pour voir comment ca marche.Code:ahh...justement comment on fait ?
Merci
j ai essaye un truc....mettre une image et essaye de la deplacer a l aide du clavier ...
j ai mis l affichage de l image dans paint ... mais comment reafficher l image ... si j appel paint il me fait une exception
Tu appeles repaint() en reaction au deplacement de l'image.
Ensuite ca serait mieux si on savait quelle exception (type, message) etait lancee...
Merci ..j ai un petit prob... mon espace de jeu est dans un jpanel ... comment faire pour definir la taille de mon espace de jeu ???
j ai essaye avec setsize mais cela ne marche pas ...
J'ai déjà fait ça pour un tp dans un cours de programmation, malheureusement je n'ai plus le source. Ce que j'avais fait en gros c'était :
Un JPanel tout bête qui sert de canvas pour dessiner qui est inséré dans un JFrame dont le contentPane est remplacé par le canvas. Tu dessines dans paintComponent() avec les outils de la classe Graphics (drawImage() etc). Il te faut 2 timers, un qui déplace les coordonnées des objets et l'autre qui appelle repaint(). Si tu veux que ça soit plus fluide il te faut un buffer dans lequel tu dessines hors-écran.
thx
c , je pense, ce que j ai fais ..
mais j arrive pas a definir la taille du jpanel en pixel .... et que le jframe s adapte automatiquement ...
Pense a mettre des tailles fixes avec setPreferredSize() et setMinimumSize() et setMaximumSize() sur le panel; ensuite met un BorderLayout dans ta frame, ajoute le panel au centre et fait pack(). Eventuellement rend ta frame non-redimensionable.
Merci ca marche ...
j ai un petit prob ... j ai ma classe qui represente la map du jeu et une classe pour les objets du jeu ... comment faire pour acceder a partir d une classe d un objet a une variable dans la map ... dans mon cas la taille de la map ?
En utilisant des accesseurs c'est à dire des méthodes qui ont pour but de renvoyer ou changer la valeur d'un attribut de ta classe
Par exemple
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class machin { private int bidule; // accesseurs de type get -- renvoie la valeur de bidule public int getBidule(){ return bidule; } // accesseurs de type set -- change la valeur de bidule public void setBidule(int bidule){ this.bidule = bidule; } }
euh non pas vraiment ...
comment dans la class machin acceder a bidulle sans forcement connaitre le nom de l instance de truc ?Code:
1
2
3
4
5 class truc{ int bidulle; machin test = new test(); }
ou alors comment definir des variables globales a l ensemble du projet ?
Pour les variables globales, il faut utiliser des variables statiques.
Dans ton cas, ce serait plus particulièrement un singleton pour le JPanel.
je ne vois pas vraiment ... t aurais pas un exemple sous le coude ?
Je suppose que dans ton jeu, tu n'as besoin que d'une seule fenetre, que j'appelle MainFrame :Il ne peut y avoir qu'un seul objet de la classe MainFrame dans ton programme, et tous les autres objets peuvent y accéder en faisant :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public class MainFrame extends JFrame { private JPanel gamePanel; private MainFrame(...) { //constructeur classique ... } public Toto getToto() {...} ... // N.B le constructeur est privé. Il est impossible de // construire des objets MainFrames sauf dans cette classe // Maintenant le singleton : private static MainFrame singleton; public static MainFrame getMainFrame() { if(singleton == null) singleton = new MainFrame(...); return singleton; } }
[EDIT]Bon, dans mon code, le singleton est la JFrame, mais tu peux faire ca avec le JPanel si tu préfères.[/EDIT]Code:
1
2 MainFrame mf = MainFrame.getMainFrame(); Toto t = MainFrame.getMainFrame().getToto();
merci je vais essaye ....
eh be c facile de faire des singleton en java !!!!
En général on appele la méthode pour faire un singleton getInstance() pour des raisons d'harmonie.
De plus la variable, ici appelée singleton doit être initialisée à null, c'est plus propre :)
Pour le reste c'est très bien.
C'est ironique ? Quand tu as compris le principe, ca va vite ! :wink:Citation:
Envoyé par Seth77
Bimouxette : oui, c'est un peu baclé, mais le singleton est largement couvert de tutoriaux et d'exemples, alors je ne me suis vraiment pas cassé la tete.
Tu as bien raison :P
non c pas de l ironie ... j avais deja fais des singleton en C++ et c etait bien plus complique ... 8)Citation:
Envoyé par xavlours
n y a t il pas moyen de definir un pointeur vers le frame accessible partout au lieu de definir dans chaque classe un pointeur vers la frame ?Code:
1
2
3 MainFrame mf = MainFrame.getMainFrame(); Toto t = MainFrame.getMainFrame().getToto();