Gå til innhold

[Løst] Hjelp med sjakk oppgave


Anbefalte innlegg

Hei, vi er en gruppe på 4, Vi skal programmere sjakk. Akkurat nå står vi fast på hvordan konge, og bonde skal angripe skrå. Kongen flytter på skrå og angriper vertikalt og horisontalt.

 

  //angrep hvit bonde mot svart brikke
	else if(isWhite())if((Math.abs(frax-tilx) == 1) && tily-1 == fray){
		if(!brett.getBrett()[tilx][tily].isWhite()){
			return true;
		}
	}

//angrep sort bonde mot hvit brikke
 else if(!isWhite())if((Math.abs(frax-tilx) == 1) && tily+1 == fray){
 if(brett.getBrett()[tilx][tily] != null &&
	brett.getBrett()[tilx][tily].isWhite()){
	return true;
		}
	}
	return false;
}

//angrep ved skrå
if((Math.abs(frax-tilx) == 1) && (Math.abs(fray-tily)==1)){
  return brett.getBrett()[tilx][tily].isWhite()!=isWhite()? true:false;
 }

//angrep vertikalt og horisontalt
 if((Math.abs(frax-tilx)==1&&fray==tily)||
 (Math.abs(fray-tily)==1&&frax==tilx)){
 return brett.getBrett()[tilx][tily].isWhite()!=isWhite()? true:false;
 }
		return false;
}

 

Når vi tester dem i Junit, får vi at angrep på skrå ikke er gyldig

Endret av cupoftea
Lenke til kommentar
Videoannonse
Annonse

Koden er veldig vanskelig å lese. Prøv å skrive den litt finere, det hjelper både dere og øker sjangsen for å få hjelp.

 

To tips:

Det er en god ide og alltid bruke { etter if. Sett alltid ny if på ny linje.

kode som

else if(isWhite())if (...)

er å be om problemer.

 

Dere bruker variasjoner av

Math.abs(frax-tilx)==1&&fray==tily)

flere ganger. Kan dette skilles ut i en forklarende metode?F.eks

private boolean hasMovedDiagonally(int x, int dx, int y, int dy, boolean forward){
//...
}

Endret av Kiff
  • Liker 1
Lenke til kommentar

Koden er veldig vanskelig å lese. Prøv å skrive den litt finere, det hjelper både dere og øker sjangsen for å få hjelp.

 

To tips:

Det er en god ide og alltid bruke { etter if. Sett alltid ny if på ny linje.

kode som

else if(isWhite())if (...)

er å be om problemer.

 

Dere bruker variasjoner av

Math.abs(frax-tilx)==1&&fray==tily)

flere ganger. Kan dette skilles ut i en forklarende metode?F.eks

private boolean hasMovedDiagonally(int x, int dx, int y, int dy, boolean forward){
//...
}

 

takk for svar, vi har løst det nå :)

Lenke til kommentar
  • 3 uker senere...

Jeg merker meg at tråden er både litt gammel og løst, men jeg vil bare skyte inn at kongen kan både bevege seg og angripe i alle retninger - diagonalt, horisontalt og vertikalt, alle veier :)

 

edit: Sorry, det er vel også slik dere har implementert det åpenbart ;)

Endret av srbz
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...