je vous met tout ce dont je me sert pour mon prog, si des fois ca peut aider puisque je n'y suis tjrs pas arrivé :
la classe position
package jeu;
import java.util.Vector;
public class Position{
private int x,y;
public Position(int a, int b) {
x=a;
y=b;
}
public int getx(){
return x;
}
public int gety(){
return y;
}
public void setpos(int a, int b) {
x=a;
y=b;
}
}
la classe mouton
package jeu;
import java.util.Vector;
public class Moutons{
Position position;
Environnement environnement;
String nom;
public Moutons(Environnement en,Position posi,String mot){
environnement=en;
position=posi;
nom=mot;
}
public void step () {
// Initialisation des variables utilisées pour le déplacement
int compteur=0;
int px[];
int py[];
px = new int[9];
py = new int[9];
// Test les neuf cases entourant la position du mouton
for (int i=1 ; i<4 ; i++) {
for (int j=1 ; j<4 ; j++) {
// Test si le mouton se situe sur les bords de l'environnement
if (((position.getx()+i-2)<(int)(environnement.nblargeur)-1) && ((position.getx()+i-2)>=0) && ((position.gety()+j-2)>=0) && ((position.gety()+j-2)<(int)(environnement.nblargeur)))
// Test si la case est vide
if (environnement.p[position.getx()+i-2][position.gety()+j-2]) {
/* On garde les positions possibles dans deux tableaux
compteur : nombre de cases libres
*/
px[compteur] = position.getx()+i-2;
py[compteur] = position.gety()+j-2;
compteur++;
} //if
} //boucle for j
} //boucle for i
// Cas où aucune cas n'est libre
if (compteur == 0) {
System.out.println(" Deplacement impossible " );
} //if
// Un seul cas possible
if (compteur == 1) {
environnement.p[px[1]][py[1]]=false;
environnement.p[position.getx()][position.gety()]=true;
position.setpos(px[1],py[1]);
} //if
// Cas où plusieurs déplacement sont possibles
if (compteur > 1) {
// Choix aleatoire d'une case libre
int choix = (int)(Math.random()*compteur);
environnement.p[px[choix]][py[choix]]=false;
environnement.p[position.getx()][position.gety()]=true;
position.setpos(px[choix],py[choix]);
} //if
} //step
}
la classe environnement
package jeu;
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
import javax.swing.*;
public class Environnement{
// initialisation de la taille de l'environnement
int nblargeur;
boolean[][] p;
public Environnement(int larg){
nblargeur=larg;
p=new boolean[larg][larg];
}
public void Setfalse(int x,int y){
p[x][y]=false;
}
public boolean getenv(int a,int b){
return p[a][b];
}
public void Settrue(int x,int y){
p[x][y]=true;
}
/* On place les moutons dans l'environnement
les paramètres:
- nbmouton : nombre de mouton
- Position[] pos: tableau comprenant la position propre de chaque mouton
- int[][] en: tableau d'entiers ( 0 : case libre , 1 : case occupée )
*/
public void init(int nbmouton,Moutons[] moutons){
// Initialisation de la position de chaque mouton
for(int i=0 ; i<nbmouton ; i++){
boolean ex=true;
while (ex){
ex=false;
Position d=new Position((int)(nblargeur*Math.random()),(int)(nblargeur*Math.random()));
moutons[i]=new Moutons(this,d,"max" );
// Vérification qu'aucun des moutons se superposent
for (int j=0 ; (j<i) && (!ex) ; j++){
if ((moutons[i].position.getx()==moutons[j].position.getx()) && (moutons[i].position.gety()==moutons[i].position.gety()))
ex=true;
} // fin du for j
} // fin du while
// Affichage des positions
System.out.println("("+moutons[i].position.getx()+","+moutons[i].position.gety()+" )" );
// Sauvegarde de l'etat de l'environnement
p[moutons[i].position.getx()][moutons[i].position.gety()]=false;
} //fin du for i
} //fin init
}
la classe plateau
package jeu;
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.border.Border;
import java.util.*;
public class Plateau extends JFrame {
Environnement env;
Moutons[] mou;
Font f;
int k=0, hauteur = 400, largeur = 400, taillecase = 40, nbmouton, nbstep=3;
private class Quit implements ActionListener {
public void actionPerformed(ActionEvent e) {
k = -1;
repaint();
}
}
public Plateau(Environnement en,Moutons[] moutons, int nbm) {
super("Jeu Loup - Agneau" );
nbmouton = nbm;
mou = moutons;
env = en;
}
public void intro(Graphics g){
g.setColor(Color.black);
g.fillRect(0,0,800,600);
g.setColor(Color.white);
f = new Font("Courier", Font.BOLD, 20);
g.setFont(f);
g.drawString("Jeu LOUP-AGNEAU",300,300);
try { Thread.sleep(1000);} catch (Exception ex){}
g.setColor(Color.black);
g.fillRect(0,0,600,600);
g.setColor(Color.white);
g.drawString("Présenté par",315,300);
try { Thread.sleep(2000);} catch (Exception ex){}
g.setColor(Color.black);
g.fillRect(0,0,600,600);
g.setColor(Color.white);
g.drawString("Coupat Julien",315,280);
g.drawString("ET",380,300);
g.drawString("Fernandes François",285,320);
try { Thread.sleep(2000);} catch (Exception ex){}
g.setColor(Color.black);
g.fillRect(0,0,600,600);
g.setColor(Color.white);
g.drawString("Oublie pas de regarder en dessous du plateau",70,320);
try { Thread.sleep(4000);} catch (Exception ex){}
g.drawString("et de cliquez sur le bouton",200,350);
try { Thread.sleep(4000);} catch (Exception ex){}
g.drawString("qd tora fini de tou admirer, bien sur !!",100,400);
try { Thread.sleep(4000);} catch (Exception ex){}
g.setColor(Color.black);
g.fillRect(0,0,600,600);
g.setColor(Color.white);
g.drawString("bon fini les conneries, place au chef d'oeuvre !!!!!",70,320);
try { Thread.sleep(4000);} catch (Exception ex){}
g.drawString("lol",400,350);
try { Thread.sleep(4000);} catch (Exception ex){}
Container container = getContentPane();
JPanel pane = new JPanel();
pane.setBorder(BorderFactory.createEmptyBorder(500,650,40,30));
pane.setLayout(new GridLayout(1,0));
pane.setBackground(Color.white);
container.add(pane);
JButton Quit = new JButton("Quit" );
Quit.addActionListener(new Quit());
pane.add(Quit);
setVisible(true);
}
public void quitter(Graphics g) {
g.setColor(Color.black);
g.fillRect(0,0,800,600);
g.setColor(Color.blue);
f = new Font("Helvetica", Font.BOLD+Font.ITALIC, 40);
g.setFont(f);
for (int i=600 ; i>300 ; i--){
g.setColor(Color.blue);
g.drawString("Au revoir",300,i);
try { Thread.sleep(10);} catch (Exception ex){}
g.setColor(Color.black);
g.drawString("Au revoir !!",300,i);
}
g.setColor(Color.white);
try { Thread.sleep(2000);} catch (Exception ex){}
g.drawString("C T Zoli, hein ??!!",200,320);
try { Thread.sleep(4000);} catch (Exception ex){}
System.exit(0);
}
public void paint(Graphics g) {
Image im;
Date aujourdhui = new Date();
if (k==-1) quitter(g);
if (k == 0){
k++;
//im = getToolKit().getImage("moutons.JPG" );
//image_width = get.Width(this);
//image_height = get.Height(this);
// g.drawImage(im, 200, 200, this);
intro(g);
repaint();
return;
}
// dessin du plateau
g.setColor(Color.white);
g.fillRect(0,0,600,600);
g.setColor(Color.green);
g.fill3DRect(50,70,largeur,hauteur,true);
g.setColor(Color.black);
for (int i=0 ; i<10 ; i++){
for (int j=0 ; j<10 ; j++){
g.drawLine( (i*taillecase)+50 , 70 , (i*taillecase)+50 , 70+hauteur);
g.drawLine( 50 , (j*taillecase)+70 , 50+largeur , (j*taillecase)+70 );
g.setColor(Color.red);
g.drawString(" "+i,(i*taillecase)+65,65);
g.drawString(" "+i,35,(i*taillecase)+95);
g.setColor(Color.black);
}
}
g.drawLine(450,70,450,470);
g.drawLine(50,470,450,470);
// legende et date
g.drawArc(70,480,25,25,0,360);
g.drawString("Mouton",110,497);
g.setColor(Color.blue);
g.drawString("Jeu Loup - Agneau",200,45);
// Affichage de la date
g.setColor(Color.red);
g.drawString(aujourdhui+" ", 300, 550);
g.setColor(Color.black);
for (int i=0;i<nbmouton;i++){
if (!(env.p[mou[i].position.getx()][mou[i].position.gety()])) {
g.drawArc((((mou[i].position.getx())*40)+57),(((mou[i].position.gety())*40)+77),25,25,0,360);
}
}
// on deplace 3 fois les 10 moutons
if (k >= nbstep*nbmouton) return;
k++;
//System.out.println();
// on deplace 1 fois les 10 moutons
g.setColor(Color.red);
g.drawArc((((mou[k%nbmouton].position.getx())*40)+57),(((mou[k%nbmouton].position.gety())*40)+77),25,25,0,360);
try { Thread.sleep(2000);} catch (Exception ex){}
g.setColor(Color.green);
g.drawArc((((mou[k%nbmouton].position.getx())*40)+57),(((mou[k%nbmouton].position.gety())*40)+77),25,25,0,360);
try { Thread.sleep(1000);} catch (Exception ex){}
mou[k%nbmouton].step();
System.out.println
(
"("+mou[k%nbmouton].position.getx()
+","+mou[k%nbmouton].position.gety()+" )"
);
if (!(env.p[mou[k%nbmouton].position.getx()][mou[k%nbmouton].position.gety()])) {
g.setColor(Color.black);
g.drawArc((((mou[k%nbmouton].position.getx())*40)+57),(((mou[k%nbmouton].position.gety())*40)+77),25,25,0,360);
try { Thread.sleep(2000);} catch (Exception ex){}
}
repaint();
} // paint
} //plateau
et enfin le main
package jeu;
import java.awt.event.*;
public class Modele {
final static int nbmouton=10;
public static void main(String[] args) {
Position[] posit=new Position[nbmouton];
Environnement e=new Environnement(10);
Moutons[] moutons;
moutons = new Moutons[nbmouton];
Plateau p = new Plateau(e,moutons);
// Initialisation de l'environnement
for (int i=0 ; i<10 ; i++){
for(int j=0 ; j<10; j++){
e.Settrue(i,j);
} // for j
} // for i
// on place les moutons dans l'environnement
e.init(nbmouton,moutons);
try { Thread.sleep(5000);} catch (Exception ex){}
//Plateau p = new Plateau(e);
p.setSize(600,600);
p.show();
} // main
} // Modele
Message édité par bob_theking le 28-04-2003 à 03:23:44