JAVA problème de tableaux

Fermé
KissCool936 Messages postés 124 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 30 juillet 2009 - 19 mai 2009 à 12:34
 biboo - 19 mai 2009 à 14:40
Bonjour, je vais tenter d'être assez clair...

Vu que je n'ai pas de cours (grève depuis janvier...-__-'...) j'me suis lancé dernièrement un projet, programmer un petit jeux en Java déjà je fais du simple code pour voir un genre de jeu (où le déroulement se passera en console) puis éventuellement je m'attaquerai au graphique après ^^'

Le but est donc essentiellement de voir un maximum de choses et en même temps de progresser en pratiquant !!

Donc, je suis dans mon jeu où j'ai créer certaines classes, peu importe, maintenant le problème est que je suis dans la classe principale (celle qui contient le main) et j'ai fais quelques procédure au-dessus afin de faciliter la gestion...
L'une d'entre elle a pour but de générer un nombre aléatoirement...voici le code (celle-ci fonctionne parfaitement !!)

	
	public static int Wizard()
	{
		int wizard = ((int) Math.floor( Math.random() * 10 ));
		return (wizard);
	}


Maintenant, on arrive à mon problème...cette procédure à pour but finial de choisir au hasard un nombre qui en fait sera le nombre de monstre généré (dans un tableau j'avais pensé...donc un tableau de monstres...)...

Mais pour faciliter le jeu, il me semble logique de "automatiser" cette génération...donc voici une autre procédure qui doit renvoyer un tableau de Monstre !!
Voici le code :

	public static Monstre[] WMonstre()
	{
		Monstre[] mTab={};
		int z = 0;
		do
		{
			z = Wizard();				
		}while(z<0 || z>6);
		
		for(int w = Wizard(); w>0; w--)
		{
			mTab[w] = new Monstre(z);
		}
		
		return (mTab[]);
	}



Je l'appel ensuite dans mon "main" par :
Monstre[] m2 = WMonstre();


Eclipse m'indique qu'il y a une erreur sur le
return (mTab[]);
, mais je ne vois pas pourquoi...il me propose de rempplacer par Monstre au lieu de Monstre[]...O.o !!


J'avoue je suis un peu perdu et je ne sais plus quoi faire... :'(
Donc si quelqu'un pourrai vérifier mon code, me dire si il y a en effet une erreur et me dire où elle est (voir même me la corriger ^^ lol)...



PS: Je rajoute ma classe Monstre ^^ çà peux aider...

// Constructeur par défaut
	Monstre(int lvl)
	{
		if(lvl == 1)
			this.vie = 30;
		else if (lvl == 2)
				this.vie = 80;
			else if (lvl == 3)
					this.vie = 130;
				else if (lvl == 4)
						this.vie = 180;
					else if(lvl == 5)
							this.vie = 250;
	}





// AUTRES
	
	public String toString()
	{
		String s = "";
		System.out.println("Le monstre a "+getVie()+" point de vie.");
		return (s);
	}


Je vous remercie d'avance ;)
A voir également:

4 réponses

Tu dois retourner mTab, pas mTab[].

Ensuite, fixe d'abord le taille de ton tableau de monstre, et fais un parcours de boucle sur la taille de ce tableau pour le remplir:

int z = Wizard();
Monstre [] mTab = new Monstre[z];

for( int i = z ; i >= 0 ; i--) {
mTab[i] = ..
}
1
Un autre conseil, si tu veux éviter les "if" imbriqués, utilise un switch/case (ne marchant que sur les types primitifs - int, char etc...):

switch(ma_variable) {

case int_1 : // Bloc d'instruction;
break; // Pour sortir du switch

case int_2 : // Bloc d'instruction;
break; // Pour sortir du switch

case int_3 : // Bloc d'instruction;
break; // Pour sortir du switch

default : // Bloc d'instruction si ma_variable a une autre valeur que les case précédents
break; // Pour sortir du switch

} // Fin du switch
1
KissCool936 Messages postés 124 Date d'inscription dimanche 5 octobre 2008 Statut Membre Dernière intervention 30 juillet 2009 20
19 mai 2009 à 13:52
Ah bah merci ^^

Pour le switch j'ai pas fais gaffe c'est vrai qu'avec le C c'est légérèment pareil sur les bases...j'vais modifier çà ;) merci beaucoup !!
0
De rien. :)

En même temps, le Java est issu du C. >=)
0