OOjava spelletje kamers bouwen/vierkantjes maken vast

Status
Niet open voor verdere reacties.
logische fout kan zijn u gaat de segmenten van 0 plaatsen op het bord merk op als je dan
|-|
|_|
stel dat de - boven muur is en je de muur in het midden vult zullen de vlakken geen aanduiden.

Ik snap niet goed wat je hier bedoeld?
 
tja moeilijk uit te leggen maar telkens je een vierkantje omringt dan kleurt het vlak.
stel je maakt een omringing van 2vierkantjes en je gaat het binnenste muurtje laatst zetten wat weinig waarschijnlijk voorkomt zullen beide vlakken niet zelfde kleur hebben dus de tegenstander krijgt één punt zonder een actie te doen.
 
maarja daar moet je eigenlijk altijd rekening mee houden. wanneer er een zet gedaan wordt, moet de muur vaak in 2 kamers gezet worden aangezien zo`n beetje alle kamers grenzen met een andere kamer (alleen de buitenste muren van de buitenste kamers zijn "uniek"). dus als je dat al in je algoritme meeneemt worden er automatisch 2 punten aan de huidige speler toegekend.
 
Ik snap nu pas wat jullie bedoelen :p Kijken of ik het nog opgelost krijg want morgen moet ik het doorsturen!
 
Ik heb je eerder de oplossing gegeven dus je kunt eventueel altijd daar nog op terugvallen =)
 
Ik heb jouw algoritme erin gezet ,maar hij heeft het probleem nog. Als ik een muur aanklik tussen 2 kamers die dus die 2 kamers bouwt wordt ene blauw en de andere rood.
 
ah zie het, waarschijnlijk is de oplossing daarvoor vrij simpel heb alleen geen tijd nu. zal er morgen even voor je naar kijken. weet niet precies waar het mis gaat alleen het algoritme dat ik je gegeven hebt werkt wel, het gaat denk ik ergens anders mis (of ik heb het mis ^^ maar dan kom ik daar wel achter).
 
meer tijd heb ik niet maar het probleem zit hem hier in denk ik (tekenen van een muur)

else if(model.geefPlayer2() == true) {

m.veranderKleur(Color.BLUE);
model.veranderSpeler1();

je veranderd dus meteen de kleur nadat er 1 hok ingekleurd is
 
Ik ga er morgen eens naar kijken, want ik was al aan het nadenken, waar kan dat nu weer zitten :p.

merci!
 
Laatst bewerkt:
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.
 
Hallo,

Ik heb het eens allemaal bekeken, maar ik snap niet 100 procent wat je bedoelt met de laatste zin die je daar zet.


Ik klik op een muur als speler 1 zijnde en de kamer wordt gebouwd, omdat ik op een muur klik verander ik naar speler 2, maar dan zeg ik in de methode tekenK: ah speler 2 is aan de beurt maar de kamer werd ingekleurd door speler 1, dus zorg ik dat de kleur van speler 1 verschijnt + ik verander opnieuw naar speler 1. Ondertussen wordt een 2de kamer ingekleurd en is speler 1 true dus gaat die tekenen voor speler 2. Dus ik snap wat er fout gaat.
 
Het was laat dus kan niet helemaal kloppen maar als je snapt wat er mis gaat dan kan je het fixen toch :D?
 
Ik heb er een paar uur geleden eens aan gewerkt, ik dacht dat ik het had maar dat algoritme klopte ook niet. Ik had een data member gemaakt met: boolean spelerBlijftAandebeurt ofzoiets.

Deze maakte ik true zoals jij deed als ik een kamer had gebouwd. En dan had ik bij mijn methode tekenmuur het zo gedaan met een if, zodat ik alleen van speler verander wanneer die die datamember false is. Daarna maakte ik em terug false( indien hij true was geweest).

Dit werkte eigenlijk voor 90 procent, maar alleen bleef ik nu niet meer aan de beurt als ik een kamer bouwde!
 
Ok ik heb even gekeken en heb het op de volgende manier opgelost:

wanneer er een valid muur aangeklikt wordt en er moet een speler gewisseld worden (geen square gemaakt) dan wisseld die van speler. anders niet.

http://dl.dropbox.com/u/3380837/View.java

heb alleen de view geupload aangezien dat de enige class is waar ik aan gezeten heb. Verder had je de puntentelling niet goed, als speler 1(rood) een square maakte, werd de kleur blauw. dus dat heb ik ook nog even omgegooit
 
Heel erg bedankt voor alle hulp met de bugs die er nog in staken. Het ziet er allemaal goed uit nu en het werkt, dat mag wel na al die uren :P. Ook weer een pak bijgeleerd tegenover vorig jaar toen we ook dit vak hadden.

Ik ga het zo dadelijk opsturen naar mijn docent, volgende week hebben we een bespreking ervan!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan