1 2 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
|
public class CreationGrille extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
// ça je touche pas, je ne sais pas tout ce que tu cherches à faire, et tu
// verras les erreurs dedans plus tard (j'en vois 2 au moins)
GenerateurCarte generateurCarte = new GenerateurCarte();// mon generateur de
// carte qui va me
// permettre de
// generer la carte
JoueurHumain joueurHumain = new JoueurHumain("joueur1");
JoueurHumain joueurHumain2 = new JoueurHumain("joueur2");
ArrayList<ModelJoueur> joueurs = new ArrayList<ModelJoueur>();
GrilleJeu grille = new GrilleJeu();
// je sais pas ou tu appelles initialisation, mais il pourrait être appelé
// dans le constructeur
public CreationGrille() {
initialisation();
}
public void initialisation() {
joueurs.add(joueurHumain);// j ajoute 2 joueurs humains
joueurs.add(joueurHumain2);
GrilleJeu grilleJeu = generateurCarte.genererCarte(5, 5,
ConstanteCarte.VALEUR_MAX_GENERATEUR / 5,
new ArrayList<ModelJoueur>());// je genere ma carte de la grille
// de jeu
}
// jusque là j'ai pas touché
// maintenant pour dessiner dans un panel, il faut au moins redéfinir paint
// :
public void paint(Graphics g) {
super.paint(g);
// et appeler le code qui dessiner ce qu'on veut...
grilleGraphique(g, grille);
}
public void grilleGraphique(Graphics g, GrilleJeu grilleJeu) {
CaseTerrain[][] caseTerrains = grille.getGrille();
int width = getWidth();
int height = getHeight();
int largeur = width / grille.getAbcisseMax();
int hauteur = height / grille.getOrdonneeMax();
// la y'a un truc bizarre : les abscisses c'est en x, et les ordonnées
// en y d'habitudes, mais bon je touche pas, peut être que c'est inversé
// dans grille.
for (int i = 0; i < grille.getAbcisseMax(); i++) {
for (int j = 0; j < grille.getOrdonneeMax(); j++) {
caseGraphique(g, caseTerrains, i, j, largeur, hauteur);
}
}
}
private void caseGraphique(Graphics g,CaseTerrain[][] caseTerrains, int i, int j,int largeur,int hauteur) {
int x = j * largeur;
int y = i * hauteur;
TypesTerrains terrain = caseTerrains[i][j].getTerrain().getTerrainsJeu();
/* pour les images : aller dans la classe TypeGraphique et ajouter au case corespondant image = 'image coresponant au type';*/
g.drawImage(TerrainGraphique.selectImage(terrain, null), x, y, largeur, hauteur, this);
}
// en ensuite vient l'aspect clic (on pourrait faire mieux, mais ça va te
// suffire)
public void addImageClicker(final ImageClicker imageClicker) {
// en encapsule le faux listener dans le vrai listener de souris (ici un
// MouseAdapter, une implémentation de MouseListener qui ne t'oblige pas
// à implémenter toutes ses méthodes (parce qu'elles le sont déjà)
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// comme je l'ai dit, on calcule la hauteur et la largeur de la
// m^me manière qu'on la fait pour dessiner
int width = getWidth();
int height = getHeight();
int largeur = width / grille.getAbcisseMax();
int hauteur = height / grille.getOrdonneeMax();
// on détermine la colonne et la ligne dans la grille
int colonne = e.getX() / largeur;
int ligne = e.getY() / hauteur;
// on transmet les informations au faux listener, de manière à
// ce qu'on puisse réagir avec quand on l'utilise
imageClicker.click(grille.getGrille()[colonne][ligne]);
imageClicker.click(grille, colonne, ligne);
}
});
}
public static abstract class ImageClicker {
public ImageClicker() {
}
// tu n'est pas obligé de mettre les 2, la première peux suffire à tout
// faire
// la seconde peut simplifier certains traitements qui ne concernent que
// la case seule
// si tu ne mets qu'une seule méthode, au lieu d'une classe abstraite,
// ImageClicker peut être une interface
public void click(GrilleJeu source, int colonne, int ligne) {
}
public void click(CaseTerrain caseTerrain) {
}
}
} |
Partager