Bonsoir a tous, je voudrais simplement une aide quant a la creation d'un programme tres simple d'un recipient (reservoir rectangulaire avec un trou au fond) qui se vide en fonction du temps.
Merci de votre aide :)
Version imprimable
Bonsoir a tous, je voudrais simplement une aide quant a la creation d'un programme tres simple d'un recipient (reservoir rectangulaire avec un trou au fond) qui se vide en fonction du temps.
Merci de votre aide :)
Heu tu veux faire quoi exactement ?
Tu as fais quoi jusqu'à présent ?
Donnes nous un peu plus d'infos :D
Et surtout tu veux quoi comme aide?
- de l'aide pour structurer ton application ?
- les composants et classes à utiliser ?
- du code ?
je lutte sur le code en fait, le 2D j'y arrive pas ...
creer un rectangle avec un semblant de liquide dedans qui se vide, je ne sais pas par ou commencer en fait.
Voilà comment je vois les choses.
Tu as un premier rectangle qui est ton récipient. A l'intérieur de ce récipient, tu as un autre rectangle qui représente le liquide.
Tu dois donc faire suivant un intervalle de temps régulier, diminuer la hauteur du rectangle représentant le liquide en utilisant une méthode de rafraîchissement de ton image.
Si cette idée te convient, on verra par la suite comment gérer l'évacuation par un trou parce que là, je sais pas trop comment faire :lol:
Petite question : le choix de java est olbigatoire? Dans quel but développes-tu ce programme? Je te demande ça car ça ferait un super sujet d'initiation à Flash, se serait d'ailleur beaucoup plus simple ;)
Bonjour! Je me permets un essai sur ce Réservoir...:roll: grosso modo c'est un JComponent Swing que tu vas actualiser en fonction du temps qui passe grâce à un Timer Swing. La suite c'est une classe héritant de JComponent.Citation:
Envoyé par claw
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 public class Reserv extends JComponent{ int rempli = 0; int capacite = 0; long time = 0; Dimension size; public Reserv(long time, int capacite, int width, int height) { super(); this.time = time; size = new Dimension(width, height); setPreferredSize(size); timer = new javax.swing.Timer(1000, new ActionListener() { public void actionPerformed(ActionEvent e) { rempli++; Reserv.this.repaint(); }}); } public void paintComponent(Graphics g) { super.paintComponent(g); // remplissage mesure double pc = rempli/capacite * 100.0; g.fillRect(0, (int)(100 - pc), width, height); } }
Oui c'est du Java malheureusement ... :(Citation:
Envoyé par sironimo
et c'est pour la simulation de la quantité de carburant utilisé dans les reservoirs d'un avion en cours de vol, en fonction de sa puissance, et des pannes generees.
Merci Broumbroum, je vais tester ca maintenant :)
Je n'arrive pas a faire apparaitre une image :sCode:
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 package model; import javax.swing.*; import java.awt.*; //import java.io.*; import java.awt.event.*; import java.awt.image.BufferedImage; import javax.swing.JComponent; public class Reserv extends JComponent{ private BufferedImage image; private Timer timer; private int width; // largeur de l'image private int height; // hauteur de l'image private int x,y;// coordonnées du coin sup gauche int rempli = 0; int capacite = 0; long time = 0; Dimension size; public Reserv(long time, int capacite, int width, int height) { super(); this.time = time; size = new Dimension(width, height); setPreferredSize(size); timer = new javax.swing.Timer(1000, new ActionListener() { public void actionPerformed(ActionEvent e) { rempli++; Reserv.this.repaint(); }}); } public void paintComponent(Graphics g) { super.paintComponent(g); // remplissage mesure double pc = rempli/capacite * 100.0; g.fillRect(0, (int)(100 - pc), height, width); g.drawImage(image,x,y,width,height,null); } public static void main (String[] args) { Reserv R = new Reserv(1500, 2000, 50,30); JFrame f = new JFrame ("Reservoir"); f.setBackground(Color.WHITE); f.setContentPane(R); f.pack(); f.setVisible(true); } }
Edit : j'obtiens une erreur : Exception in thread "AWT-EventQueue-0" java.lang.ArithmeticException: / by zero
at model.Reserv.paintComponent(Reserv.java:35)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
..........