package luento081021; import java.util.Random; import fi.jyu.mit.ohj2.Syotto; import fi.jyu.mit.ohj2.Tiedosto; import static luento081021.Hirsipuu.*; /** * Ohjelmalla pelataan Hirsipuu-peliä. * Edelliseen verrattuna nyt myös piirretään hirsipuuta. * Arvattavat sanamahdollisuudet luetaan tiedostosta * ja yksi niistä arvotaan. *
* Esimerkiksi: * * Hirsipuu-peli * * Sana: _ _ _ _ _ * Anna kirjain > k * * * Sana: k _ _ _ _ * Anna kirjain > i * * Sana: k _ i _ _ * Anna kirjain > p * * Virheitä: 1/6 * Vääriä kirjaimia: p * Sana: k _ i _ _ * Anna kirjain >z * * Virheitä: 2/6 * Vääriä kirjaimia: p z * Sana: k _ i _ _ * Anna kirjain > * * jne... * * Jos sana arvattiin ennen kuutta virhettä: * * Voitit! * Sana: koira * * Jos taas virheitä ehti kertyä 6: * * Hävisit! * Virheitä 6/6 * Sana: koira * ** * @author vesal * @version 21.10.2008 * @version 22.10.2008 piirretään hirsipuuta */ public class Hirsipuu2 { // #STATICIMPORT /** * Aliohjelmalla pelataa yksi sana hirsipuupeliö * @param sana */ public static void pelaaPeli(String sana) { String vaaria = ""; // Sisältää ne väärät arvaukset int oikeita = 0; StringBuilder tulos = luoTulosjono(sana); Hirrenpiirto hirsi = new Hirrenpiirto(2); int maxvaaria = hirsi.vaiheitaJaljella(); tulostaLogo(); while ( true ) { System.out.println(); System.out.println("Sana: "+harvakseen(tulos)); String syote = Syotto.kysy("Anna kirjain"); if ( syote.isEmpty() ) continue; char c = syote.charAt(0); System.out.println("Annoit kirjaimen " + c); int lkm = tutkiOikeat(sana,c,tulos); if ( lkm == 0 ) { vaaria += c; System.out.printf("Virheitä: %d/%d%n",vaaria.length(),maxvaaria); System.out.println("Vääriä kirjaimia: " + harvakseen(vaaria)); if ( hirsi.piirraSeuraavaOsa() ) { System.out.println("Hävisit!"); break; } } oikeita += lkm; if ( oikeita >= sana.length() ) { System.out.println("Voitit!"); break; } } System.out.println("Sana: " + sana); } /** * Funktiolla arvotaan yksi merkkijono taulukosta * @param jonot taulukko josta jono arvotaan * @return satunnainen jonot-taulukon rivi */ public static String arvo(String[] jonot) { Random rand = new Random(); int n = rand.nextInt(jonot.length); return jonot[n]; } /** * @param args */ public static void main(String[] args) { String sana = "kissa"; String[] sanat = Tiedosto.lueTiedosto("sanat.txt"); if ( sanat != null ) sana = arvo(sanat); pelaaPeli(sana); } }