Ik ben aan een project (spel genaamd Boggle) aan't werken.
Alles werkte prima afzonderlijk en besloot de componenten bij elkaar te brengen.
tot er problemen begonnen op te treden (geen errors,logisch problemen(bugs) )...
De code hieronder is een component uit mijn spel "de highscores."
Mijn probleem is dat ik mijn methode " voegScoreToe " wilt kunnen gebruiken vanuit een andere klasse.
in voegtoe maak ik telkens een nieuwe score aan waarbij die nieuwe score wordt toegevoegd aan een Arraylist<Score>.
Omdat ik al mijn componenten apart test voor ik ze verwerkt met het geheel treed dit probleem zich nu pas op.
Ik kan score gemakelijk toevoegen en weergeven als ik da doet vanuit de main
bv
Maar wanneer ik probeer toe te voegen via een andere klasse en dus niet direct via de main.
krijg ik een probleem waarbij:
mijn ArrayList niet aangevuld word en dus mijn toString en SchrijfnaarBestand niet hun taak kunnen doen omdat de List leeg is.
output is dan :
HIGHSCORE:
)bord(4x4)
**************************
GEEN SCORES BESCHIKBAAR
**************************
Dus de vraag is hoe voeg ik een nieuwe score toe aan mijn Arraylist<Score> vanuit een andere Klasse zonder dat hij zijn inhoud verliest
Ik weet wat het probleem ongeveer is maar na +- 11 uur zoeken/denken weet ik niet wat ik eraan moet doen en mijn dealine is tegen volgende week !
code staat in bijlage opnieuw(in kleur) mocht deze niet duidelijk zijn
elke tip,duw in de goeie richting,.. is welkom.
Alvast bedankt voor u tijd een moeite.
En bied alvast mijn excuses aan mocht ik niet duidelijk zijn geweest.
groetjes,
gebruiker, revived
Klasse Highscore
Klasse Scores
Alles werkte prima afzonderlijk en besloot de componenten bij elkaar te brengen.
tot er problemen begonnen op te treden (geen errors,logisch problemen(bugs) )...
De code hieronder is een component uit mijn spel "de highscores."
Mijn probleem is dat ik mijn methode " voegScoreToe " wilt kunnen gebruiken vanuit een andere klasse.
in voegtoe maak ik telkens een nieuwe score aan waarbij die nieuwe score wordt toegevoegd aan een Arraylist<Score>.
Omdat ik al mijn componenten apart test voor ik ze verwerkt met het geheel treed dit probleem zich nu pas op.
Ik kan score gemakelijk toevoegen en weergeven als ik da doet vanuit de main
bv
Code:
public class Start
{
public static void main(String[] args)
{
Highscores s = new Highscores();
s.voegScoreToe("Ezreal",10);
s.voegScoreToe("Zoro",790);
s.voegScoreToe("mike", 55);
System.out.println( s.toString());
}
}
Maar wanneer ik probeer toe te voegen via een andere klasse en dus niet direct via de main.
krijg ik een probleem waarbij:
mijn ArrayList niet aangevuld word en dus mijn toString en SchrijfnaarBestand niet hun taak kunnen doen omdat de List leeg is.
output is dan :
HIGHSCORE:
)bord(4x4)
**************************
GEEN SCORES BESCHIKBAAR
**************************
Dus de vraag is hoe voeg ik een nieuwe score toe aan mijn Arraylist<Score> vanuit een andere Klasse zonder dat hij zijn inhoud verliest
Ik weet wat het probleem ongeveer is maar na +- 11 uur zoeken/denken weet ik niet wat ik eraan moet doen en mijn dealine is tegen volgende week !
code staat in bijlage opnieuw(in kleur) mocht deze niet duidelijk zijn
elke tip,duw in de goeie richting,.. is welkom.
Alvast bedankt voor u tijd een moeite.
En bied alvast mijn excuses aan mocht ik niet duidelijk zijn geweest.
groetjes,
gebruiker, revived
Klasse Highscore
HTML:
package Model.Highscore;
import Model.Spel.SpeelBord;
import Model.Tools.VergelijkScores;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* User: Awesome
* Date: 19/01/13
* Time: 11:44
* To change this template use File | Settings | File Templates.
*/
public class Highscores
{
private ArrayList<Scores> highscores;
public static int MAX_TOONBAAR =5;
private BufferedWriter writer;
private List<String> leesBestand = new ArrayList<String>();
private String bestand= "localhighScore.txt";
public Highscores()
{
highscores = new ArrayList<Scores>();
}
public int normaalHigscoreLente()
{
return highscores.size();
}
public void voegScoreToe (String naam,int score)//hier loop iets mis
{
highscores.add(new Scores(naam,score));
sorteerScore();
}
private void sorteerScore() // sorteren op score meer niet
{
VergelijkScores sorteer = new VergelijkScores();
Collections.sort(highscores,sorteer);
}
public ArrayList<Scores>getHighscores ()
{
return highscores;
}
@Override
public String toString() //omdat er bij voegtoe iets mis loop, loop ook hier iets mis
{
StringBuilder string = new StringBuilder();
int i = 0;
string.append("\nHIGHSCORE: \n)" );
string.append("bord:("+ SpeelBord.bordDimensies +"x"+ SpeelBord.bordDimensies+")\n");
string.append("**************************\n");
for(Scores s:highscores)
{
string.append(i+1+" ").append(s.getNaam()).append("\t\t: ").append("\t\t "+s.getScore()).append("\n");
i++;
if(i== MAX_TOONBAAR)
{
break;
}
}
if(highscores.isEmpty())
{
string.append("\nGEEN SCORES BESCHIKBAAR\n\n");
}
string.append("**************************");
return string.toString();
}
public void checkIfhighscoreIsEmpty()
{
if(highscores.isEmpty())
{
System.out.println("Highscore1 is met succes gewist !\n");
}
else
{
System.out.println("Highscore1 is/werd nog niet gewist....\n");
}
}
public void schrijfNaarBestand()// en hier omdat deze methode & toString methode het zelfde zijn, deze schrijft gewoon naar een txt bestand
{
try {
Path path = Paths.get(bestand);
writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8) ;
int i=0;
writer.write("\nHIGHSCORE: ");
writer.newLine();
writer.write("bord:("+ SpeelBord.bordDimensies +"x"+ SpeelBord.bordDimensies+")\n");
writer.newLine();
writer.write("************************") ;
for (Scores scr: highscores)
{
writer.newLine();
writer.write(i+1+") "+scr.getNaam()+" \t: "+scr.getScore());
writer.newLine();
i++;
if(i== MAX_TOONBAAR)
{
break;
}
}
if(highscores.isEmpty())
{
writer.write("\n\n");
writer.write("GEEN SCORES BESCHIKBAAR");
}
writer.write("************************") ;
writer.close(); // belangrijk anders weet hij niet wanneer hij die gegevens moet doorsturen(hij weet niet of je klaar ben met writer)
System.out.println("\n////////\tBestand is met succes aangemaakt\t////////// ");
} catch (IOException ex)
{
System.out.println("Error: "+ex.getMessage());
}
}
public void leesVanbestand()
{
Path path = Paths.get(bestand);
try
{
Scanner invoer = new Scanner(path, StandardCharsets.UTF_8.name());
while (invoer.hasNext())
{
String woord = invoer.nextLine().toLowerCase() ;
leesBestand.add(woord) ;
}
System.out.println("\n////////\tBestand is met succes geladen\t////////// ");
toonLeesBestand();
} catch (Exception ex)
{
System.out.println("Error: "+ex.getMessage());
}
}
private void toonLeesBestand()
{
for(String lees : leesBestand)
{
if(lees.contains("highscore"))
{
lees.replace("highscore","HIGHSCORE") ;
}
System.out.println(lees);
}
}
public void resetHighscore()
{
highscores.clear();
System.out.println("Highscore1 wordt gewist.....");
checkIfhighscoreIsEmpty();
}
}
Klasse Scores
HTML:
public class Scores extends PuntenSysteem implements Serializable
{
private String naam;
private final int MAX_LENGTE = 5;
/*
De Stringbuilder str staat er voor layout redenen meer niet.
Omdat ik ervoor wil zorgen dat de naam maar max 5 char mag bevatten anders word het geknipt
*/
public Scores(String naam, int aantalJuist)
{
super(aantalJuist);
StringBuilder str = new StringBuilder(naam);
if(str.length()>MAX_LENGTE)
{
str.setLength(MAX_LENGTE-1);
str.insert(str.length(),'.');
this.naam =str.toString();
}
else if( naam.length()<=MAX_LENGTE)
{
this.naam =naam;
}
}
public int getScore()
{
return super.getScore();
}
public String getNaam()
{
return naam;
}
}