Ben een klaverjasspel aan het schrijven. Hierbij wil ik dat de computer de kaarten die hij op kan gooien, evalueert. Bijvoorbeeld als hij wil bijgooien, dan kopieert hij het huidige spel en gooit een kaart erbij en kijkt hoeveel punten het zijn.
Vervolgens een nieuwe kopie enz.
stukje code:
private Kaart laagste()
{
int minimum=1000;
Kaart out = null;
for (int i=0; i<aantalGoedeKaarten; i++)
{
Tafel test = deTafel.copy();
test.ApplyMove(goedeKaarten[i]);
if (test.puntenInSlag()<minimum)
{
minimum = test.puntenInSlag();
out=goedeKaarten[i];
}
}
System.out.println("LAAGSTE: "+out.toString());
return out;
}
Tafel is een cloneable klasse. Daarin heb ik een methode copy() gemaakt:
public Tafel copy()
{
Tafel out=null;
try
{out= (Tafel) this.clone();}
catch (Exception e)
{System.out.println("FOUT: "+e);}
return out;
}
Probleem:
in die for-loop van de laagste-methode gebruikt hij steeds dezelfde Tafel, en niet steeds de originele. Ik hou bijvoorbeeld ergens een counter bij, en bij de 2e keer dat ie door de loop gaat gebruikt ie de opgehoogde counter, en niet weer de orginele...Hoe komt dat?
Vervolgens een nieuwe kopie enz.
stukje code:
private Kaart laagste()
{
int minimum=1000;
Kaart out = null;
for (int i=0; i<aantalGoedeKaarten; i++)
{
Tafel test = deTafel.copy();
test.ApplyMove(goedeKaarten[i]);
if (test.puntenInSlag()<minimum)
{
minimum = test.puntenInSlag();
out=goedeKaarten[i];
}
}
System.out.println("LAAGSTE: "+out.toString());
return out;
}
Tafel is een cloneable klasse. Daarin heb ik een methode copy() gemaakt:
public Tafel copy()
{
Tafel out=null;
try
{out= (Tafel) this.clone();}
catch (Exception e)
{System.out.println("FOUT: "+e);}
return out;
}
Probleem:
in die for-loop van de laagste-methode gebruikt hij steeds dezelfde Tafel, en niet steeds de originele. Ik hou bijvoorbeeld ergens een counter bij, en bij de 2e keer dat ie door de loop gaat gebruikt ie de opgehoogde counter, en niet weer de orginele...Hoe komt dat?