begin process at 2010 02 09 21:04:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths et Algorithmes

 > UN LOGICIEL DE DESSIN 3D

UN LOGICIEL DE DESSIN 3D


 Information sur la source

Note :
Aucune note
Catégorie :Maths et Algorithmes Classé sous :3d, memoryimagesource, dessin, dessiner Niveau :Initié Date de création :14/11/2003 Vu / téléchargé :9 235 / 728

Auteur : artichaud

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

projet abandonné (non terminé) mais peut donner des idées (mais va falloir vous accrocher!)
sans java3D, pas de zbuffer
heapsort, courbes et surfaces nurbs
les menus s'affichent lorske le curseur s'approche des bords de l'applet (gauche haut et droit)
un exemple est donné (une voiture) mais les menus n'y fonctionnent plus
Le gros du prog tourne. Seul le rendering ne fonctionne pas. pour des exemples de remplissages des éléments de surface, voyez mes autres progs: rubixcube (jeu) et terre (divers)

dernière: lorske j'ai voulu le compiler pour voir si ce vieux prog marchait (projet dessin3D.jpr sous Jbuilder perso), il est signalé ke certaines classes ne sont pas trouvées, alors k'elles sont toutes là! si vous savez koi faire... moi je le laisse tomber. Alors pour ceux ke ça intéresse...

