ik heb nog even snel gekeken voor ik ga slapen:
probleem is het volgende. je hebt je teken methode zo gemaakt dat wanneer er een kamer ingekleurd wordt, er automatisch van speler gewisseld wordt. Als ik me niet vergis is het namelijk nu ook zo dat als een speler een enkel hokje ingekleurd heeft (dan mag die volgens de regels nog een muur zetten ) de andere speler evengoed aan de beurt is. de fout zit hem in de volgende methode:
[cpp]
protected void tekenK(Kamer k, Graphics gr) {
if(k.getActiefK() == true) {
if(model.geefPlayer2() == true) {
k.veranderKaKleur(Color.RED);
k.maakinactiefK();
model.verhoogScore1();
model.veranderSpeler1();
}
else if(model.geefPlayer1() == true) {
k.veranderKaKleur(Color.BLUE);
k.maakinactiefK();
model.verhoogScore2();
model.veranderSpeler2();
}
}
gr.setColor(k.geefKleur());
gr.fillRect(k.geefX()*grootte,k.geefY()*grootte,k.grootte()*grootte,k.grootte()*grootte);
}
[/cpp]
easy fix: de iterator die in de draw staat gewoon naar de kamer trekken (vanwege makkelijkheid het het veranderen in:
[cpp]
protected void tekenK( Graphics gr) {
//verzin een betere variabel naam =P
boolean playerCanTryAgain = false;
while(kamers.hasNext()) {
Kamer tempKamer = kamer.next();
if(tempKamer.getActiefK() == true) {
playerCanTryAgain = true;
if(model.geefPlayer2() == true) {
k.veranderKaKleur(Color.RED);
k.maakinactiefK();
model.verhoogScore1();
if(model.geefPlayer1() == true) {
k.veranderKaKleur(Color.BLUE);
k.maakinactiefK();
model.verhoogScore2();
}
}
//tekenspul etc hier
}
if (playerCanTryAgain){
//nu pas speler veranderen
}
[/cpp]
misschien niet helemaal goed, kijkt niet zo lekker in het snel reageren maar je snapt het idee wel denk ik.
ah dit gaat trouwens niet zo 1,2,3 werken aangezien je hetzelfde voor het muurtekeken doet. je moet die boolean dan maar in de draw zetten en de tekenkamer en muur een boolean laten returnen ofzo, iig daar ligt je probleem. gaat vast wel lukken om het op te lossen.