Alors voilà. Je veux réaliser un applet faisant appel à plusieurs classes.
Mon but est de faire une map.
J'ai une première classe nommée AppletJeu dans laquelle il y a un init(). Elle fait appel à la classe carte.class. Et c'est justement avec celle ci que j'ai des problemes. Je voudrais faire une connexion à mysql, récuperer une valeur pour l'attribut "M", et selon qu'il vaut 1 ou 2, afficher deux map différentes. Mais voilà, si je mets un init() dans cette classe, l'applet m'affiche un carré blanc, comme si il n'avait pas attribué de valeur à mon cases[][] qui defini ma map. Et quand j'enlève ce init(), impossible de me connecter à la BDD... Je vous mets mon code, si quelqu'un peut m'aider, ça serait gentil... Merci O dieux du java...
import java.sql.*;
import java.awt.Image;
/**
* Cette classe représente la carte de jeu
*/
public class Carte {
private int cases [][];
public void init(){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/testi","root","");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery(
"SELECT * FROM perso WHERE pseudo =\"edin\""
);
connection.close();
} catch(Exception e) {
System.out.println("Erreur au chargement du driver : " + e.toString());
}
}
// Cette variable définit la carte de jeu : elle indique le type de chacune des 20x20 cases.
// Dans notre programme, le type 0 correspond à un carré d'herbe, et le type 1 correspond à un rocher
// ce tableau indique que les cases de type 0 sont praticables, et pas celles de type 1
private boolean terrainsPratiquables[] = {true, false, true};
// ce tableau contiendra les images rattachées aux types de case 0 et 1
private Image imagesTerrains[] = new Image[3];
/* Constructeur */
public Carte(Image terrain0, Image terrain1, Image terrain2) {
imagesTerrains[0] = terrain0; // pour les cases de type 0, on affichera l'image terrain0 (herbe)
imagesTerrains[1] = terrain1;
imagesTerrains[2] = terrain2;// pour les cases de type 1, on affichera l'image terrain1 (rocher)
}
/* Sert à vérifier que la case dont les coordonnées sont en paramètres, est accessible */
public boolean casePratiquable(int caseX, int caseY) {
// on vérifie que l'emplacement n'est pas en dehors des limites de la carte
if (caseX < 0 || caseX >=30 || caseY < 0 || caseY >=30) {
return false;
// puis on regarde dans le modèle si l'emplacement est pratiquable ou non
} else if(!terrainsPratiquables[cases[caseY][caseX]]) {
return false; // s'il ne l'est pas, on retourne false
// si c'est OK, on retourne true
} else {
return true;
}
}
/* Methodes get et set */
public int[][] getCases() {
return cases;
}
public boolean[] getTerrainsPratiquables() {
return terrainsPratiquables;
}
public Image[] getImagesTerrains() {
return imagesTerrains;
}
public void setcases(int[][] _cases) {
cases = _cases;
}
public void setTerrainsPratiquables(boolean[] _terrainsPratiquables) {
terrainsPratiquables = _terrainsPratiquables;
}
public void setImagesTerrains (Image[] _imagesTerrains) {
imagesTerrains = _imagesTerrains;
}
Premièrement tu dois étendre ta classe => extends JApplet.
Si tu enlèves ta méthode init() ton applet ne fonctionnera pas . Il lui faut absolument une méthode init() pour son premier lancement , elle n'est plus applée par la suite. Ensuite tu peux également rajouter une méthode start() . Celle-ci sera appelée à chaque chargement de page .
Désolé également pour cette réponse tardive .
__________________________
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne et personne ne sait pourquoi...