Nowy kod, stary bład poprawiony, jednak mam też i tutaj mały problem, przy dodatnich współrzędnych wszystko działa poprawnie, natomiast przy ujemnych bądź przy wyjściu poza planszę kompilator pokazuj mi taką rzecz:
Czy dobry ruch konika (7,8) na (9,9)? (zlamane zasady): dobry
Czy dobry ruch konika (7,8) na (5,7)? (dobry): dobry
Czy dobry ruch hetmana (1,1) na (-2,1)? (zlamane zasady): dobry
Czy dobry ruch hetmana (1,0) na (0,0)? (zlamane zasady): dobry
Jaki warunek trzeba dodać by podczas wyjścia poza planszę pokazało złe ?
interface ZasadyGry {
/** Metoda zwraca true, tylko gdy przejscie z polozenia
(x_pocz, y_pocz) na (x_konc, y_konc) w jednym ruchu jest zgodne
z zasadami gry w szachy */
boolean ruchPoprawny( int x_pocz, int y_pocz, int x_konc, int y_konc );
class Konik implements ZasadyGry {
public boolean ruchPoprawny( int x_pocz, int y_pocz, int x_konc, int y_konc ) {
if(Math.abs(x_pocz-x_konc)==1 && Math.abs(y_pocz-y_konc)==2)
{
return true;
}
if(Math.abs(x_pocz-x_konc)==2 && Math.abs(y_pocz-y_konc)==1)
{
return true;
}
return false;
}
}
class Hetman implements ZasadyGry {
public boolean ruchPoprawny( int x_pocz, int y_pocz, int x_konc, int y_konc ) {
if((x_pocz == x_konc) && (y_pocz == y_konc))
{
return false;
}
if(x_pocz == x_konc || y_pocz == y_konc)
{
return true;
}
if(x_pocz+y_pocz == x_konc+y_konc || x_pocz-y_pocz == x_konc-y_konc)
{
return true;
}
return false;
}
}
class Start {public static void main(String[] args) {ZasadyGry.Konik mk = new ZasadyGry.Konik();ZasadyGry.Hetman mh = new ZasadyGry.Hetman();System.out.print("Czy dobry ruch konika (1,1) na (-2,1)? (zlamane zasady): ");if(mk.ruchPoprawny(1, 1, -2, 1)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch konika (1,0) na (0,0)? (zlamane zasady): ");if(mk.ruchPoprawny(1, 0, 0, 0)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch konika (1,1) na (3,2)? (dobry): ");if(mk.ruchPoprawny(1, 1, 3, 2)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch konika (1,1) na (3,1)? (zly): ");if(mk.ruchPoprawny(1, 1, 3, 1)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch konika (7,7) na (8,8)? (zly): ");if(mk.ruchPoprawny(7, 7, 8, 8)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch konika (7,8) na (9,9)? (zlamane zasady): ");if(mk.ruchPoprawny(7, 8, 9, 9)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch konika (7,8) na (5,7)? (dobry): ");if(mk.ruchPoprawny(7, 8, 5, 7)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch hetmana (1,1) na (-2,1)? (zlamane zasady): ");if(mh.ruchPoprawny(1, 1, -2, 1)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch hetmana (1,0) na (0,0)? (zlamane zasady): ");if(mh.ruchPoprawny(1, 0, 0, 0)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch hetmana (1,1) na (3,2)? (zły): ");if(mh.ruchPoprawny(1, 1, 3, 2)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch hetmana (1,1) na (3,1)? (dobry): ");if(mh.ruchPoprawny(1, 1, 3, 1)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch hetmana (7,7) na (8,8)? (dobry): ");if(mh.ruchPoprawny(7, 7, 8, 8)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch hetmana (7,8) na (9,9)? (zlamane zasady): ");if(mh.ruchPoprawny(7, 8, 9, 9)) System.out.println("dobry");else System.out.println("zły");System.out.print("Czy dobry ruch hetmana (7,8) na (5,7)? (zły): ");if(mh.ruchPoprawny(7, 8, 5, 7)) System.out.println("dobry");else System.out.println("zły");}}
}