diff --git a/src/logiikka/Peli.java b/src/logiikka/Peli.java index bbec621832815fef1eab301b7dc1138c653e66ab..c8358b8fb65277d64b198071cca74b8cd7374a4c 100644 --- a/src/logiikka/Peli.java +++ b/src/logiikka/Peli.java @@ -164,7 +164,6 @@ public class Peli { String vari = lukija.next(); this.vari = vari; }while (!(this.vari.equals("sininen")||this.vari.equals("punainen")||this.vari.equals("keltainen")||this.vari.equals("vihre�"))); - this.paivitaVuoronumero(); kelvollinenKortti = true; } /* @@ -244,6 +243,7 @@ public class Peli { || edellinenKortti instanceof Suunnanvaihtokortti) { System.out.println("Suunnanvaihtokortin saa ly�d� samanv�risen kortin p��lle tai" + " toisen suunnanvaihtokortin p��lle."); + return false; } this.suuntaKasvava = !this.suuntaKasvava; paivitaVuoronumero(); @@ -286,7 +286,7 @@ public class Peli { return false; } this.vari = null; - System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); + System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti + " - Kortteja j�ljell� : " + ((pelaaja.annaKortit()).size()-1)); return true; } @@ -323,10 +323,9 @@ public class Peli { String[] varit = {"sininen", "punainen", "keltainen", "vihre�"}; int varinNumero = this.random.nextInt(4); String vari = varit[varinNumero]; - this.vari = vari; - this.paivitaVuoronumero(); + this.vari = vari; kelvollinenKortti = true; - System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); + System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti + " - Kortteja j�ljell� : " + ((pelaaja.annaKortit()).size()-1)); } /* * Nosta 4 -jokeri � Kortin ly�neest� pelaajasta seuraava menett�� vuoronsa @@ -354,7 +353,7 @@ public class Peli { this.vari = vari; this.paivitaVuoronumero(); kelvollinenKortti = true; - System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); + System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti + " - Kortteja j�ljell� : " + ((pelaaja.annaKortit()).size()-1)); } /* @@ -372,7 +371,7 @@ public class Peli { this.annaPelaaja(seuraavaksiVuorossa).nostaKaksiKorttia(this.nostopakka); this.paivitaVuoronumero(); kelvollinenKortti = true; - System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); + System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti + " - Kortteja j�ljell� : " + ((pelaaja.annaKortit()).size()-1)); } /* @@ -387,7 +386,7 @@ public class Peli { } this.paivitaVuoronumero(); kelvollinenKortti = true; - System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); + System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti + " - Kortteja j�ljell� : " + ((pelaaja.annaKortit()).size()-1)); } /* @@ -404,7 +403,7 @@ public class Peli { paivitaVuoronumero(); paivitaVuoronumero(); kelvollinenKortti = true; - System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); + System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti + " - Kortteja j�ljell� : " + ((pelaaja.annaKortit()).size()-1)); } else if (kortti instanceof Peruskortti) { @@ -421,7 +420,7 @@ public class Peli { } } else { kelvollinenKortti = true; - System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); + System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti + " - Kortteja j�ljell� : " + ((pelaaja.annaKortit()).size()-1)); } } diff --git a/src/ui/Tekstikayttoliittyma.java b/src/ui/Tekstikayttoliittyma.java index eedcb9a75475d7bda2cae2526d1a38a77fe83a10..fde636a0089e3fe6804153145a1dfa43782ccbae 100644 --- a/src/ui/Tekstikayttoliittyma.java +++ b/src/ui/Tekstikayttoliittyma.java @@ -8,12 +8,15 @@ import java.io.PrintWriter; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Scanner; +import java.util.concurrent.TimeUnit; import domain.kortit.Erikoiskortti; import domain.kortit.Kortti; import domain.korttipakat.Nostopakka; import domain.korttipakat.Poistopakka; import domain.pelaajat.Pelaaja; +import domain.kortit.Jokerikortti; +import domain.kortit.Nosta4Jokerikortti; import logiikka.Peli; public class Tekstikayttoliittyma { @@ -40,6 +43,16 @@ public class Tekstikayttoliittyma { this.uusiPeli(); } } + + //Varmistaa ettei kortin numeroa tai komentoa kysytt�ess� ohjelma ei kaadu v��r�nlaiseen inputtiin + public boolean checkCardParameters(String input, Pelaaja pelaaja) { + try { + if(((Integer.valueOf(input)<(pelaaja.annaKortit()).size())&&Integer.valueOf(input)>=0)) { + return true; + } + }catch(Exception e) {return false;} + return false; + } public void uusiPeli() { @@ -68,6 +81,7 @@ public class Tekstikayttoliittyma { while (peliKesken) { Pelaaja peliVuorossa = peli.annaPelaaja(peli.annaSeuraavaksiVuorossa()); + //Ei v�ltt�m�tt� tarvita pistelaskua viel� t�h�n kohtaan // System.out.println("Pelivuorossa on: " + peliVuorossa.annaNimi() // + " (Pisteet: " + peliVuorossa.laskePisteet() + ")"); System.out.println(); @@ -75,13 +89,18 @@ public class Tekstikayttoliittyma { //ihmispelaaja if (peli.annaSeuraavaksiVuorossa() == 0) { - + try { + TimeUnit.SECONDS.sleep(1); //odottaa vuorojen v�liss� realismin luomiseksi + }catch(Exception e) {} if (peli.annaVari() != null) { - System.out.println("Laitettava kortti, joka on v�rilt��n " + System.out.println("Laitettava kortti, joka on v�rilt��n " + peli.annaVari() ); } else { System.out.print("Pakan p��llimm�inen kortti on: "); System.out.println(poistopakka.annaPaallimmainenKortti()); + if(poistopakka.annaPaallimmainenKortti() instanceof Jokerikortti || poistopakka.annaPaallimmainenKortti() instanceof Nosta4Jokerikortti) { + System.out.println("Vaadittu v�ri on: " + peli.annaVari()); + } } peli.paivitaVuoronumero(); @@ -90,13 +109,16 @@ public class Tekstikayttoliittyma { System.out.println("Sinulla on k�dess�si kortit:"); pelaaja.jarjestaKortit(); pelaaja.tulostaKortit(); - - System.out.println("Kirjoita kortin numero pelataksesi kortin tai \"nosta\" nostaaksesi kortin."); - System.out.print("> "); - String input = this.lukija.next(); + String input = ""; + do { //kysyy pelaajalta uuden inputin niin kauan kunnes input t�sm�� vaatimuksiin + System.out.println("Kirjoita kortin numero pelataksesi kortin tai \"nosta\" nostaaksesi kortin."); + System.out.print("> "); + input = this.lukija.next(); + }while(!(input.equals("nosta")||checkCardParameters(input, pelaaja))); List<Kortti> kortit = pelaaja.annaKortit(); if (input.equals("nosta")) { pelaaja.nostaKortti(nostopakka); + System.out.println("Nostit yhden kortin - Kortteja j�ljell� : " + (pelaaja.annaKortit()).size()); break; } int kortinNumero = Integer.valueOf(input); @@ -108,10 +130,15 @@ public class Tekstikayttoliittyma { if (korttiPelattu) { poistopakka.lisaaKortti(k); kortit.remove(kortinNumero); + System.out.println(""); + System.out.println("Pelasit kortin: " + k + " - Kortteja j�ljell� : " + (pelaaja.annaKortit()).size()); } } } else { // tietokonepelaaja + try { + TimeUnit.SECONDS.sleep(1); //odottaa vuorojen v�liss� realismin luomiseksi + }catch(Exception e) {} peli.paivitaVuoronumero(); boolean kelvollinenKortti = false; @@ -127,7 +154,7 @@ public class Tekstikayttoliittyma { if (!kelvollinenKortti) { if (kortinNumero == peliVuorossa.annaKortit().size()-1) { peliVuorossa.nostaKortti(nostopakka); //ei sopivaa korttia - System.out.println(peliVuorossa.annaNimi() + " nosti yhden kortin"); //Vaikutti rikkovan jotain? En tiedä varmaksi. Nyt näyttää jo toimivan. + System.out.println(peliVuorossa.annaNimi() + " nosti yhden kortin" + " - Kortteja j�ljell� : " + (peliVuorossa.annaKortit()).size()); //Vaikutti rikkovan jotain? En tiedä varmaksi. Nyt näyttää jo toimivan. kelvollinenKortti = true; } else { kortinNumero++;