Bonjour,
j'essaye de faire un pong rond avec une arène et une raquette (pour l'instant)
Je suis débutant en Java et en Swing, ayant toujours programmé en C je me trouve devant une impasse:
Avant de lire le code je vous précise que j'ai pas mal tâtonner pour en arriver là il est donc assez (très) moche et je me demande bien comment il marche.
En effet la méthode paint(Graphics g) doit apparemment être appelée par la méthode add(), or après que le main soit terminé elle est appelée 2 fois. Ma vision de C doit me jouer des tours, pour moi la méthode paint ne devrait être appelée qu'une seule fois au milieu de mon main.
Le code ci-dessous fait un cercle, met la raquette dedans, puis écoute les touche clavier.
Comme vous l'aurez deviné j'essaye de faire bouger ma raquette suivant la touche pressée, mon problème, il me faudrait une fonction tel que paint qui pourrait redessiner le tout. Je ne demande pas qu'on me refasse tout le code, je pense qu'il me manque juste certaines notions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Frame1 extends JPanel implements KeyListener{ private static Dimension tailleFenetre; private Arene Ar1; private Raquette Ra1; private static JFrame fenetre; private static Frame1 obj; public void dessin(){} public void paint(Graphics g){ g.drawLine(100,100,200,330);//dessinner une ligne System.out.println("salut"); g.setColor(Color.blue); Ar1 = new Arene(); Ar1.setCentre(new Point(tailleFenetre.width/2,tailleFenetre.height/2)); Ar1.setRayon(tailleFenetre.height/2); Ar1.drawCircle(g,Ar1.getCentre().x, Ar1.getCentre().y, Ar1.getCentre().y); g.setColor(Color.red); Ra1 = new Raquette(); Ra1.setPosition(Ar1); Ra1.rect(); g.fillPolygon (Ra1.x, Ra1.y, 4) ; } public static void main(String args[]){ fenetre=new JFrame("Dessin"); obj=new Frame1(); Toolkit leKit = fenetre.getToolkit(); tailleFenetre = leKit.getScreenSize(); fenetre.setBounds(0, 0, tailleFenetre.width, tailleFenetre.height); System.out.println("Dé..."); fenetre.add(obj); fenetre.addKeyListener (obj) ; fenetre.setVisible(true); System.out.println("...bile"); } public void keyTyped ( KeyEvent e ){ System.out.println("Key Typed "+e.getKeyChar()); } public void keyPressed ( KeyEvent e) { System.out.println ( "Key Pressed "+e.getKeyChar() ) ; } } public void keyReleased ( KeyEvent e ){ System.out.println( "Key Released" ) ; } }
Des solutions?![]()
Partager