Source

  • //classe principale
  • import java.applet.Applet;
  • import java.awt.*;
  • import java.awt.event.*;
  • import java.awt.image.*;
  • import java.lang.Math;
  • import java.lang.Thread;
  • import java.lang.System;
  • import java.util.*;
  • public class go extends Applet implements Runnable
  • {
  • Image ADEFINIR;
  • MediaTracker myTracker=new MediaTracker(this);
  • //Toolkit T;
  • //tools t;
  • Graphics g1,g2,g3;
  • Font F = new Font("Courier",1,14);
  • Image Imagecachée1,Imagecachée2,Imagecachée3,palette;
  • MemoryImageSource M = null;
  • Thread thisThread = null;
  • espace E = new espace();
  • menu Menu = new menu(E);
  • MesConstantes co = new MesConstantes();
  • points LesPoints = new points();
  • fenêtre f = new fenêtre(Menu,E);
  • lignes LesLignes = new lignes(E);
  • surfaces LesSurfaces = new surfaces(Menu,E);
  • volumes LesVolumes = new volumes(LesSurfaces,E);
  • grille Grille = new grille(E,Menu,LesLignes,LesSurfaces);
  • sélection sélectionner;
  • boolean ilyaDesSurfaces = false,
  • toutActualiser = true,
  • actualiserLaGrille = false,
  • ilFaudraActualiser;
  • int x[],y[];
  • ligne ligneCourante,ligneCourante1,ligneCourante2,ligneCourante3,ligneCourante4,ligneCourante5,ligneCourante6,ligneCourante7,L1;
  • surface surfaceCourante;
  • volume volumeCourant;
  • point temp,PointCourant;
  • R2int pointCourant;
  • outils ou = new outils();
  • public void init()
  • {
  • LesSurfaces.initialiser(this);
  • palette = getImage(getDocumentBase(),"palette.jpg");
  • myTracker.addImage(palette,0);
  • try{myTracker.waitForID(0);}
  • catch (InterruptedException e){System.err.println ("Erreur : " + e);}
  • f.palette = palette;
  • f.chargerLaPalette();
  • x = new int[4];
  • y = new int[4];
  • setBackground( Color.black );
  • Imagecachée1 = createImage(co.largeurEcran,co.hauteurEcran);
  • g1 = Imagecachée1.getGraphics();
  • Imagecachée2 = createImage(co.largeurEcran,co.hauteurEcran);
  • g2 = Imagecachée2.getGraphics();
  • Imagecachée3 = createImage(co.largeurEcran,co.hauteurEcran);
  • g3 = Imagecachée3.getGraphics();
  • g2.setFont(F);
  • sélectionner = new sélection(f,Menu,LesLignes,LesSurfaces,LesVolumes,E);
  • Menu.afficherGrille = true;
  • /* Point P = new Point(10,10);
  • setCursor(t.createCustomCursor(ADEFINIR,P," "));*/
  • thisThread = new Thread(this);
  • thisThread.start();
  • }
  • public void start(){thisThread.resume();}
  • public void stop(){if (thisThread.isAlive())thisThread.suspend();}
  • public void run(){repaint();}
  • /* public void mousePressed(MouseEvent e)
  • {
  • if(!((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK))
  • {
  • Menu.sélectionner = false;
  • Menu.clic = "";
  • }
  • }
  • */
  • public synchronized boolean handleEvent(Event e)
  • {
  • E.AncienPointCourant = PointCourant;
  • E.ancienPointCourant = pointCourant;
  • if(e.x != 0 || e.y != 0)
  • Menu.pointCourant = pointCourant = new R2int(e.x,e.y);
  • Menu.positionSouris();
  • sélectionner.PointCourant = PointCourant = new point(co.écran,pointCourant,E);
  • if(!Menu.tournerLaCaméra &&
  • (!Menu.ignorerLeClic &&
  • !Menu.déplacerCaméra &&
  • !Menu.tournerLaGrille &&
  • !Menu.sélectionner &&
  • !Menu.zoom &&
  • Menu.clic != "surface sur 4 chemins" &&
  • Menu.clic != "surface sur 2 chemins" &&
  • Menu.clic != "extruder un chemin" &&
  • Menu.clic != "révolution d'un chemin" &&
  • !(Menu.clic == "cylindre" )))
  • {
  • if(Menu.accrocherGrille && !Menu.déplacerGrille && !Menu.joindreChemins)
  • {
  • Grille.accrocher(PointCourant);
  • sélectionner.PointCourant = PointCourant = new point(co.travail,PointCourant.coordPlanDeTravail,E);
  • }
  • if(Menu.accrochage && !Menu.centreRotation)
  • {
  • LesLignes.PointCourant = PointCourant;
  • temp = LesLignes.sélectionnerPoint();
  • if(temp != null)
  • PointCourant = new point(co.espace,temp,E);
  • }
  • else
  • if(Menu.centreRotation)
  • {
  • ilFaudraActualiser = true;
  • toutActualiser = sélectionner.unPoint();
  • if(toutActualiser)
  • E.pointVu = sélectionner.résultatP;
  • PointCourant = sélectionner.résultatP;
  • }
  • else
  • if(Menu.déplacerGrille)
  • {
  • ilFaudraActualiser = true;
  • toutActualiser = sélectionner.unPoint();
  • if(toutActualiser)
  • E.originePlanDeTravailtemp = E.originePlanDeTravail;
  • E.originePlanDeTravail = sélectionner.résultatP;
  • }
  • }
  • Menu.ignorerLeClic = false;
  • LesLignes.pointCourant = E.pointCourant = PointCourant.coordEcran;
  • f.PointCourant = LesLignes.PointCourant = E.PointCourant = PointCourant;
  • switch (e.id)
  • {
  • case Event.MOUSE_MOVE:
  • if(!Menu.dessinDunElément && !Menu.centreRotation && !Menu.déplacerGrille &&
  • !Menu.sélectionner && !Menu.joindreChemins)
  • sélectionner.nombreDePointsCliqués = 0;
  • break;
  • case Event.MOUSE_DOWN:
  • break;
  • case Event.MOUSE_DRAG:
  • if(Menu.tournerLaCaméra)
  • {
  • E.tournerCamera();
  • ilFaudraActualiser = true;
  • toutActualiser = false;
  • }
  • else
  • if(Menu.tournerLaGrille)
  • {
  • E.tournerGrille();
  • actualiserLaGrille = true;
  • }
  • else
  • if(Menu.déplacerCaméra)
  • {
  • E.déplacerCaméra();
  • ilFaudraActualiser = true;
  • toutActualiser = false;
  • }
  • else
  • if(Menu.zoom)
  • {
  • E.zoom();
  • ilFaudraActualiser = true;
  • toutActualiser = false;
  • }
  • else
  • if(Menu.déplacerGrille)
  • actualiserLaGrille = true;
  • break;
  • case Event.MOUSE_UP:
  • sélectionner.clicUp = true;
  • toutActualiser = ilFaudraActualiser;
  • ilFaudraActualiser = false;
  • if(Menu.dessinDunElément || Menu.centreRotation || Menu.déplacerGrille ||
  • Menu.sélectionner || Menu.joindreChemins)
  • sélectionner.nombreDePointsCliqués++;
  • if(Menu.dérouler)
  • {
  • if(f.isVisible())
  • f.afficher();
  • Menu.dessiner(g2);
  • Menu.enregistrerClic();
  • if(Menu.ignorerLeClic && Menu.dessinDunElément)
  • {
  • sélectionner.nombreDePointsCliqués--;
  • sélectionner.clicUp = false;
  • Menu.ignorerLeClic = false;
  • }
  • }
  • break;
  • default:
  • return false;
  • }
  • if(Menu.sortie)
  • sélectionner.clicUp = false;
  • Menu.sortie = false;
  • repaint();
  • return true;
  • }
  • public void raffraîchir(int queFautIlDessiner)
  • {
  • g1.clearRect(0,0,co.largeurEcran,co.hauteurEcran);
  • if(Menu.afficherLesSurfaces && queFautIlDessiner != co.nePasRedessinerLesSurfaces)
  • LesSurfaces.Dessiner(g1);
  • ;
  • if(!ilFaudraActualiser && (!Menu.tournerLaGrille && Menu.afficherGrille && !Menu.déplacerGrille ||
  • (Menu.clic == "surface sur 4 chemins" || Menu.clic == "surface sur 2 chemins" ||
  • Menu.clic == "joindre 2 chemins" || Menu.clic == "extruder un chemin" ||
  • Menu.clic == "révolution d'un chemin") && Menu.afficherGrille))
  • Grille.dessiner(g1);
  • ;
  • if(Menu.afficherLesLignes && Menu.clic != "surface sur 4 chemins" &&
  • Menu.clic != "surface sur 2 chemins" && Menu.clic != "joindre 2 chemins" &&
  • Menu.clic != "extruder un chemin" && Menu.clic != "révolution d'un chemin" &&
  • (queFautIlDessiner == co.nePasRedessinerLesSurfaces ||
  • queFautIlDessiner == co.dessinerLesSurfacesETlesRemplir ||
  • queFautIlDessiner == co.dessinerLesSurfacesETnePasLesRemplir ))
  • LesLignes.dessiner(g1);
  • ;
  • g2.drawImage(Imagecachée1,0,0,this);
  • toutActualiser = false;
  • }
  • public void update(Graphics g)
  • {
  • if(ilFaudraActualiser)
  • raffraîchir(co.dessinerLesSurfacesETnePasLesRemplir);
  • if(toutActualiser || Menu.actualiser)
  • raffraîchir(co.dessinerLesSurfacesETlesRemplir);
  • toutActualiser = false;
  • Menu.actualiser = false;
  • if(!Menu.tournerLaCaméra)
  • {
  • if(Menu.changerVue)
  • Grille.réorienter();
  • if(Menu.supprimer)
  • {
  • LesSurfaces.supprimerLesSurfacesEnPointillé();
  • LesLignes.supprimerLesLignesEnPointillé();
  • Menu.supprimer = false;
  • Menu.sélectionner = false;
  • }
  • if(Menu.déplacer)
  • {
  • LesSurfaces.déplacerLesSurfacesEnPointillé();
  • // LesLignes.déplacerLesLignesEnPointillé();
  • }
  • if(Menu.actualiserLaGrille)
  • {
  • raffraîchir(co.dessinerLesSurfacesETlesRemplir);
  • Menu.actualiserLaGrille = false;
  • }
  • g2.drawImage(Imagecachée1,0,0,this);
  • if(Menu.joindreChemins)
  • {
  • if(sélectionner.lignes(2))
  • LesLignes.joindre(sélectionner.ligne1,sélectionner.ligne2);
  • if(sélectionner.redessinerLesLignes)
  • raffraîchir(co.nePasRedessinerLesSurfaces);
  • LesLignes.dessiner(g2);
  • }
  • if(Menu.dessinDuneLigne && !Menu.dérouler)
  • if(sélectionner.leDessinDuneLigne(Menu.clic,g2))
  • raffraîchir(co.dessinerLesSurfacesETlesRemplir);
  • if(Menu.dessinDuneSurface && !Menu.dérouler)
  • {
  • if(!sélectionner.leDessinDuneSurface(Menu.clic,g2))
  • {
  • if(sélectionner.redessinerLesLignes)
  • raffraîchir(co.nePasRedessinerLesSurfaces);
  • LesLignes.dessiner(g2);
  • }
  • }
  • if(Menu.dessinDunVolume && !Menu.dérouler)
  • {
  • if(!sélectionner.leDessinDunVolume(Menu.clic,g2))
  • {
  • if(sélectionner.redessinerLesLignes)
  • raffraîchir(co.nePasRedessinerLesSurfaces);
  • }
  • }
  • if(Menu.sélectionner)
  • if(sélectionner.rectangle(g2))
  • raffraîchir(co.dessinerLesSurfacesETlesRemplir);
  • if(Menu.afficherCurseur)
  • E.dessinerCurseur(g2);
  • if(Menu.tournerLaGrille || Menu.déplacerGrille)
  • Grille.dessiner(g2);
  • if(Menu.dérouler)
  • Menu.dessiner(g2);
  • g.drawImage(Imagecachée2,0,0,this);
  • }
  • else
  • {
  • if(Menu.dérouler)
  • {
  • Menu.dessiner(g2);
  • g.drawImage(Imagecachée2,0,0,this);
  • }
  • else
  • g.drawImage(Imagecachée1,0,0,this);
  • }
  • g.setColor(Color.white);
  • if(Menu.actualiser)
  • repaint();
  • /*
  • g.drawString(sélectionner.volumeCourant.hauteur+"",10,30);
  • g.drawString(PointCourant.coordEcran.x+","+PointCourant.coordEcran.y,10,50);
  • g.drawString(temp.x+","+temp.y+","+temp.z,10,10);
  • //surfaceCourante.dessiner(g);
  • /*int s;
  • for(int i=0;i<LesSurfaces.nbEléments;i++)
  • {
  • s = ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y,
  • LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y,
  • PointCourant.coordEcran.x,PointCourant.coordEcran.y);
  • if(s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y,
  • LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y,
  • PointCourant.coordEcran.x,PointCourant.coordEcran.y) &&
  • s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y,
  • LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y,
  • PointCourant.coordEcran.x,PointCourant.coordEcran.y) &&
  • s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y,
  • LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y,
  • PointCourant.coordEcran.x,PointCourant.coordEcran.y))
  • {
  • x[0] = LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x;
  • y[0] = LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y;
  • x[1] = LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x;
  • y[1] = LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y;
  • x[2] = LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x;
  • y[2] = LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y;
  • x[3] = LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x;
  • y[3] = LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y;
  • g.setColor(Color.red);
  • g.fillPolygon(x,y,4);
  • g.setColor(Color.white);
  • g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].z,10,10);
  • g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].z,10,30);
  • g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].z,10,50);
  • g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].z,10,70);
  • g.drawString((float)LesSurfaces.barycentre[i][0].x+","+(float)LesSurfaces.barycentre[i][0].y+","+(float)LesSurfaces.barycentre[i][0].z,10,90);
  • }
  • }*/
  • }
  • }
//classe principale

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.lang.Math;
import java.lang.Thread;
import java.lang.System;
import java.util.*;

public class go extends Applet implements Runnable
{
 Image ADEFINIR;
 MediaTracker myTracker=new MediaTracker(this);
 //Toolkit T;
 //tools t;
 Graphics g1,g2,g3;
 Font F = new Font("Courier",1,14);
 Image Imagecachée1,Imagecachée2,Imagecachée3,palette;
 MemoryImageSource M = null;
 Thread thisThread = null;
 espace E = new espace();
 menu Menu = new menu(E);
 MesConstantes co = new MesConstantes();
 points LesPoints = new points();
 fenêtre f = new fenêtre(Menu,E);
 lignes LesLignes = new lignes(E);
 surfaces LesSurfaces = new surfaces(Menu,E);
 volumes LesVolumes = new volumes(LesSurfaces,E);
 grille Grille = new grille(E,Menu,LesLignes,LesSurfaces);
 sélection sélectionner;
 boolean ilyaDesSurfaces = false,
         toutActualiser = true,
         actualiserLaGrille = false,
         ilFaudraActualiser;
 int x[],y[];
 ligne ligneCourante,ligneCourante1,ligneCourante2,ligneCourante3,ligneCourante4,ligneCourante5,ligneCourante6,ligneCourante7,L1;
 surface surfaceCourante;
 volume volumeCourant;
 point temp,PointCourant;
 R2int pointCourant;
 outils ou = new outils();

