scyon
Messages postés17Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention14 janvier 2008
-
11 mars 2007 à 14:53
scyon
Messages postés17Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention14 janvier 2008
-
12 mars 2007 à 17:12
Le but de mon code est de chercher l'attribut FOR dans ma bdd, faire un private int case[][] selon le cas... J'ai toujours la meme erreur sans savoir d'ou elle vient, "illegal start of expression" au niveau ds private int case[]... S quelqu'un peut m'aider... Merci.
public class Carte {
private int M;
public void init(){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test projet","root","");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery(
"SELECT * FROM perso WHERE pseudo = edin"
);
// 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 >=40 || caseY < 0 || caseY >=40) {
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;
}
/**
* Cette classe représente la carte de jeu
*/
public class Carte {
private int M;
public void init(){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test projet","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 >=40 || caseY < 0 || caseY >=40) {
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;
}
/**
* Cette classe représente la carte de jeu
*/
public class Carte {
private int M;
public void init(){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test projet","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 >=40 || caseY < 0 || caseY >=40) {
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;
}
cheplu
Messages postés16Date d'inscriptionvendredi 2 février 2007StatutMembreDernière intervention 1 juillet 2007 11 mars 2007 à 15:21
Ta variables cases est déclarée à l'intérieur de ta méthode init. Ce n'est donc pas un attribut de ta classe mais une variable locale de la methode init().
Tu ne peux donc pas la déclarer private. Le modifier private n'a de sens que pour les attributs (ou les méthodes) d'une classe, pazs pour les variables locales.
Pour que cases soit un attrinut de ta classe tu doit la déclarer au même niveau que ton attribut M.
scyon
Messages postés17Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention14 janvier 20081 11 mars 2007 à 15:38
Merci de répondre, c sympa... Tu veux dire que je dois déclarer comme ca?
public class Carte {
private int M;
private int cases [][];
public void init(){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test projet","root","");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery(
"SELECT * FROM perso WHERE pseudo = edin"
);
while (rs.next()) {
rs.getString("FOR");
if (rs.getInt("FOR")==6){
cases [][] = {...
La il me met "not a statement"... Désolé je suis vraiment débutant. Je vois pas comment faire pour declarer avant le init sachant que mon appel BDD se fait dans le init justement... peux tu m'aiguiller?
Vous n’avez pas trouvé la réponse que vous recherchez ?
scyon
Messages postés17Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention14 janvier 20081 11 mars 2007 à 15:39
ou alors faut que je fasse comme ca?
public class Carte {
private int M;
private int cases [][];
public void init(){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test projet","root","");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery(
"SELECT * FROM perso WHERE pseudo = edin"
);
while (rs.next()) {
rs.getString("FOR");
if (rs.getInt("FOR")==6){
int cases [][] = {
scyon
Messages postés17Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention14 janvier 20081 11 mars 2007 à 15:46
oui avec ca, il compile corectement, mais la map représentée par le case [][] ne change pas selon le cas.. J'ai fait une faute dans mes requetes? ou dans mes if? ou dans mon code? lol
en tout cas, merci beaucoup.
cheplu
Messages postés16Date d'inscriptionvendredi 2 février 2007StatutMembreDernière intervention 1 juillet 2007 11 mars 2007 à 17:18
En utilisant ta dernière proposition, tu déclare une nouvelle variable cases qui "cache" l'attribut cases de ta classe (je ne suis pas sur d'être très claire ). Ce qui veut dire que tu ne met jamais à jour l'attribut cases de ta classe (soit this.cases). C'est pour cela que tu as l'impression que tu cases ne change pas selon les cas.
En gros, ce que tu peux faire c'est ça :
public class Carte {
private int M;
private int cases [][];
public void init(){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test projet","root","");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery(
"SELECT * FROM perso WHERE pseudo = edin"
);
while (rs.next()) {
rs.getString("FOR");
if (rs.getInt("FOR")==6){
int cases [][] = { /*... Ici tu déclare tout ton tableau ... */ };
this.cases = cases;
Avec cette dernière ligne, tu recopie la variable locale cases dans l'attribut cases de ta classe.
scyon
Messages postés17Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention14 janvier 20081 12 mars 2007 à 17:12
ben le truc c que c pas ma class principale, g une classe qui fait appel à cette classe et des que je mets le init(), ca m'affiche un ecran blanc, quelquesoit le cases[][] que je lui mette dans le init()... Que faire?