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);
}
}
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.