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

 Java Discussion :

création d'un jeu de coloriage. Problème de précision


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Par défaut création d'un jeu de coloriage. Problème de précision
    Bonjour a tous. Je réalise un jeu de coloriage de type paint. Pour cela j'ai utilisé les codes suivants.


    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
    Pdessin.addMouseListener(new MouseListener()
    		{
    			public void mousePressed(MouseEvent e)
    			{
    				x[i]=e.getX()+3;
    				y[i]=e.getY()+235;
    				if(y[i] < 136) y[i] = 136; 
    				if(x[i] > 642) x[i] = 642;
    				i++;	
    				repaint();       
    			}
    			public void mouseReleased(MouseEvent e)
    			{
    				x[i]=0;
    				y[i]=0;
    				i++;
    				repaint();
    			}
    			public void mouseClicked(MouseEvent evt){ }
    			public void mouseEntered(MouseEvent evt){ }
    			public void mouseExited(MouseEvent evt){ }
    		});
    		Pdessin.addMouseMotionListener(new MouseMotionListener()
    		{
    			public void mouseDragged(MouseEvent evt)	
    			{					
    				x[i] = evt.getX()+8;       
    				y[i] = evt.getY()+80;  
    				if(y[i] < 100) y[i] = 100; 
    				if(x[i] > 642) x[i] = 642; 
    				i++;		   
    				repaint();       
    			}
    			public void mouseMoved(MouseEvent evt){ }	
    		});

    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
    public void paint(Graphics g)
    	{
    		Graphics2D g2D = (Graphics2D)g;
    		switch(couleur)
    		{
    		case 0 : g2D.setColor(Color.black); break;
    		case 1 : g2D.setColor(Color.red); break;
     
    		}
    		switch(trait)
    		{ 
    		case 1 : g2D.setStroke(new BasicStroke(2.5f)); break;
    		case 2 : g2D.setStroke(new BasicStroke(5.0f)); break;
    		}	
    		for(int j=0 ; j<i ; j++)
    			if((x[j]+y[j] != 0) && (x[j+1]+y[j+1] !=0))
    					g2D.drawLine(x[j], y[j], x[j+1], y[j+1]);
    	}
    Mes problèmes sont les suivants:
    - Le premier "clic" pour dessiner se traduit par un long trait vertical non désiré.
    - Ce que je dessine est à environ 2cm au dessus du curseur.

    Je n'arrive pas a comprendre d'où vient mon problème. Merci de m'éclairer à ce sujet. bonne soirée

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 357
    Par défaut
    Ton code n'est vraiment pas clair : tout d'abord il y a des i et des j partout, certains ne sont pas des indices de boucle... Tu devrais utiliser des variables avec des non plus clairs, ça aiderait à la compréhension.

    J'ai l'impression que tes indices dépassent de ce qui est initialisé, mais c'est vraiment dur à certifier avec tes notations !

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par msarahm Voir le message
    - Le premier "clic" pour dessiner se traduit par un long trait vertical non désiré.
    Un clic sans bouger la souris ne doit rien faire. Tu voulais surement dire : "un clic avec un léger drag" ?

    - Ce que je dessine est à environ 2cm au dessus du curseur.
    Normal, tu l'as codé comme ça. Mais j'ai plutôt l'impression que tu as récupéré le code quelque part et que tu ne comprends pas son fonctionnement ;-)
    Je te suggère donc d'épurer le code au maximum et de le reconstruire petit à petit.
    Dans le code les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x[i]=e.getX()+3;
    y[i]=e.getY()+235;
    me porte à croire que le listener est mis sur la Frame et non sur le Panel qui permet de dessiner dans le code initial. En effet, ces coordonnées ressemblent beaucoup à la taille d'un menu ou de l'encadrement de la Frame. Et tu aurais remis ensuite le listener sur le Panel sans supprimer la translation.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Par défaut Re
    bonjour
    eh bien pour tout vous avouer. Je dois faire un projet d'informatique qui me permettra de valider cette matière. Et ce code est celui d'un de mes professeurs d'informatique. On a créer un fichier paint que je n'ai jamais compris. Et donc j'ai repris la correction... Quand à la compréhension, je l'avoue, j'ai beau essayer, je bloque. L'informatique n'est pas ma matière préféré mais j'essaie de m'y intéresser!

    Un clic sans bouger la souris ne doit rien faire. Tu voulais surement dire : "un clic avec un léger drag" ?
    Oui c'est ce que je voulais dire, même mon vocabulaire informatique n'est pas très varié!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Par défaut Re: précision sur mon problème
    J'ai passé un peu de mon temps sur ce programme. Et je voudrai quelque informations pour mieux le comprendre.
    J'ai compris que il fallait que j'adapte mon programme à ma fenetre.


    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
    Pdessin.addMouseListener(new MouseListener()
    		{
    			public void mousePressed(MouseEvent e)
    			{
                                   // x[i]= tableau des abscisses de type int
                                   // y[i]= tableau des ordonnées de type int
                                   // i= indice de déplacement.
    				x[i]=e.getX()+17; // je n'arrive a voir a quoi correspond le +17
    				y[i]=e.getY()+100; // je n'arrive pas a voir a quoi correspond ce +100
    				if(y[i] < 136) y[i] = 136; // ça, c'est ok
    				if(x[i] > 642) x[i] = 642;// ça c'est ok
    				i++;	
    				repaint();       
    			}
    			public void mouseReleased(MouseEvent e)
    			{
    				x[i]=0;
    				y[i]=0;
    				i++;
    				repaint();
    			}
    			public void mouseClicked(MouseEvent evt){ }
    			public void mouseEntered(MouseEvent evt){ }
    			public void mouseExited(MouseEvent evt){ }
    		});
     
    		Pdessin.addMouseMotionListener(new MouseMotionListener()
    		{
    			public void mouseDragged(MouseEvent evt)	
    			{					
    				x[i] = evt.getX()+20; // je ne sais pas a quoi sert le +20 exactement      
    				y[i] = evt.getY()+20;  // je ne sais pas a quoi sert le +20 exactement
    				if(y[i] < 136) y[i] = 136; 
    				if(x[i] > 642) x[i] = 642; 
    				i++;		   
    				repaint();       
    			}
    			public void mouseMoved(MouseEvent evt){ }	
    		});
    Je pensais réussir a comprendre les "+..." en les modifiant et en exécutant mon programme. Cependant je n'ai pas réussit a résoudre mon problème car je ne vois pas a quoi ça correspond. Merci

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 357
    Par défaut
    Contrairement à ce qui a été dit je pense que tu dessines bien dans un Panel (ou alors le est vraiment vicieux).

    Les "+" est ce qui qui fait que le trait que tu dessines est décalé par rapport à l'extrémité de ton pointeur de souris (les 2 cm dans ton post initial). En faisant varier ces valeurs tu devrais faire varier la distance entre la ligne tracée et ton curseur.

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par Furikawari Voir le message
    Contrairement à ce qui a été dit je pense que tu dessines bien dans un Panel
    J'ai bien préciser que le dessin dans le code initial se faisait dans la Frame

    Les "+" est ce qui qui fait que le trait que tu dessines est décalé par rapport à l'extrémité de ton pointeur de souris (les 2 cm dans ton post initial). En faisant varier ces valeurs tu devrais faire varier la distance entre la ligne tracée et ton curseur.
    Il faudrait même supprimer l'addition pour tracer directement sous le pointeur, comme je l'ai déjà dit
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création d un jeu : WEAPONS OF MASTERS
    Par scarecrow dans le forum Projets
    Réponses: 8
    Dernier message: 11/10/2006, 20h05
  2. [BENEVOLE] Création d'un Jeu en FLASH
    Par zakkk dans le forum Flash
    Réponses: 2
    Dernier message: 23/07/2006, 21h36
  3. Topic - La création d'un jeu avec opengl.
    Par AsmCode dans le forum OpenGL
    Réponses: 2
    Dernier message: 18/10/2005, 16h19
  4. Réponses: 19
    Dernier message: 15/03/2005, 09h05

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