scyon
Messages postés17Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention14 janvier 2008
-
12 mars 2007 à 17:26
b_e_k_a
Messages postés1Date d'inscriptionvendredi 8 décembre 2006StatutMembreDernière intervention15 mars 2007
-
15 mars 2007 à 10:09
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;
}
b_e_k_a
Messages postés1Date d'inscriptionvendredi 8 décembre 2006StatutMembreDernière intervention15 mars 2007 15 mars 2007 à 10:09
tu assignes une constante locale (le 'cases' définit dans le if) à ta variable d'instance 'cases' mais il est détruit à la sortie du if. Remplace la définition (dans les if et les elses) par le code suivant :