demo
Class AstiaPeli2

java.lang.Object
  extended by demo.AstiaPeli
      extended by demo.AstiaPeli2

public class AstiaPeli2
extends AstiaPeli

John McLane (Bruce Willis) joutui elokuvassa Die Hard 3 ongelman eteen, jossa piti kahdella vesikanisterilla mitata jonkin muun suuruinen vesimäärä "tarkasti" ja näin estää pommin räjähtäminen. Koska aika meni varsin tiukalle, on vastaavien tilanteiden harjoittelemiseksi nyt tehty uusi menestysohjelma "Astia".
Pelillä demonstroidaan/harjoitellaan miten voidaan kahdella astialla, 5 l ja 8 l, muodostaa kaikki mahdolliset tilavuudet 1-13 l. Pelissä on kaksi varsinaista astiaa: a5 ja a8, sekä kolmas apuastia ampari. Nestettä voidaan kerrallaan kaataa yhdestä astiasta toiseen joko siten, että astian koko sisältö tyhjennetään jos se mahtuu tai astista kaadetaan sen verran että toinen astia tulee täyteen.
Tee ohjelma jota voitasiin käyttää seuraavasti:

  Käytössäsi on 8 ja 5 litran astia ja Ämpäri (100 l)

  8 litran astiassa on 0 litraa
  5 litran astiassa on 0 litraa
  Mistä kaadetaan ja mihin >ä 8[ret]
  8 litran astiassa on 8 litraa
  5 litran astiassa on 0 litraa
  Mistä kaadetaan ja mihin >8 5[ret]
  8 litran astiassa on 3 litraa
  5 litran astiassa on 5 litraa
  Mistä kaadetaan ja mihin >5 ä[ret]
  8 litran astiassa on 3 litraa
  5 litran astiassa on 0 litraa
  Mistä kaadetaan ja mihin >8 5[ret]
  8 litran astiassa on 0 litraa
  5 litran astiassa on 3 litraa
  Mistä kaadetaan ja mihin >[ret]
Toteutettu peli-luokaksi, jossa käytetään hyväksi Astia2-luokkaa. Tarkistaa myös pelin aikana löydetyt kombinaatiot

Version:
1.0, 09.02.2003, 1.1, 14.02.2003, 1.2, 15.02.2003
Author:
Vesa Lappalainen

Field Summary
private  Esiintymat esiintymat
           
 
Fields inherited from class demo.AstiaPeli
astiat
 
Constructor Summary
AstiaPeli2()
           
 
Method Summary
 double astioidenSumma()
          Laskee kaikkien käytössä olevien astioiden yhteistilavuuden
 void lisaaEsiintymat()
          Lisää esiintymat-taulukkoon kaikki ne astioiden summakombinaatiot, joita niistä saa tällä hetkellä.
static void main(java.lang.String[] args)
          Testataan astiapeliä
 void pelaa()
          Käynistetään peli.
 boolean tulostaEsiintymat()
          Tulostaa löytämistilanteen
 
Methods inherited from class demo.AstiaPeli
etsi, getLkm, lisaaAstia, nimiOhje, tulostaMaarat, tulostaOhje
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

esiintymat

private Esiintymat esiintymat
Constructor Detail

AstiaPeli2

public AstiaPeli2()
Method Detail

pelaa

public void pelaa()
Käynistetään peli. Peli loppuu kun käyttäjä syöttää tyhjän rivin.

Overrides:
pelaa in class AstiaPeli
Example:
 Suuntaaja.StringInput si = new Suuntaaja.StringInput();  
 Suuntaaja.StringOutput so = new Suuntaaja.StringOutput();
 
 si.input("ä 8\n8 5\n4 5\n\n");  
 String tulos =
   "Käytössäsi on 5.0 sekä 8.0 litran astiat ja Ämpari (100.0 l)\n"+
   "5.0 litran astiassa on 0.0 litraa nestettä\n"       +
   "8.0 litran astiassa on 0.0 litraa nestettä\n"       +
   "Olet ratkaissut tilavuudet: \n"                     +
   "Ratkaisematta on: 1 2 3 4 5 6 7 8 9 10 11 12 13 \n" +  
   "Mistä kaadetaan ja mihin >"                         + // NOPMD
   "5.0 litran astiassa on 0.0 litraa nestettä\n"       +
   "8.0 litran astiassa on 8.0 litraa nestettä\n"       +
   "Olet ratkaissut tilavuudet: 8 \n"                   +
   "Ratkaisematta on: 1 2 3 4 5 6 7 9 10 11 12 13 \n"   +  
   "Mistä kaadetaan ja mihin >"                         +
   "5.0 litran astiassa on 5.0 litraa nestettä\n"       +
   "8.0 litran astiassa on 3.0 litraa nestettä\n"       +
   "Olet ratkaissut tilavuudet: 3 5 8 \n"               +
   "Ratkaisematta on: 1 2 4 6 7 9 10 11 12 13 \n"       +  
   "Mistä kaadetaan ja mihin >"                         +
   "Nimeä ei tunneta: 4 tai 5\n"                        +
   "Tunnetaan nimet: \n"                                + 
   "ä 5 8 \n"                                           +
   "5.0 litran astiassa on 5.0 litraa nestettä\n"       +
   "8.0 litran astiassa on 3.0 litraa nestettä\n"       +
   "Olet ratkaissut tilavuudet: 3 5 8 \n"               +
   "Ratkaisematta on: 1 2 4 6 7 9 10 11 12 13 \n"       +  
   "Mistä kaadetaan ja mihin >";
 
   AstiaPeli2 peli = new AstiaPeli2();
   peli.lisaaAstia("5",5);
   peli.lisaaAstia("8",8);
   peli.tulostaOhje();
   peli.pelaa();
 
 so.ero(tulos) === null; 
 si.palauta(); so.palauta();
 

astioidenSumma

public double astioidenSumma()
Laskee kaikkien käytössä olevien astioiden yhteistilavuuden

Returns:
yhteistilavuus

lisaaEsiintymat

public void lisaaEsiintymat()
Lisää esiintymat-taulukkoon kaikki ne astioiden summakombinaatiot, joita niistä saa tällä hetkellä.


tulostaEsiintymat

public boolean tulostaEsiintymat()
Tulostaa löytämistilanteen

Returns:
joka jokaista määrää on löydetty

main

public static void main(java.lang.String[] args)
Testataan astiapeliä

Parameters:
args - ei käytössä