 public void init()
 {
  LesSurfaces.initialiser(this);
  palette = getImage(getDocumentBase(),"palette.jpg");
  myTracker.addImage(palette,0);
  try{myTracker.waitForID(0);}
  catch (InterruptedException e){System.err.println ("Erreur : " + e);}
  f.palette = palette;
  f.chargerLaPalette();
  x = new int[4];
  y = new int[4];

  setBackground( Color.black );
  Imagecachée1 = createImage(co.largeurEcran,co.hauteurEcran);
  g1 = Imagecachée1.getGraphics();
  Imagecachée2 = createImage(co.largeurEcran,co.hauteurEcran);
  g2 = Imagecachée2.getGraphics();
  Imagecachée3 = createImage(co.largeurEcran,co.hauteurEcran);
  g3 = Imagecachée3.getGraphics();
  g2.setFont(F);
  sélectionner = new sélection(f,Menu,LesLignes,LesSurfaces,LesVolumes,E);
  Menu.afficherGrille = true;
 /* Point P = new Point(10,10);
  setCursor(t.createCustomCursor(ADEFINIR,P," "));*/
  thisThread = new Thread(this);
  thisThread.start();
 }

 public void start(){thisThread.resume();}
 public void stop(){if (thisThread.isAlive())thisThread.suspend();}
 public void run(){repaint();}

/* public void mousePressed(MouseEvent e)
 {
  if(!((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK))
  {
   Menu.sélectionner = false;
   Menu.clic = "";
  }
 }
 */

