| 12
 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
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 
 |  
public class Labyrinthe extends JPanel implements Runnable {
private int numero;
	private Monde monde;
	private ParamsJeu paramsJeu;
 
public void paintComponent(Graphics g) {
		super.paintComponent(g);
		monde.dessine(g);
	}
 
public void prepare() {
		// niveau 1
		if (paramsJeu.getNiveau() == 1) {
 
		}
		// niveau 2
		else if (paramsJeu.getNiveau() == 2) {
			// premier labyrinthe
			if (numero == LABYRINTHE_1) {
				this.requestFocus();
 
 
				paramsJeu.getPerso1().dessine(getGraphics());
 
 
				addKeyListener(new KeyAdapter() {
					public void keyPressed(KeyEvent e) {
						if (e.getKeyCode() == KeyEvent.VK_LEFT) {
							paramsJeu.getPerso1().deplaceVers(monde, paramsJeu.getPerso1().getPosX(), paramsJeu.getPerso1().getPosY()-1*Monde.getTaillePixel());
							paramsJeu.getPerso1().dessine(getGraphics());
						} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
							paramsJeu.getPerso1().deplaceVers(monde, paramsJeu.getPerso1().getPosX(), paramsJeu.getPerso1().getPosY()+1*Monde.getTaillePixel());
							paramsJeu.getPerso1().dessine(getGraphics());
						} else if (e.getKeyCode() == KeyEvent.VK_UP) {
							paramsJeu.getPerso1().deplaceVers(monde, paramsJeu.getPerso1().getPosX()-1*Monde.getTaillePixel(), paramsJeu.getPerso1().getPosY());
							paramsJeu.getPerso1().dessine(getGraphics());
						} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
							paramsJeu.getPerso1().deplaceVers(monde, paramsJeu.getPerso1().getPosX()+1*Monde.getTaillePixel(), paramsJeu.getPerso1().getPosY());
							paramsJeu.getPerso1().dessine(getGraphics());
						}	
					}
				});
			}
			// deuxieme labyrinthe
			else {
				addMouseListener(new MouseAdapter() {
					public void mousePressed(MouseEvent e) {
						// TODO
					}
					public void mouseReleased(MouseEvent e) {
						// TODO
					}
				});
				addMouseMotionListener(new MouseMotionAdapter() {
					public void mouseDragged(MouseEvent e) {
						// TODO
					}
				});
			}
		}
		// niveau 3
		else {
 
		}
	}
 
public class Personnage {
 
	// coordonnees initiales du personnage
	private static int initX = 19;
	private static int initY = 6;
 
	private String nom;
	private int oldX;
	private int oldY;
	private int posX;
	private int posY;
	private Image image;
 
	private Personnage() {
		oldX = posX = initX * Monde.getTaillePixel();
		oldY = posY = initY * Monde.getTaillePixel();
	}
 
	public Personnage(String nom, String fichierImage) {
		this();
		this.nom = nom;
		this.image = Toolkit.getDefaultToolkit().getImage(fichierImage);
	}
 
	// dessine un carre blanc a l'ancienne position
	// dessine l'image a la nouvelle position
	public void dessine(Graphics g) {
		g.setColor(Color.RED);
		g.fillRect(oldY, oldX, Monde.getTaillePixel(), Monde.getTaillePixel());
		g.drawImage(image, posY, posX, null);
	}
 
// newX, newY : coordonnees absolues (multipliees par getTaillePixel())
	public void deplaceVers(Monde m, int newX, int newY) {
		// les coordonnees reelles se referent aux indices de la matrice Monde
		// si les nouvelles coordonnees chevauchent deux cases de taille getTaillePixel(), on teste la matrice sur la deuxieme case
		int realX = newX % Monde.getTaillePixel() == 0 ? newX / Monde.getTaillePixel() : newX / Monde.getTaillePixel() + 1;
		int realY = newY % Monde.getTaillePixel() == 0 ? newY / Monde.getTaillePixel() : newY / Monde.getTaillePixel() + 1;
 
		if (realX >= 0 && realX < Monde.getNbL() && realY >= 0 && realY < Monde.getNbC()
				&& !m.isMurAt(realX, realY)) {
			oldX = posX;
			oldY = posY;
			posX = newX;
			posY = newY;
		}
	}
 
	public int getPosX() {
		return posX;
	}
 
	public int getPosY() {
		return posY;
	}
} | 
Partager