Le rubix cube en 3d avec ou sans images

Soyez le premier à donner votre avis sur cette source.

Vue 14 561 fois - Téléchargée 896 fois

Description

interactif mais injouable. c pur le fun!
projet manipulable sur Jbuilder perso
sans java3D

Source / Exemple :


//la classe principale 

import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.lang.Math;
import java.lang.Thread;
import java.lang.System;
import java.net.URL;

public class go extends Applet implements Runnable
{

int a,b,i,largeurEcran=800,hauteurEcran=700,nb,facettex[]=new int[4],
facettey[]=new int[4],jeupret[];
rubicube GO;
PixelGrabber grosPx;
Image entrez,chargement,jeu;
boolean toutDebut = true,toutouDebut = true;
Graphics g2;
Image Imagecachee;

//chargement d'images
 public void init()
 {
  largeurEcran = new Integer(getParameter("largeurEcran")).intValue();
  hauteurEcran = new Integer(getParameter("hauteurEcran")).intValue();
  setBackground(new Color(125,125,152));
  entrez = getImage(getDocumentBase(),"entrez.gif");
  jeu = getImage(getDocumentBase(),"jeupret.gif");
  MediaTracker myTracker=new MediaTracker(this);
  myTracker.addImage(entrez,0);
  chargement = getImage(getDocumentBase(),"chargement.gif");
  myTracker.addImage(chargement,1);
  myTracker.addImage(jeu,2);
  try
  {
   myTracker.waitForID(0);
   myTracker.waitForID(1);
   myTracker.waitForID(2);
  }
  catch (InterruptedException e){}
  Imagecachee = createImage(largeurEcran,hauteurEcran);
  g2 = Imagecachee.getGraphics();
 }

 public void run(){}

//detection évennement
 public synchronized boolean handleEvent(Event e)
 {
  if(!toutouDebut)
  {
    GO.xPointCourant = e.x;
    GO.yPointCourant = e.y;
    a = GO.xPointCourant - GO.xAncienPointCourant;
    b = GO.yPointCourant - GO.yAncienPointCourant;
    if (a != 0 || b != 0) {
      GO.xDplt = a;
      GO.yDplt = b;
    }
    switch (e.id) {
      case Event.MOUSE_MOVE:
        GO.OK = false;
        break;
      case Event.MOUSE_DRAG:
        if (!toutDebut) {
          if (GO.tournerCube)
            GO.tournerCamera();
          if (GO.tournerFacettes) {
            if (!GO.rotationInitialisee)
              GO.initialiserRotation();
            GO.tournerFacettes();
          }
        }
        break;
      case Event.MOUSE_DOWN:
        GO.OK = false;
        if (!toutDebut) {
          if (!GO.dansLeCube())
            GO.tournerCube = true;
          else
            GO.tournerFacettes = true;
        }
        break;
      case Event.MOUSE_UP:
        if (!toutDebut) {
          if (GO.tournerFacettes)
            GO.estCEqueLEcube();
          GO.tournerFacettes = GO.tournerCube = false;
        }
        break;
      case Event.KEY_PRESS:
        switch (e.key) {
          case '2':
            i = 2;
            break;
          case '3':
            i = 3;
            break;
          case '4':
            i = 4;
            break;
          case '5':
            i = 5;
            break;
          case '6':
            i = 6;
            break;
          case '7':
            i = 7;
            break;
          case '8':
            i = 8;
            break;
          case '9':
            i = 9;
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    GO.xAncienPointCourant = GO.xPointCourant;
    GO.yAncienPointCourant = GO.yPointCourant;
  }
  repaint();
  return false;
 }

 public void update(Graphics g)
 {
  if(toutDebut || toutouDebut)//chargement images puis rotation puis zeu!
  {
   if(toutouDebut)
   {
    g2.drawImage(chargement,0,hauteurEcran/2-hauteurEcran/2*chargement.getHeight(this)/largeurEcran,largeurEcran,hauteurEcran*chargement.getHeight(this)/largeurEcran,this);
    g.drawImage(Imagecachee,0,0,this);
    GO = new rubicube(this);
    jeupret = new int[jeu.getWidth(this)*jeu.getHeight(this)];
    grosPx = new PixelGrabber(jeu,0,0,jeu.getWidth(this),jeu.getHeight(this),jeupret,0,jeu.getWidth(this));
    try
    {
     grosPx.grabPixels();
    }
    catch(InterruptedException ee){}
    GO.jeu = jeupret;
    GO.face3 = jeu.getWidth(this);
    GO.face4 = jeu.getHeight(this);
    GO.largeurEcran = largeurEcran;
    GO.hauteurEcran = hauteurEcran;
    toutouDebut = false;
   }
   if(toutDebut && !toutouDebut)
   {
    g2.clearRect(0,0,largeurEcran,hauteurEcran);
    g2.drawImage(entrez,0,hauteurEcran/2-hauteurEcran/2*entrez.getHeight(this)/largeurEcran,largeurEcran,hauteurEcran*entrez.getHeight(this)/largeurEcran,this);
    if(i >= 2 && i <= 9)
    {
     g2.clearRect(0,0,largeurEcran,hauteurEcran);
     GO.nombreParCote = i;
     GO.toutDebut();
     GO.stockerLesSommets();
     GO.xDplt = 0;
     GO.yDplt = 0;
     GO.tournerCamera();
     GO.aleatoire(g,g2,Imagecachee);
     toutDebut = false;
     GO.OK = true;
     GO.dessiner(g);
    }
    else
     g.drawImage(Imagecachee,0,0,this);
   }
  }
  else
   GO.dessiner(g);
 }
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
36
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
2 février 2010
1
va dans le répertoire compilation! et clique sur une des icônes html, je sais pu lakelle
Messages postés
2
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
29 mars 2005

ca marche pas désolé

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.