 public synchronized boolean handleEvent(Event e)
 {
  E.AncienPointCourant = PointCourant;
  E.ancienPointCourant = pointCourant;
  if(e.x != 0 || e.y != 0)
   Menu.pointCourant = pointCourant = new R2int(e.x,e.y);
  Menu.positionSouris();
  sélectionner.PointCourant = PointCourant = new point(co.écran,pointCourant,E);
  if(!Menu.tournerLaCaméra &&
     (!Menu.ignorerLeClic &&
      !Menu.déplacerCaméra &&
      !Menu.tournerLaGrille &&
      !Menu.sélectionner &&
      !Menu.zoom &&
      Menu.clic != "surface sur 4 chemins" &&
      Menu.clic != "surface sur 2 chemins" &&
      Menu.clic != "extruder un chemin" &&
      Menu.clic != "révolution d'un chemin" &&
      !(Menu.clic == "cylindre" )))
  {
   if(Menu.accrocherGrille && !Menu.déplacerGrille && !Menu.joindreChemins)
   {
    Grille.accrocher(PointCourant);
    sélectionner.PointCourant = PointCourant = new point(co.travail,PointCourant.coordPlanDeTravail,E);
   }

   if(Menu.accrochage && !Menu.centreRotation)
   {
    LesLignes.PointCourant = PointCourant;
    temp = LesLignes.sélectionnerPoint();
    if(temp != null)
     PointCourant = new point(co.espace,temp,E);
   }
   else
    if(Menu.centreRotation)
    {
     ilFaudraActualiser = true;
     toutActualiser = sélectionner.unPoint();
     if(toutActualiser)
      E.pointVu = sélectionner.résultatP;
     PointCourant = sélectionner.résultatP;
    }
    else
     if(Menu.déplacerGrille)
     {
      ilFaudraActualiser = true;
      toutActualiser = sélectionner.unPoint();
      if(toutActualiser)
       E.originePlanDeTravailtemp = E.originePlanDeTravail;
      E.originePlanDeTravail = sélectionner.résultatP;
     }
  }
  Menu.ignorerLeClic = false;
  LesLignes.pointCourant = E.pointCourant = PointCourant.coordEcran;
  f.PointCourant = LesLignes.PointCourant = E.PointCourant = PointCourant;

  switch (e.id)
  {
   case Event.MOUSE_MOVE:
    if(!Menu.dessinDunElément && !Menu.centreRotation && !Menu.déplacerGrille &&
       !Menu.sélectionner && !Menu.joindreChemins)
     sélectionner.nombreDePointsCliqués = 0;
    break;

   case Event.MOUSE_DOWN:
    break;

   case Event.MOUSE_DRAG:
    if(Menu.tournerLaCaméra)
    {
     E.tournerCamera();
     ilFaudraActualiser = true;
     toutActualiser = false;
    }
    else
     if(Menu.tournerLaGrille)
     {
      E.tournerGrille();
      actualiserLaGrille = true;
     }
     else
      if(Menu.déplacerCaméra)
      {
       E.déplacerCaméra();
       ilFaudraActualiser = true;
       toutActualiser = false;
      }
      else
       if(Menu.zoom)
       {
        E.zoom();
        ilFaudraActualiser = true;
        toutActualiser = false;
       }
       else
        if(Menu.déplacerGrille)
         actualiserLaGrille = true;
    break;

   case Event.MOUSE_UP:
    sélectionner.clicUp = true;
    toutActualiser = ilFaudraActualiser;
    ilFaudraActualiser = false;
    if(Menu.dessinDunElément || Menu.centreRotation || Menu.déplacerGrille ||
       Menu.sélectionner || Menu.joindreChemins)
     sélectionner.nombreDePointsCliqués++;
    if(Menu.dérouler)
    {
     if(f.isVisible())
      f.afficher();
     Menu.dessiner(g2);
     Menu.enregistrerClic();
     if(Menu.ignorerLeClic && Menu.dessinDunElément)
     {
      sélectionner.nombreDePointsCliqués--;
      sélectionner.clicUp = false;
      Menu.ignorerLeClic = false;
     }
    }
    break;
   default:
    return false;
   }
  if(Menu.sortie)
   sélectionner.clicUp = false;
  Menu.sortie = false;
  repaint();
  return true;
 }

 public void raffraîchir(int queFautIlDessiner)
 {
  g1.clearRect(0,0,co.largeurEcran,co.hauteurEcran);

  if(Menu.afficherLesSurfaces && queFautIlDessiner != co.nePasRedessinerLesSurfaces)
   LesSurfaces.Dessiner(g1);
;

  if(!ilFaudraActualiser && (!Menu.tournerLaGrille && Menu.afficherGrille && !Menu.déplacerGrille ||
     (Menu.clic == "surface sur 4 chemins" || Menu.clic == "surface sur 2 chemins" ||
     Menu.clic == "joindre 2 chemins" || Menu.clic == "extruder un chemin" ||
     Menu.clic == "révolution d'un chemin") && Menu.afficherGrille))
   Grille.dessiner(g1);
;

  if(Menu.afficherLesLignes && Menu.clic != "surface sur 4 chemins" &&
     Menu.clic != "surface sur 2 chemins" && Menu.clic != "joindre 2 chemins" &&
     Menu.clic != "extruder un chemin" && Menu.clic != "révolution d'un chemin" &&
    (queFautIlDessiner == co.nePasRedessinerLesSurfaces ||
     queFautIlDessiner == co.dessinerLesSurfacesETlesRemplir ||
     queFautIlDessiner == co.dessinerLesSurfacesETnePasLesRemplir ))
   LesLignes.dessiner(g1);
;
  g2.drawImage(Imagecachée1,0,0,this);
  toutActualiser = false;
 }

