Slu
je dois faire un petit jeu en java ... est ce que qqn pourrais me donnez qq petits conseils pour la conception d un jeu en java.
@+
Version imprimable
Slu
je dois faire un petit jeu en java ... est ce que qqn pourrais me donnez qq petits conseils pour la conception d un jeu en java.
@+
Quel genre de jeu tu aimerais faire ?
sinon va regarcer ceci : http://jade.pautrot.com/accueil.php
c'est une bibliothèque pour faire des ptits jeux assez facilement en java...
c pour faire un petit jeu 2D ...mais c dans le cadre d un projet scolaire ....
deplacement d un personnage sur l ecran avec des autres personnages qui se deplacent automatiquement
up
:cry:
Oui, mais ta question... si on peut parler de question... est on ne peut plus large...Citation:
Envoyé par Seth77
Tu veux savoir quoi exactement ?
Comment faire l'IHM, le rendu 2D, l' "IA" (restons simples :lol:) ?
Où rencontres-tu des problèmes ?
As tu des soucis techniques, du côté de ton modèle de données, ... ?
C'est très très vaste tout ça... :wink:
en fait je ne vois pas encore comment structurer le prog .Citation:
Envoyé par xxaragornxx
comment afficher les elements (sous forme de tableau un peu comme un jeu d echec)
Et comment faiton pour passer des infos d une frame a une autre
je pense gerer les differents perso a l aide de thread.
Slu
comment faire un tableau facile d utilisation , mise en place d 'element(image ou autre ) ou l on veut ... etc ...
pour les jeux je ne sais pas comment faire, mais pour les intefaces graphiques tu as le choix avec tous les layouts disponibles.
il y a aussi ce site sur le thème des jeux en java.
cad ... j ai essaye le gridlayout mais pas moyen de positionner un element ou je vx !
essaye l'arme ultime, j'ai nommé (roulement de tambour)
le GridBagLayout :lol:
non sérieusement,avec ça tu peux tout faire.Pour son utilisation je t'invite à faire une recherche avancée sur le forum et à consulter les tutos du site.
Voilà,j'espere que t'es satisfait :)
merci...mais la je suis perdu j arrive po !:x :x :x :x :x :x :x :x :x
merci tout de meme !
Si ton problème est résolu,clique sur le bouton résolu en bas à gauche,si ce n'est pas le cas expose ton problème de manière claire et précise.
Merci
Deja je ne comprends pas ... ou est ce que je definis les dimenssions de mon tableau?Code:
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 import javax.swing.*; import java.awt.*; import javax.swing.border.*; public class Map extends JFrame{ GridLayout Grid; JPanel Pane; public Map(){ GridBagLayout layout = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.HORIZONTAL; Pane = new JPanel() ; Pane.setBackground(Color.green); Pane.setBorder(new EtchedBorder ()); Pane.setLayout(layout); JButton button = new JButton("Button 1"); c.weightx = 0.5; c.gridx = 1; c.gridy = 0; Pane.add(button, c); pack(); validate(); setSize (500,500); setContentPane(Pane); setVisible(true); } }
et voila mon code ...il me met un bouton en plein milieu qui prend la largeur de la fenetre
c'est normal vu que ton GridBagLayout n'a qu'une seule "cellule",donc ta cellule c'est tout ton panel.Ceci explique entre autre qu'il s'etende sur tout ton panel avec fill à HORIZONTAL.
En fait il vaut mieux positionner tous tes composants d'abord (donc tu régles les paramétres:gridx,gridy,gridwidth,gridheigth et tu mets gridx et gridy à 100 .Ne definis pas les autres parametres ), ensuite compile ton code et execute le,regarde le résultat puis regles les poids (gridx et gridy) comme tu as envie.
Avec GridBagLayout tu n'as pas un tableau,enfin si mais c'est un tableau dynamique,il n'y a pas de colonnes ou des lignes qui ne contiennent aucun composant.
Ah ben c un prob ca ...
je dois faire un prog ou il y un tableau (un peu comme un jeu d echec) ou un personnage peut se deplace ....
Est ce que l on peut placer des images dans le tableau?
tu devrais poster sur le forum du site que je t'ai donné, tu trouvera beaucoup plus de gens spécialisés dans les jeux en java.
Désolé mais je ne peux t'aider d'avantage en ce qui concerne les jeux.
Tu peux aussi voir sur les forums de http://www.javagaming.org/
Merci tlm!! :P :P
Sinon, rapidement, pour faire un tableau genre jeu d'échecs, le GridLayout est plus approprié. Tu peux y mettre des JPanel/JLabel avec des images dedans.
Mais cette approche serait plus pour du tour par tour. Vu que tu parles de threads, je ne suis pas sur que ce soit ce que tu veux.
Si tu veux dessiner directement sur un composant écran et gérer les affichages en temps réel, il vaut mieux utiliser la méthode paint(Graphics g);. Mais d'autres ici sont plus calés que moi sur ce sujet.
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 ...Citation:
Envoyé par Seth77
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();