Príloha 5 – tretia fáza textového projektu
Prevziať
public class VlkKozaKapusta extends Vstup
{
private final String[] ľavýBreh = {"nič", "nič", "nič", "nič"};
private final String[] pravýBreh = {"vlk", "koza", "kapusta", "nič"};
private boolean prievozníkJeNaPravomBrehu = true;
private VlkKozaKapusta()
{
String príkaz;
vypíšStav();
do {
príkaz = načítajReťazec("Čo má prievozník previezť?");
if (!príkaz.equalsIgnoreCase("koniec"))
{
prevez(príkaz);
vypíšStav();
}
} while (!príkaz.equalsIgnoreCase("koniec"));
}
private void vypíšStav()
{
System.out.print("\nNa ľavom brehu je: ");
if (!prievozníkJeNaPravomBrehu)
{
System.out.print(" [prievozník]");
}
for (int i = 0; i < ľavýBreh.length; ++i)
{
if (!ľavýBreh[i].equals("nič"))
{
System.out.print(" " + ľavýBreh[i]);
}
}
System.out.print("\nNa pravom brehu je: ");
if (prievozníkJeNaPravomBrehu)
{
System.out.print(" [prievozník]");
}
for (int i = 0; i < pravýBreh.length; ++i)
{
if (!pravýBreh[i].equals("nič"))
{
System.out.print(" " + pravýBreh[i]);
}
}
System.out.println();
}
private int nájdiNaPravomBrehu(String čo)
{
for (int i = 0; i < pravýBreh.length; ++i)
{
if (čo.equalsIgnoreCase(pravýBreh[i])) return i;
}
return -1;
}
private int nájdiNaĽavomBrehu(String čo)
{
for (int i = 0; i < ľavýBreh.length; ++i)
{
if (čo.equalsIgnoreCase(ľavýBreh[i])) return i;
}
return -1;
}
private void prevez(String čo)
{
if (prievozníkJeNaPravomBrehu)
{
int i = nájdiNaPravomBrehu(čo);
int j = nájdiNaĽavomBrehu("nič");
if (i == -1)
{
System.out.println("Na ľavom brehu nie je " + čo + ".");
}
else if (j == -1)
{
System.out.println("Na pravom brehu nie je voľné miesto.");
}
else
{
ľavýBreh[j] = pravýBreh[i];
pravýBreh[i] = "nič";
prievozníkJeNaPravomBrehu = !prievozníkJeNaPravomBrehu;
}
}
else
{
int i = nájdiNaĽavomBrehu(čo);
int j = nájdiNaPravomBrehu("nič");
if (i == -1)
{
System.out.println("Na pravom brehu nie je " + čo + ".");
}
else if (j == -1)
{
System.out.println("Na ľavom brehu nie je voľné miesto.");
}
else
{
pravýBreh[j] = ľavýBreh[i];
ľavýBreh[i] = "nič";
prievozníkJeNaPravomBrehu = !prievozníkJeNaPravomBrehu;
}
}
}
private boolean jeNaĽavomBrehu(String čo)
{
for (int i = 0; i < ľavýBreh.length; ++i)
{
if (čo.equalsIgnoreCase(ľavýBreh[i])) return true;
}
return false;
}
private boolean niektoNiekohoZožral()
{
boolean vlkNaĽavom = jeNaĽavomBrehu("vlk");
boolean kozaNaĽavom = jeNaĽavomBrehu("koza");
boolean kapustaNaĽavom = jeNaĽavomBrehu("kapusta");
if ((vlkNaĽavom && kozaNaĽavom &&
!kapustaNaĽavom && prievozníkJeNaPravomBrehu) ||
(!vlkNaĽavom && !kozaNaĽavom &&
kapustaNaĽavom && !prievozníkJeNaPravomBrehu))
{
System.out.println("Vlk zožral kozu!");
return true;
}
if ((kozaNaĽavom && kapustaNaĽavom &&
!vlkNaĽavom && prievozníkJeNaPravomBrehu) ||
(!kozaNaĽavom && !kapustaNaĽavom &&
vlkNaĽavom && !prievozníkJeNaPravomBrehu))
{
System.out.println("Koza zožrala kapustu!");
return true;
}
return false;
}
private boolean hraSkončila()
{
boolean vlkNaĽavom = jeNaĽavomBrehu("vlk");
boolean kozaNaĽavom = jeNaĽavomBrehu("koza");
boolean kapustaNaĽavom = jeNaĽavomBrehu("kapusta");
return vlkNaĽavom && kozaNaĽavom && kapustaNaĽavom;
}
public static void main(String[] args)
{
new VlkKozaKapusta();
}
}