 public void update(Graphics g)
 {
  if(ilFaudraActualiser)
   raffraîchir(co.dessinerLesSurfacesETnePasLesRemplir);

  if(toutActualiser || Menu.actualiser)
   raffraîchir(co.dessinerLesSurfacesETlesRemplir);

  toutActualiser = false;
  Menu.actualiser = false;

  if(!Menu.tournerLaCaméra)
  {
   if(Menu.changerVue)
    Grille.réorienter();

   if(Menu.supprimer)
   {
    LesSurfaces.supprimerLesSurfacesEnPointillé();
    LesLignes.supprimerLesLignesEnPointillé();
    Menu.supprimer = false;
    Menu.sélectionner = false;
   }

   if(Menu.déplacer)
   {
    LesSurfaces.déplacerLesSurfacesEnPointillé();
//   LesLignes.déplacerLesLignesEnPointillé();
   }

  if(Menu.actualiserLaGrille)
  {
   raffraîchir(co.dessinerLesSurfacesETlesRemplir);
   Menu.actualiserLaGrille = false;
  }

  g2.drawImage(Imagecachée1,0,0,this);

  if(Menu.joindreChemins)
  {
   if(sélectionner.lignes(2))
    LesLignes.joindre(sélectionner.ligne1,sélectionner.ligne2);
   if(sélectionner.redessinerLesLignes)
    raffraîchir(co.nePasRedessinerLesSurfaces);
   LesLignes.dessiner(g2);
  }

  if(Menu.dessinDuneLigne && !Menu.dérouler)
   if(sélectionner.leDessinDuneLigne(Menu.clic,g2))
    raffraîchir(co.dessinerLesSurfacesETlesRemplir);

  if(Menu.dessinDuneSurface && !Menu.dérouler)
  {
   if(!sélectionner.leDessinDuneSurface(Menu.clic,g2))
   {
    if(sélectionner.redessinerLesLignes)
     raffraîchir(co.nePasRedessinerLesSurfaces);
    LesLignes.dessiner(g2);
   }
  }

  if(Menu.dessinDunVolume && !Menu.dérouler)
  {
   if(!sélectionner.leDessinDunVolume(Menu.clic,g2))
   {
    if(sélectionner.redessinerLesLignes)
     raffraîchir(co.nePasRedessinerLesSurfaces);
   }
  }

  if(Menu.sélectionner)
   if(sélectionner.rectangle(g2))
    raffraîchir(co.dessinerLesSurfacesETlesRemplir);

  if(Menu.afficherCurseur)
   E.dessinerCurseur(g2);

  if(Menu.tournerLaGrille || Menu.déplacerGrille)
   Grille.dessiner(g2);

  if(Menu.dérouler)
   Menu.dessiner(g2);

  g.drawImage(Imagecachée2,0,0,this);
}
else
{
  if(Menu.dérouler)
  {
   Menu.dessiner(g2);
   g.drawImage(Imagecachée2,0,0,this);
  }
  else
   g.drawImage(Imagecachée1,0,0,this);
}
  g.setColor(Color.white);
   if(Menu.actualiser)
    repaint();
/*
  g.drawString(sélectionner.volumeCourant.hauteur+"",10,30);
  g.drawString(PointCourant.coordEcran.x+","+PointCourant.coordEcran.y,10,50);
  g.drawString(temp.x+","+temp.y+","+temp.z,10,10);
//surfaceCourante.dessiner(g);
/*int s;
for(int i=0;i<LesSurfaces.nbEléments;i++)
{
 s = ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y,
            LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y,
            PointCourant.coordEcran.x,PointCourant.coordEcran.y);
 if(s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y,
            LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y,
            PointCourant.coordEcran.x,PointCourant.coordEcran.y) &&
    s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y,
            LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y,
            PointCourant.coordEcran.x,PointCourant.coordEcran.y) &&
    s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y,
            LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y,
            PointCourant.coordEcran.x,PointCourant.coordEcran.y))
 {
  x[0] = LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x;
  y[0] = LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y;
  x[1] = LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x;
  y[1] = LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y;
  x[2] = LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x;
  y[2] = LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y;
  x[3] = LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x;
  y[3] = LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y;
  g.setColor(Color.red);
  g.fillPolygon(x,y,4);
  g.setColor(Color.white);
  g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].z,10,10);
  g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].z,10,30);
  g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].z,10,50);
  g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].z,10,70);
  g.drawString((float)LesSurfaces.barycentre[i][0].x+","+(float)LesSurfaces.barycentre[i][0].y+","+(float)LesSurfaces.barycentre[i][0].z,10,90);
      }
}*/
 }
}



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • appartient.java
  • bouton.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier615 octets
  • dessin3D.dskTélécharger ce fichier [Réservé aux membres club]2 109 octets
  • dessin3D.jprTélécharger ce fichier [Réservé aux membres club]2 790 octets
  • dessin3D.jpr.localTélécharger ce fichier [Réservé aux membres club]781 octets
  • espace.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 231 octets
  • fenjtre.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier38 456 octets
  • go.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier13 103 octets
  • grille.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 153 octets
  • heapsort.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 128 octets
  • ligne.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 241 octets
  • lignes.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier6 059 octets
  • menu.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 596 octets
  • MesCalculs.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 369 octets
  • MesConstantes.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier942 octets
  • NouveauxPoints.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 536 octets
  • outils.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 709 octets
  • poing.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 875 octets
  • poingAdjacent.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier156 octets
  • point.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 364 octets
  • points.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 121 octets
  • R2int.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier702 octets
  • R3double.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier847 octets
  • saisie.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier8 325 octets
  • silection.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 512 octets
  • surface.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 163 octets
  • surfaces.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 932 octets
  • tools.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier82 octets
  • triangulation.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 326 octets
  • volume.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier12 040 octets
  • volumes.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier452 octets
  •   compilation!
    • appartient.classTélécharger ce fichier [Réservé aux membres club]1 501 octets
    • bouton.classTélécharger ce fichier [Réservé aux membres club]994 octets
    • espace.classTélécharger ce fichier [Réservé aux membres club]7 556 octets
    • fenjtre.classTélécharger ce fichier [Réservé aux membres club]21 351 octets
    • go!.htmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier168 octets
    • go.classTélécharger ce fichier [Réservé aux membres club]9 745 octets
    • grille.classTélécharger ce fichier [Réservé aux membres club]4 572 octets
    • heapsort.classTélécharger ce fichier [Réservé aux membres club]1 116 octets
    • index.htmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier344 octets
    • ligne.classTélécharger ce fichier [Réservé aux membres club]12 876 octets
    • lignes.classTélécharger ce fichier [Réservé aux membres club]5 408 octets
    • menu.classTélécharger ce fichier [Réservé aux membres club]7 392 octets
    • MesCalculs.classTélécharger ce fichier [Réservé aux membres club]255 octets
    • MesConstantes.classTélécharger ce fichier [Réservé aux membres club]1 471 octets
    • NouveauxPoints.classTélécharger ce fichier [Réservé aux membres club]4 537 octets
    • outils.classTélécharger ce fichier [Réservé aux membres club]4 766 octets
    • palette.jpgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 140 octets
    • poing.classTélécharger ce fichier [Réservé aux membres club]2 000 octets
    • poingAdjacent.classTélécharger ce fichier [Réservé aux membres club]352 octets
    • point.classTélécharger ce fichier [Réservé aux membres club]7 022 octets
    • points.classTélécharger ce fichier [Réservé aux membres club]1 512 octets
    • R2int.classTélécharger ce fichier [Réservé aux membres club]1 264 octets
    • R3double.classTélécharger ce fichier [Réservé aux membres club]1 432 octets
    • RangerFacettes.classTélécharger ce fichier [Réservé aux membres club]1 445 octets
    • RangerNorme.classTélécharger ce fichier [Réservé aux membres club]861 octets
    • RangerTriangles.classTélécharger ce fichier [Réservé aux membres club]1 304 octets
    • saisie.classTélécharger ce fichier [Réservé aux membres club]6 252 octets
    • silection.classTélécharger ce fichier [Réservé aux membres club]12 299 octets
    • silectionner.classTélécharger ce fichier [Réservé aux membres club]2 908 octets
    • surface.classTélécharger ce fichier [Réservé aux membres club]12 600 octets
    • surfaces.classTélécharger ce fichier [Réservé aux membres club]13 395 octets
    • triangulation.classTélécharger ce fichier [Réservé aux membres club]2 104 octets
    • volume.classTélécharger ce fichier [Réservé aux membres club]7 709 octets
    • volumes.classTélécharger ce fichier [Réservé aux membres club]896 octets
  •   exemple
    • bouton.classTélécharger ce fichier [Réservé aux membres club]994 octets
    • espace.classTélécharger ce fichier [Réservé aux membres club]7 556 octets
    • fenjtre.classTélécharger ce fichier [Réservé aux membres club]21 191 octets
    • go!.htmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier167 octets
    • go.classTélécharger ce fichier [Réservé aux membres club]27 375 octets
    • grille.classTélécharger ce fichier [Réservé aux membres club]4 576 octets
    • heapsort.classTélécharger ce fichier [Réservé aux membres club]1 116 octets
    • index.htmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier345 octets
    • ligne.classTélécharger ce fichier [Réservé aux membres club]13 164 octets
    • lignes.classTélécharger ce fichier [Réservé aux membres club]5 408 octets
    • menu.classTélécharger ce fichier [Réservé aux membres club]7 350 octets
    • MesConstantes.classTélécharger ce fichier [Réservé aux membres club]1 471 octets
    • NouveauxPoints.classTélécharger ce fichier [Réservé aux membres club]4 537 octets
    • outils.classTélécharger ce fichier [Réservé aux membres club]4 766 octets
    • palette.jpgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 142 octets
    • poing.classTélécharger ce fichier [Réservé aux membres club]2 000 octets
    • poingAdjacent.classTélécharger ce fichier [Réservé aux membres club]352 octets
    • point.classTélécharger ce fichier [Réservé aux membres club]7 022 octets
    • points.classTélécharger ce fichier [Réservé aux membres club]1 512 octets
    • R2int.classTélécharger ce fichier [Réservé aux membres club]1 264 octets
    • RangerFacettes.classTélécharger ce fichier [Réservé aux membres club]1 445 octets
    • RangerNorme.classTélécharger ce fichier [Réservé aux membres club]861 octets
    • saisie.classTélécharger ce fichier [Réservé aux membres club]6 178 octets
    • silection.classTélécharger ce fichier [Réservé aux membres club]12 303 octets
    • surface.classTélécharger ce fichier [Réservé aux membres club]12 524 octets
    • surfaces.classTélécharger ce fichier [Réservé aux membres club]13 395 octets
    • triangulation.classTélécharger ce fichier [Réservé aux membres club]2 104 octets
    • volume.classTélécharger ce fichier [Réservé aux membres club]7 944 octets
    • volumes.classTélécharger ce fichier [Réservé aux membres club]896 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip EBAUCHE DE MOTEUR 3D
