IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Evènements souris clavier


Sujet :

Interfaces Graphiques en Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 9
    Points
    9
    Par défaut Evènements souris clavier
    Bonjour tout le monde , j'essaye d'apprendre a utiliser les evenements sous java mais j'avoue que j'ai un peu de mal a comprendre.
    Alors voila j'utilise un tableau d'objet representant de l'eau, feu etc et surtout des proies et predateurs qui se deplace, ce tableau se reactualisant a chaque fois en fonction des nouvelles position, l'apparition de nouveaux objets etc.. Tout ceci est afficher dans une
    Fenetre qui represente les couleurs objets sous forme de pixel de couleur.
    Ce que je voudrai faire c'est qur l'utilisateur selectionne l'objet qu'il veut grace a la souris et le deplace grace au clavier. Je sais qu il faut utiliser des mouselistener et keylistener mais j'ai du mal a l'implementer dans mon code. Donc si quelquun a des petits codes simple pour montrer comment marche la selection de l'objet a la souris et son deplacement je suis preneur.
    Merci d avance.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Avec swing ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Enfete ca se presente comme sa :
    On cree un tableau d'environnement ( feu eau et.. ) :
    Environnement[x][y] = new Environnement...
    Puis on l initialise et dans une boucle while on actualise selon des regles .
    Tout ceci est afficher dans une fenetre ou les objets sont representer par leur couleur.
    Je voudrai que quand l utilisateur clique avec la souris sur une proie ou un arbre dans la fenetre qui s'est cree, il puisse le diriger a l aide des touches du clavier haut bas gauche droite.
    Je sais pas du tout comment proceder.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Ma question était : "Tu utilises Swing pour ton interface ?"
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Non j pense pas

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Ahh si j importe la classe swing.jftame et swing.jpanel pk

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Pour la gestion des listeners tu as quelques explication dans la FAQ.

    Après pour l'affichage, tu peux peut être te baser la dessus.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Merci mais enfete je gere un tableau qui se reactualise dc je dois recuperer le x et y ou il a cliquer et modifer dans mon tableau en fonction des touches clavier appuyer . Et j sais pas comment faire . Merci de m aider

  9. #9
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Si tu montrais déjà ce que tu as codé car ca va pas être possible de t'aider sans cela je pense.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Voila les codes :

    IMAGE BUFFER :

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
     
     
     
    import java.awt.*;
    import java.awt.image.*;
    import java.io.*;
    import javax.imageio.*;
    import javax.swing.*;
     
    /**
     * This class is a wrap-up of the classic BufferedImage class. It provides simplified accessing method for RGB image.
     * You may want to display this image by enclosing it into an ImageFrame object.
     * 
     
     *
     */
    public class ImageBuffer extends BufferedImage {
     
    	public ImageBuffer(int width, int height) {
    		super(width, height, BufferedImage.TYPE_INT_ARGB);
    	}
     
        static public ImageBuffer loadFromDisk( String __filename)
        {
        	ImageBuffer image = null; 
        	try {
        		BufferedImage bi = ImageIO.read(new File(__filename));
        		image = new ImageBuffer(bi.getWidth(),bi.getHeight());
        		for ( int x = 0 ; x != bi.getWidth() ; x++ )
        			for ( int y = 0 ; y != bi.getHeight() ; y++ )
        				image.setRGB(x, y, bi.getRGB(x, y));
        	}
        	catch ( IOException e )
        	{
        		System.err.println("[error] image \""+__filename+"\" could not be loaded.");
        	}
        	return image;
        }
     
        /**
         * save current image buffer to PNG file. 
         * @param __filename output filename without extension
         */
        public void saveToDisk( String __filename )
        {
        	try {
        		ImageIO.write(this, "png", new File(__filename + ".png"));
        	}
        	catch ( IOException e )
        	{
        		System.err.println("[error] image \""+__filename+"\" could not be written to disk.");
        	}
        }
     
        /**
         * set target pixel color (RGB) -- color values btw 0 and 255
         * @param x
         * @param y
         * @param rgb a 3-values array containing [red,green,blue] values
         */
        public void setPixel( int x, int y , int rgb[] )
        {
        	this.setPixel(x, y, rgb[0] , rgb[1] , rgb[2]);
        }
     
     
        /**
         * set target pixel color (RGB) -- color values btw 0 and 255
         * @param x
         * @param y
         * @param red
         * @param green
         * @param blue
         */
        public void setPixel( int x, int y , int red, int green, int blue )
        {
        	int colorValues;
        	colorValues = 0xFF000000; // alpha set non transparent
    		colorValues += red * 256*256; // red
    		colorValues += green * 256; // green
    		colorValues += blue ; // blue
        	this.setRGB(x, y, colorValues);
        }
     
        /**
         * return target pixel color
         * @param x
         * @param y
         * @return a 3-values array containing [red,green,blue] values -- color values btw 0 and 255
         */
        public int[] getPixel( int x, int y )
        {
        	int [] rgb = new int[3];
    		int rawvalue = this.getRGB(x, y);
    		rgb[0] = ( rawvalue & 0x00FF0000 ) / (int)Math.pow(256,2); // red
    		rgb[1] = ( rawvalue & 0x0000FF00 ) / 256; // green
    		rgb[2] = ( rawvalue & 0x000000FF ); // blue
        	return rgb;
        }
     
        // HSV methods (same as RGB but handles HSV values in and out) -- all values btw [0..1]
        public double[] getPixelHSB( int x, int y )
        {
        	int[] rgb = this.getPixel(x, y);
        	float[] hsvFloat = java.awt.Color.RGBtoHSB(rgb[0], rgb[1], rgb[2], null);
        	double[] hsv = new double[3];
        	for (int i = 0; i < hsv.length; i++) 			
        		hsv[i] = hsvFloat[i];
        	return hsv;
        }
        public void setPixelHSB( int x, int y , double[] hsb)
        {
        	this.setPixelHSB(x, y, hsb[0], hsb[1], hsb[2]);
        }
        public void setPixelHSB( int x, int y , double h, double s, double b )
        {
        	int rgb = java.awt.Color.HSBtoRGB((float)h,(float)s,(float)b);
        	this.setRGB(x, y, rgb);
        }
     
        /**
         * fill screen with given color values (cls means "clear screen")
         * @param r
         * @param g
         * @param b
         */
    	public void cls(int r, int g, int b) 
    	{
    		for ( int x = 0 ; x != this.getWidth() ; x++ )
    			for ( int y = 0 ; y != this.getHeight() ; y++ )
    				this.setPixel(x,y,r,g,b);
    	}
     
     
     
        public void writeText(String __text)
        {
        	Graphics2D g = this.createGraphics();
        	g.setColor(Color.GREEN);
            g.setFont(new Font("Lucida Sans Typewriter", Font.PLAIN, 36));
            g.drawString("Hello, World!", 10, 50);
            g.dispose();
        }
     
    	public static void main(String[] args) throws IOException {
     
    		// build an ImageBuffer
    		ImageBuffer image = new ImageBuffer(16,16); // method 1 : call constructor
    		//ImageBuffer image = loadFromDisk("test"); // method 2 : image loading factory
     
    	    // Set a pixel
    		int[] rgb = {255,0,0};
    	    image.setPixel(0,0,rgb); // method 1a : wrap-up method from ImageBuffer
    	    //image.setPixel(0,0,255,255,255,255); // method 1b : wrap-up method from ImageBuffer
    		//image.setRGB(0, 0, 0xFF00FF00); // method 2 : standard method from BufferedImage using only one integer value
     
    	    // various specific wrap-up methods from ImageBuffer or general accessing method inherited from the BufferedImage object ...
    	    int w = image.getWidth();
    	    int h = image.getHeight();
     
    	    for ( int j = 0 ; j != h ; j++ )
    	    	for ( int i = 0 ; i != w ; i++ )
    	    		image.setPixel(i, j, (int)((double)(i)/(double)w*255.),(int)((double)(j)/(double)h*255.),(int)((double)(j)/(double)h*255.));
     
    	    System.out.println("number of bands : " + image.getRaster().getNumBands());
    	    System.out.println("colors of origin pixel: " + image.getRGB(0, 0));
    	    rgb = image.getPixel(0, 0);
    	    System.out.println("colors of origin pixel (detailed) : ("+rgb[0]+","+rgb[1]+","+rgb[2]+")");
    	    System.out.println("image size is ("+w+","+h+")");
     
    	    // save to disk
    	    image.saveToDisk("testdev");
    	    System.out.println("file \"testdev.png\" created.");
     
     
    	    // display image -- you may prefer using ImageFrame if you want to display an image.
     
    	    Icon icon = new ImageIcon(image);
            JLabel label = new JLabel(icon);
     
            final JFrame f = new JFrame("Demo");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.getContentPane().add(label);
            f.pack();
            SwingUtilities.invokeLater(new Runnable(){
                public void run() {
                    f.setLocationRelativeTo(null);
                    f.setVisible(true);
                }
            });
     
    	}
    }
    ensuite :

    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
     
     
    public class CAtoolbox {
     
    	protected static void print (String __s)
    	{
    		System.out.print(__s);
    	}
     
    	protected static boolean[][] initialiseRegles(int __noCA)
    	{
    		boolean[][] rules = new boolean[8][4];
     
    		// conditions -- dont forget: strong bit on the left
    		for ( int i = 0 ; i != 8 ; i++ )
    		{
    			if ( ( i & 1 ) == 1 )
    				rules[i][2] = true;
    			if ( ( i & 2 ) == 2 )
    				rules[i][1] = true;
    			if ( ( i & 4 ) == 4 )
    				rules[i][0] = true;
    		}
     
    		// outcome
    		for ( int i = 1 , j = 0 ; i != 256 ; i*=2, j++ )
    		{			
    			if ( ( __noCA & i ) > 0 )
    				rules[j][3] = true;
    			else
    				rules[j][3] = false;
    		}
     
    		return rules;
    	}
     
    }
    ensuite :

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
     
     
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    /**
     * This class makes it easy to display an image -- Display is also refreshed anytime the enclosed source image is modified.
     * You may want to use an ImageBuffer object (or a BufferedImage object) as enclosed image.
     *  
     *
     */
     
    public class ImageFrame extends JPanel implements Runnable {
     
    	//private static final long serialVersionUID = 1L;
    	private BufferedImage image;
    	private int refreshDelay = 1000; // in ms. -- default is 1s.
     
    	public ImageFrame() 
    	{
    		super();
     
    		new Thread(this).start();
    	}
     
    	public void setImage( BufferedImage __image)
    	{
    		this.image = __image;
    	}
     
    	public void paintComponent(Graphics g) 
    	{
    		//g.drawImage(this.image, 0, 0, this); // fixed size
    		g.drawImage(this.image,0,0,getWidth(),getHeight(),this); // resize image wrt. window size
    	}
     
    	public void run() 
    	{
    		while (true) {
    			repaint();
    			try {
    				Thread.sleep(this.refreshDelay);
    			} catch (InterruptedException e) 
    			{
    			}
    		}
    	}
     
    	public void setRefreshDelay(int delay)
    	{
    		this.refreshDelay = delay;
    	}
     
    	/**
             * create and display an ImageFrame object
             * @param __name
             * @param __image
             * @param __refreshDelay
             * @return object created
             */
    	static public ImageFrame makeFrame ( String __name, BufferedImage __image, int __refreshDelay )
    	{
    		return makeFrame(__name, __image, __refreshDelay, __image.getWidth(), __image.getHeight());
    	}
     
    	/**
             * create and display an ImageFrame object
             * @param __name
             * @param __image
             * @param __refreshDelay
             * @param __width initial window width
             * @param __height initial window height
             * @return
             */
    	static public ImageFrame makeFrame ( String __name, BufferedImage __image, int __refreshDelay, int __width, int __height )
    	{
    		ImageFrame imageFrame = new ImageFrame();
    		JFrame frame = new JFrame(__name);
     
    		frame.setSize(__width, __height);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setContentPane(imageFrame);
    		frame.setVisible(true);
     
    		imageFrame.setImage(__image);
    		imageFrame.setRefreshDelay(__refreshDelay);
     
    		return imageFrame;
    	}
     
     
    	// *** demo *** 
     
    	public static void main(String[] args) 
    	{
    		int w = 100;
    	    int h = 100;
    		ImageBuffer image = new ImageBuffer(w,h);
     
    		// create and display frame
    		ImageFrame imageFrame =	makeFrame( "ImageFrame Demo", image, 1000, 400, 400 );
     
    		// randomly change the pixels color in the enclosed image
            do {
    		    for ( int j = 0 ; j != h ; j++ )
    		    	for ( int i = 0 ; i != w ; i++ )
    		    	{
    		    		int r = (int)(Math.random()*255.);
    		    		int g = (int)(Math.random()*255.);
    		    		int b = (int)(Math.random()*255.);
    		    		image.setPixel(i, j, r, g ,b );
    		    	}
            } while ( true );
    	}
    }
    puis

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
     
    import java.awt.Color;
     
    public class CAImageBuffer extends ImageBuffer {
     
    	public CAImageBuffer(int width, int height) {
    		super(width, height);
    		this.cls(0xFF,0xFF,0xFF);
    	}
     
    	/**
             * update image according to value in array[][] (2D)
             * @param cells
             */
    	public void update (boolean[][] cells)
    	{
    		int[][][] cellList = new int[cells.length][cells[0].length][3];
    		for ( int y = 0 ; y != cells[0].length ; y++ )
    			for ( int x = 0 ; x != cells.length ; x++ )
    			{
    				int color;
    				if ( cells[x][y] == true )
    					color=0;
    				else
    					color=255;
    				for (int i = 0 ; i !=3 ; i++ )
    					cellList[x][y][i]=color;
    			}
    		this.update(cellList);
    	}
     
     
    	/**
             * update image according to real value in array[][][] (2D+colors). Color values are between 0 and 255.
             * e.g. RGB colors of pixel at coordinate (10,10) can be accessed as:
             *      r = cells[x][y][0]
             *  g = cells[x][y][1]
             *  b = cells[x][y][2]
             * @param cells
             */
    	public void update (int[][][] cells)
    	{
    		if ( cells.length != this.getWidth() || cells[0].length != this.getHeight() )
    		{
    			System.err.println("array size does not match with image size.");
    			System.exit(-1);
    		}
     
    		for ( int y = 0 ; y != cells[0].length ; y++ )
    			for ( int x = 0 ; x != cells.length ; x++ )
    				this.setPixel(x, y, cells[x][y][0], cells[x][y][1], cells[x][y][2] );
     
    	}
     
     
    	/**
             * update first line of image to value in array[] (1D). All image is moved one line downwards prior to update.
             * @param cells
             */
    	public void update (boolean[] cells)
    	{
    		int[][] cellList = new int[cells.length][3];
    		for ( int x = 0 ; x != cells.length ; x++ )
    		{
    			int color;
    			if ( cells[x] == true )
    				color=0;
    			else
    				color=255;
    			for (int i = 0 ; i !=3 ; i++ )
    				cellList[x][i]=color;
    		}
    		this.update(cellList);
    	}
     
    	/**
             * update first line of image to value in array[][] (1D+colors). All image is moved one line downwards prior to update.
             * e.g. 
             *      r = cells[x][0]
             *  g = cells[x][1]
             *  b = cells[x][2]
             * @param cells
             */
    	public void update (int[][] cells)
    	{
    		if ( cells.length != this.getWidth() )
    		{
    			System.err.println("array length does not match with image length.");
    			System.exit(-1);
    		}
     
    		for ( int y = 0 ; y != this.getHeight()-1 ; y++ )
    			for ( int x = 0 ; x != this.getWidth() ; x++ )
    				this.setPixel(x, y, this.getPixel(x, y+1) );
     
     
    		for ( int x = 0 ; x != cells.length ; x++ )
    				this.setPixel(x, this.getHeight()-1, cells[x][0], cells[x][1], cells[x][2] );
    	}
     
    	/**
             * update forest.
             *      cells[x][y] == 0 : no tree
             *  cells[x][y] == 1 : tree
             *  cells[x][y] == 2 : burning tree
             * @param cells
             */
    	public void updateForest (Environnement[][] cells)
    	{
    		if ( cells.length != this.getWidth() )
    		{
    			System.err.println("array length does not match with image length.");
    			System.exit(-1);
    		}
     
    		for ( int y = 0 ; y != cells[0].length ; y++ )
    			for ( int x = 0 ; x != cells.length ; x++ )
    			{
    				switch ( cells[x][y].getCouleur()  )
    				{
    					case 0: //vide
    						this.setPixel(x,y,195, 176, 145);
    						break;			
    					case 1://vert
    						this.setPixel(x,y,0,255,0);
    						break;
    					case 2://rouge tres clair
    						this.setPixel(x,y,255,102,102);
    						break;
    					case 3://rouge clair
    						this.setPixel(x,y,204,0,0);
    						break;
    					case 4://rouge foncé
    						this.setPixel(x,y,102,0,0);
    						break;
    					case 5://noir
    						this.setPixel(x,y,0,0,0);
    						break;
    					case 6://eau bleu
    						this.setPixel(x,y,0,0,153);
    						break;
     
    					case 10: //proie
    						//this.setPixel(x,y,150,113,23);
    						this.setPixel(x,y,255,215,0);
    						break;
    					case 11:// predateur violet
    						//this.setPixel(x,y,153,51,153);
    						this.setPixel(x,y,102,0,0);
     
    				}
    			}
    	}
     
    }
    Tout cela c 'est pour gérer les fenetres etc ...
    ensuite j'ai une classe ENVIRONNEMENT dont descend les autres classes

    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
    public abstract class Environnement{
    	protected int couleur;
    	protected int temperature;
     
    	public Environnement(int couleur,int temperature){
    		this.couleur=couleur;
    		this.temperature=temperature;
    	}
     
    	public abstract int getCouleur();
     
    	public abstract void augTemperature();
    	public abstract int getTemperature();
     
    	public abstract void setCouleur(int couleur);
    	public abstract void setTemperature(int temperature);
    }
    voila comment est construit mon main :

    import java.util.ArrayList;
    public class ForestFire extends CAtoolbox {

    public static void main(String[] args) {

    //initialisation de l'eau etc ...
    //ex : tableauCourant[20][20]= new Eau(0,0)
    //puis ont actualise en fonction des regles comme ci-dessous :

    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
    while ( it != nombreDePasMaximum )
    	    {
    		// 1a - affiche de l'etat courant dans la fenetre graphique (toutes les cellules)
    		image.updateForest(tableauCourant);
     
    		// 1 - mise a jour de l'automate (dans le tableau en tampon)
    		for ( int x = 0 ; x != tableauCourant.length ; x++ )
    		    for ( int y = 0 ; y != tableauCourant[0].length ; y++ )
    			{
     
     
     
     
    			    //vide reste vide ou peut devenir eau
    			    if(tableauCourant[x][y].getCouleur()==0){
     
    				if(Math.random()<ppoussearbre){
    				    nouveauTableau[x][y]=new Arbre(1,0,10);
    				}	
    				//si une case vide entouré d'eau alors devient eau
    				else if((tableauCourant[(x+1)%dx][y].getCouleur()==6)||
    					(tableauCourant[x][(y+1)%dy].getCouleur()==6)||
    					(tableauCourant[(x-1+dx)%dx][y].getCouleur()==6)||
    					(tableauCourant[x][(y-1+dy)%dy].getCouleur()==6))
    				    {
    				    	if(it<=((int)nombreDePasMaximum/3))
    				    	if ( propeau >= Math.random())// probabilité de propagation de l'eau
    					nouveauTableau[x][y]=new Eau(6,0);
    				    }
     
    				else{
    				    nouveauTableau[x][y].setCouleur(0);
    				    nouveauTableau[x][y].setTemperature(0);
    				}
    			   }
                       }
          it++;
    }
    ps : il doit sûrement avoir un problème de parenthèses car j'ai raccourci le code pour la lisibilité du code
    Donc ce que je voudrai c'est que lorsqu'il clique sur la fenêtre, on récupère les coordonnées puis ont modifie le tableau a en fonction des touches haut ou bas ou gauche ou droite pressé pressé par l'utilisateur, et que ceci soit actualiser dans la fenêtre.
    Merci de m'aider

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Pour simplifier j abandonne l idee du clic de la souris. Je voudrai juste qu une proie ou predateur soit choisi aleatoirement pour lui . Enfete il faut juste qu en fonction des touche haut bas gauche droite, les coordonner de l agent dans la liste change, ensuite tout ce qui edt affichage est automatique . Merci de m aider

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 9
    Points
    9
    Par défaut
    Je galère vraiment dessus .. N'importe quel indication m'interresse .. Svp . Merci

Discussions similaires

  1. Evènement basé sur la souris + clavier
    Par Ghorin dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/08/2010, 16h49
  2. Evénement souris ?
    Par Jibees dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/05/2006, 11h28
  3. [UBUNTU] Problème de détection souris/clavier
    Par Merlin dans le forum Ubuntu
    Réponses: 4
    Dernier message: 19/04/2006, 19h23
  4. Switch ecran/souris/clavier
    Par grafikm_fr dans le forum Périphériques
    Réponses: 11
    Dernier message: 18/02/2006, 21h06
  5. [D7] réaction d'une TCombobox à la souris / clavier
    Par Magnus dans le forum Composants VCL
    Réponses: 3
    Dernier message: 02/09/2005, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo