Uploaded by Tom Crul

1.10 deel2 Crul Tom

advertisement
Naam:
Voornaam:
Klas:
Vergeet niet je document te hernoemen! Volg de instructies uit de opgave!
Kopieer telkens de inhoud van de volledige klasse onder de correcte titellijn.
//----------------- Mens -----------------
//----------------- Kangoeroe -----------------
//----------------- SpringerRepository --------------
package domein;
import exceptions.LeeftijdException;
import java.util.*;
import java.util.stream.Collectors;
import persistentie.SpringerMapper;
public class SpringerRepository {
private final List<Springer> lijstSpringers;
private final SpringerMapper dm;
private final List<Mens> lijstNieuwPR;
public SpringerRepository()
{
dm = new SpringerMapper();
lijstSpringers = dm.geefDeelnemers();
lijstNieuwPR = new ArrayList<> ();
}
public List<Springer> getLijstSpringers()
{
return lijstSpringers;
}
public Springer geefSpringer(int indexGeselecteerdeDeelnemer)
{
return lijstSpringers.get(indexGeselecteerdeDeelnemer);
}
private boolean sprongGelukt(int hoogte)
{
Random r = new Random();
int drieVierdenHoogte = hoogte * 3 / 4;
int hoogteGesprongen = r.nextInt(drieVierdenHoogte) + drieVierdenHoogte;
return hoogteGesprongen > hoogte;
}
private String controleerPersoonlijkRecordMens(Mens m, int hoogte)
{
double pr = m.getPersoonlijkRecord();
if (pr == hoogte)
return "EVENARING van PR!\n";
if (pr < hoogte)
{
m.setPersoonlijkRecord(hoogte);
if (!lijstNieuwPR.contains(m))
lijstNieuwPR.add(m);
return "NIEUW PR!\n";
}
return "";
}
public String geefVerloopWedstrijd()
{
String uitvoer = "";
int huidigehoogte = 150;
int deelnemersOver = lijstSpringers.size();
while (deelnemersOver > 0)
{
double hoogteInM = huidigehoogte / 100.0;
uitvoer += String.format("Hoogte: %.2fm%n", hoogteInM);
Iterator<Springer> iterator = lijstSpringers.iterator();
while (iterator.hasNext())
{
Springer s = iterator.next();
if (s.begintOpHoogte() <= huidigehoogte) // beginhoogte al bereikt
{
uitvoer += s.toString();
if (sprongGelukt(huidigehoogte))
{
uitvoer += " SLAAGT!\n";
if (s instanceof Mens)
uitvoer += controleerPersoonlijkRecordMens((Mens) s, huidigehoogte);
}
else
{
uitvoer += " FAALT!\n";
iterator.remove();
}
}
deelnemersOver = lijstSpringers.size();
}
huidigehoogte += 5;
uitvoer += "\n";
}
uitvoer += geefSpringersMetNieuwPR();
uitvoer += "\n";
return uitvoer;
}
private String geefSpringersMetNieuwPR()
{
if (lijstNieuwPR.isEmpty())
return "Er waren geen deelnemers die een nieuw PR haalden";
else
{
String uitvoer = "Deze deelnemers haalden een nieuw PR:";
for (Springer s : lijstNieuwPR)
uitvoer += String.format("%n%s", s.toString());
return uitvoer;
}
}
public void voegSpringerToe(String[] info, SoortSpringer ss) throws LeeftijdException
{
Springer s = null;
switch (ss)
{
case AMATEUR: s = new Amateur(info[0], Integer.parseInt(info[1]), Integer.parseInt(info[2])); break;
case ATLEET:
s = new Atleet(info[0], Integer.parseInt(info[1]), info[2]);
break;
case KANGOEROE:
s = new Kangoeroe(info[0], Integer.parseInt(info[1]));
break;
}
if (s != null)
lijstSpringers.add(s);
}
public void serialiseerNieuwPR()
{
if (!lijstNieuwPR.isEmpty())
dm.serialiseerNieuwPR(lijstNieuwPR);
}
//TODO: geefGeordendeMensenOpNaamPR()
//TODO: geefAantalKangoeroesZonderDubbels()
//TODO: geefDeSpringerMetDeHoogsteBeginhoogte()
//----------------- DeelnemersPaneel ---------------
//----------------- DetailPaneel --------
Download