Source avec Zip UNE TERRE QUI TOURNE (3D)
Source avec Zip LE RUBIX CUBE EN 3D AVEC OU SANS IMAGES

 Sources de la même categorie

Source avec Zip CLASSE MATRICE par frankladen11
Source avec Zip Source avec une capture RÉSOLUTION D'ÉQUATION GRÂCE AU CALCUL DES DÉTERMINANTS par frankladen11
Source avec Zip TYPE DE DONNÉES ABSTRAIT GRAPHE par smutsonberg
Source avec Zip Source avec une capture SIMPLEXE ET DUAL par MrRenaud
Source avec Zip ALGORITHME DE BELLMAN, CALCUL DES TEMPS AU PLUS TÔT ET RECHE... par michaelcourcy2005

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture JAVAPAINT! UN MSPAINT EN JAVA par CybertronSnk
Source avec Zip UN PARSER POUR LE LANGANGE DE DESSIN LOGO. par inf98
Source avec Zip PROGRAMME DE DESSIN QUI UTILISE LA GEOMÉTRIE VECTORIELLE par joe200
APPLET DE DESSIN + ANIMATIONS par optimal
Source avec Zip UNE TERRE QUI TOURNE (3D) par artichaud

Commentaires et avis

Commentaire de exbutterfly le 23/09/2004 16:20:25

