J'essaie de mettre en place un petit concept de jeu en Java, et j'ai rencontré un problème étrange; Les tableaux int ne semblent pas stocker de valeurs dans certaines parties de mon code!
(Utilisation de netbeans 8.2)
Je suppose que c'est quelque chose de petit et fastidieux que j'ai raté.
Ceci est le constructeur d'une créature de base. Voir la méthode "addTrait"? C'est l'objectif.Essayer de déboguer des tableaux int
public Creature(String inputname)
{
if(DEBUG>0){System.out.println("DEBUG: CREATURE ");}
creaturename = inputname;
size = 1;
population = 1;
addTrait(new Trait("TEST",0,new int[]{4,4,4,4,4,4}),0);
addTrait(new Trait("EMPTY",0,new int[]{0,0,0,0,0,0}),1);
addTrait(new Trait("EMPTY",0,new int[]{0,0,0,0,0,0}),2);
}
C'est la méthode de la classe Creature.
public void addTrait(Trait newtrait, int slotnum)
{
myTraits[slotnum] = newtrait;
if(DEBUG>0){System.out.println("DEBUG: CREATURE > "
+ "addTrait > myTraits["+slotnum+"].getName() = "+
myTraits[slotnum].getName());}
for(int k=0;6>k;k++)
{
System.out.println("DEBUG: CREATURE > "
+ "addTrait > myTraits["+slotnum+"].getEffects()["+k+"] = "+
myTraits[slotnum].getEffects()[k]);
}
System.out.println();
}
Dans ma classe de pilote, je tente d'ajouter le trait "Sharp Eyesight" à ma créature test.
public class EvoDriver {
public static void main(String[] args) {
// initilize TraitList
TraitList myTraits = new TraitList();
// initilize Creature
Creature player1 = new Creature("Dragon Bear");
player1.addPop();
player1.addPop();
player1.growSize();
// add specific trait
//player1.addTrait(myTraits.getTrait("Carnivore"), 0);
player1.addTrait(myTraits.getTrait("Sharp Eyesight"), 1);
//player1.addTrait(myTraits.getTrait("Fire Breath"), 2);
//force update
player1.updateStats();
//print creature
player1.printCreature();
}
Ceci est le constructeur d'un trait. J'ai une classe qui est censée gérer l'initialisation des statistiques pour chaque trait appelé TraitList. Il contient toutes les données pour chaque trait. Cependant, lorsque la méthode "getEffects" est appelée, le résultat est toujours 0!
public class TraitList {
//DEBUG MODE
final int DEBUG = 1;
Trait[] allTraits = {new Trait("EMPTY",0,new int[]{0,0,0,0,0,0})};
// **** Constructors ****
/* HINTS
____________________________________________________________________________
effects[0] = feedertype;
effects[1] = size;
effects[2] = power;
effects[3] = stealth;
effects[4] = senses;
effects[5] = dangerous;
*/
public TraitList()
{
if(DEBUG>0){System.out.println("DEBUG: TRAITLIST ");}
boolean[] special = new boolean[2];
special[0] = false; //Alert the Herd
special[1] = false; //Pack Tactics
//add effects to list
// Sharp Eyesight; increases Senses by 3
//feedertype;
//size;
//power;
//stealth;
//senses;
//dangerous;
addTrait(new Trait("Sharp Eyesight", 2, new int[]{0,0,0,0,3,0})
.setDesc("Helps detect other creatures!"));
// Camouflage; increases Stealth by 3
addTrait(new Trait("Camouflage", 0, new int[]{0,0,0,0,0,0}));
// Alert the Herd; increases Senses by Population number
addTrait(new Trait("Alert the Herd", 0, special));
// Pack Tactics; increases Power by Population number
addTrait(new Trait("Pack Tactics", 0, special));
// Carnivore; creature can only eat meat; Senses +1, Stealth +1
addTrait(new Trait("Carnivore", -1, new int[]{0,0,0,0,0,0}));
// Omnivore; creature can eat meat and plants
addTrait(new Trait("Omnivore", -5, new int[]{0,0,0,0,0,0}));
// Horns; increases Dangerous by 1
addTrait(new Trait("Horns", 0, new int[]{0,0,0,0,0,0}));
// Fire Breath; increases Dangerous by 3, increases Power by 3; feed 10
addTrait(new Trait("Fire Breath", 10, new int[]{0,0,0,0,0,0}));
}
// **** Methods ****
public void addTrait(Trait newtrait)
{
// create temp array
Trait[] temp = new Trait[1];
temp[0] = newtrait;
Trait[] newtemp = new Trait[allTraits.length+1];
for (int k=0; allTraits.length>k;k++)
{
newtemp[k] = allTraits[k];
}
newtemp[allTraits.length] = temp[0];
allTraits = newtemp;
}
public Trait getRandomTrait() // to do
{
return null;
}
public int getTraitIndex(String searchname)//returns 0 if not found
{
for(int k=0;allTraits.length>k;k++)
{
if(DEBUG>0)
{System.out.println("DEBUG: TRAITLIST > getTraitIndex > k = "+k);}
if(DEBUG>0)
{System.out.println("DEBUG: TRAITLIST > getTraitIndex > "
+ "allTraits[k].getName() = "+allTraits[k].getName());}
if(searchname.equalsIgnoreCase(allTraits[k].getName()))
{
return k;
}
}
System.out.println("ERROR IN TraitList > getTraitIndex! TRAIT "
+ searchname +" DOES NOT EXIST!");
return 0;
}
public Trait getTrait(String name)//returns EMPTY trait if not found
{
return allTraits[getTraitIndex(name)];
}
}
Je ne sais pas comment je suis clair, mais je serais très reconnaissant des conseils, des conseils, l'enfer je prendrais une insulte utile indiquant mes erreurs stupides. Je vais joindre ma sortie de débogage.
run:
DEBUG: TRAIT
DEBUG: TRAIT > traitname = EMPTY
DEBUG: TRAIT > senses = 0
DEBUG: TRAITLIST
DEBUG: TRAIT
DEBUG: TRAIT > traitname = Sharp Eyesight
DEBUG: TRAIT > senses = 0
DEBUG: TRAIT
DEBUG: TRAIT > traitname = Camouflage
DEBUG: TRAIT > senses = 0
DEBUG: TRAIT
DEBUG: TRAIT > traitname = Carnivore
DEBUG: TRAIT > senses = 0
DEBUG: TRAIT
DEBUG: TRAIT > traitname = Omnivore
DEBUG: TRAIT > senses = 0
DEBUG: TRAIT
DEBUG: TRAIT > traitname = Horns
DEBUG: TRAIT > senses = 0
DEBUG: TRAIT
DEBUG: TRAIT > traitname = Fire Breath
DEBUG: TRAIT > senses = 0
DEBUG: CREATURE
DEBUG: TRAIT
DEBUG: TRAIT > traitname = TEST
DEBUG: TRAIT > senses = 0
DEBUG: CREATURE > addTrait > myTraits[0].getName() = TEST
DEBUG: CREATURE > addTrait > myTraits[0].getEffects()[0] = 0
DEBUG: CREATURE > addTrait > myTraits[0].getEffects()[1] = 0
DEBUG: CREATURE > addTrait > myTraits[0].getEffects()[2] = 0
DEBUG: CREATURE > addTrait > myTraits[0].getEffects()[3] = 0
DEBUG: CREATURE > addTrait > myTraits[0].getEffects()[4] = 0
DEBUG: CREATURE > addTrait > myTraits[0].getEffects()[5] = 0
DEBUG: TRAIT
DEBUG: TRAIT > traitname = EMPTY
DEBUG: TRAIT > senses = 0
DEBUG: CREATURE > addTrait > myTraits[1].getName() = EMPTY
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[0] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[1] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[2] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[3] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[4] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[5] = 0
DEBUG: TRAIT
DEBUG: TRAIT > traitname = EMPTY
DEBUG: TRAIT > senses = 0
DEBUG: CREATURE > addTrait > myTraits[2].getName() = EMPTY
DEBUG: CREATURE > addTrait > myTraits[2].getEffects()[0] = 0
DEBUG: CREATURE > addTrait > myTraits[2].getEffects()[1] = 0
DEBUG: CREATURE > addTrait > myTraits[2].getEffects()[2] = 0
DEBUG: CREATURE > addTrait > myTraits[2].getEffects()[3] = 0
DEBUG: CREATURE > addTrait > myTraits[2].getEffects()[4] = 0
DEBUG: CREATURE > addTrait > myTraits[2].getEffects()[5] = 0
DEBUG: TRAITLIST > getTraitIndex > k = 0
DEBUG: TRAITLIST > getTraitIndex > allTraits[k].getName() = EMPTY
DEBUG: TRAITLIST > getTraitIndex > k = 1
DEBUG: TRAITLIST > getTraitIndex > allTraits[k].getName() = Sharp Eyesight
DEBUG: CREATURE > addTrait > myTraits[1].getName() = Sharp Eyesight
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[0] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[1] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[2] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[3] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[4] = 0
DEBUG: CREATURE > addTrait > myTraits[1].getEffects()[5] = 0
_________________________________________________
Dragon Bear (Pop: 3)
[Herbivore]
_________________________________________________
Size: 2
Power: 2
Stealth: 0
Senses: 0
Dangerous: 0
_________________________________________________
Trait 1: TEST
~ { }
Trait 2: Sharp Eyesight
~ { Helps detect other creatures! }
Trait 3: EMPTY
~ { }
_________________________________________________
BUILD SUCCESSFUL (total time: 0 seconds)
Si aucune solution ne peut être trouvée, je recommencerai probablement à zéro. (Je réutiliserai des bits de code de travail bien sûr!)
Veuillez publier toute la classe 'Trait'. –