Salut,
Ce que tu as fait m'intéresse. Je regarde en détail et je te tiens au courant pour voir si ça vaut le coup de continuer cette base là.
a+

Commentaire de artichaud le 24/09/2004 09:09:42

autant te dire tout de suite ke si tu veux faire de la 3D, vaut mieux ke tu passes par directX et cie

En faisant ce prog, je me suis rendu compte ke je suis à 100 lieues du niveau de programmation des grosses boites...

Commentaire de exbutterfly le 29/09/2004 15:32:44

Après survol du code, j'ai été horrifié ! Tu réinventes la roue.
Tu as raison pour faire de la 3D mieux vaut utilisé DirectX ou OpenGL.
J'avais trouvé l'api java 3D qui fourni une interface pour faire de la 3D sous OpenGL mais c'est beaucoup trop compliqué.

Commentaire de artichaud le 29/09/2004 20:02:37

ouais ben la roue, je l'ai faite en bois... alors k'elle existe déjà en version pneumatik
si tu es horrifié par la lecture, n'essaye pas de décripter mes autres sources... à côté, cette source (avec ses noms de fonctions relativement explicites) c'est kindergarten
pour faire de la 3D, va falloir te farcir les api. Mais en collectionnant les exemples en java3D, tu devrais arriver à kkch...
Mais c'est vrai ke le but initial de mes aventures dans la conception de ces sources était de proposer l'interface d'un moteur 3D en francais et facile d'utilisation. Seulement, comme je n'ai pas réussi à faire kkch de performant (il faudrait être toute une équipe de programmeurs), et ben j'ai laissé tombé
N'empêche, les lignes de codes (non l'interface) qui font tourner java3D ne doivent pas être plus faciles de lecture non plus!

Commentaire de mougen le 14/04/2005 15:12:57

Ce truc a l'air intéressant, mais j'ai toujours pas pu le lancer. C'est pas très malin d'avoir mis des accents dans les noms de variables, de classes etc...
Là, je suis en train de me faire c**** à faire des find/replace pour retrouver une certaine cohérence...

Commentaire de zekabyle le 07/04/2008 21:52:23

quand tu compiles tu mets l'option -encoding avec le bon codage et il n'y aura plus de warning sur les accents

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Dessin Java [ par christouilhe ] Bonjour à vous,j'ai une question à vous poser ... Je suis tout nouveau, tout beau, tout neuf dans le monde du dessin en Java ...Dans un premier temps, Probléme de rafraichisement [ par pekee38 ] Bonjour a tous et toutes .Je m'en remet a vous car j'ai un petit probl&#233;me.Je suis entraint de d&#233;velopper une application permettant de dessi probleme Dessin Java2D [ par fdcj ] Bonjour, je souhaite r&#233;aliser un sudoku. Pour l'instant, j'ai cr&#233;&#233; ma grille de jeu avec une JTable mais j'aimerai rajouter par dessus dessin vectoriel [ par tuctuc2 ] bonjour a tous,dans le cadre de mon pfe je cherche une api ou une methode en java qui realise la fonctionnalite suivante:avoir un bouton que lorsqu'on Disparition de dessin dans un JPanel [ par koalish ] bien le Bonjour &#224; tous !!!J'ai cr&#233;&#233; un JPanel avec comme arri&#232;re plan une carte de la Belgique et j'ai une m&#233;thode qui me per dessiner un trait pixel par pixel [ par PAFounet ] Bonsoir tout le monde, désolé de vous déranger mais j'ai un pitit problème et j'espère que vous pourrez m'aider à le résoudre... Alors voila, je me su Transformer un programme java en applet [ par sylsau ] Bonjour, J'ai fait une petit programme JAVA utilisant SWING. Voici un screenshot de ce petit programme : http://www.webmaitrise.com/utilitaire.png [Graphics2D] Dessin courbe lissée à N points de contrôle [ par cruachan ] Bonjour, Dans le cadre d'un projet de fin d'&#233;tude, je dois mod&#233;liser une route en 2D se calquant sur une carte existante. Pour se fair dessiner une image [ par qhhu ] Salut J'ai un probleme pour dessiner une image avec java.awt.Graphics2D ...J'utilise la m&#233;thode&nbsp; public abstract boolean drawImage(Image im, Dessin String [ par Horfee ] J'aimerais savoir s'il y a un moyen simple (&lt;=&gt;sans avoir a developper une classe DrawableString par exemple) qui permettrait de dessiner une ch


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales