diff --git a/src/logiikka/Peli.java b/src/logiikka/Peli.java index 0e80f8f33f81563ff82a04f27bea59e09fb1a7c3..22bf0e896010b1df2c918ad0987336c3efa3612a 100644 --- a/src/logiikka/Peli.java +++ b/src/logiikka/Peli.java @@ -31,10 +31,10 @@ public class Peli { public Peli() { this.pelaajat = new ArrayList<>(); - this.pelaajat.add(new Ihmispelaaja("pelaaja")); // pelaaja nro 0 - this.pelaajat.add(new Tietokonepelaaja("tietokone 1")); - this.pelaajat.add(new Tietokonepelaaja("tietokone 2")); - this.pelaajat.add(new Tietokonepelaaja("tietokone 3")); + this.pelaajat.add(new Ihmispelaaja("Pelaaja")); // pelaaja nro 0 + this.pelaajat.add(new Tietokonepelaaja("Tietokone 1")); + this.pelaajat.add(new Tietokonepelaaja("Tietokone 2")); + this.pelaajat.add(new Tietokonepelaaja("Tietokone 3")); this.nostopakka = new Nostopakka(); @@ -113,7 +113,7 @@ public class Peli { boolean kelvollinenKortti = false; - // Edellinen pelaaja on valinnut v�rin + // Edellinen pelaaja on valinnut v�rin if (this.vari != null) { if (kortti.annaVari() != null @@ -125,17 +125,17 @@ public class Peli { } // Jos edellinen kortti on Jokerikortti tai Nosta 4 -jokerikortti, - //niin kortin pit�� olla annettua v�ri� tai jokerikortti tai Nosta 4 -jokerikortti. - // Nosta 4 -jokerikortin voi k�ytt�� vain jos pelaajalla ei ole kyseist� v�ri�. + //niin kortin pit�� olla annettua v�ri� tai jokerikortti tai Nosta 4 -jokerikortti. + // Nosta 4 -jokerikortin voi k�ytt�� vain jos pelaajalla ei ole kyseist� v�ri�. if (edellinenKortti instanceof Jokerikortti || edellinenKortti instanceof Nosta4Jokerikortti) { if (kortti.annaVari() != null && !kortti.annaVari().equals(this.vari) && !(kortti instanceof Jokerikortti) && !(kortti instanceof Nosta4Jokerikortti)) { - System.out.println("Sinun tulee laittaa kortti, joka on v�rilt��n " + System.out.println("Sinun tulee laittaa kortti, joka on v�rilt��n " + this.vari + " tai jokerikortti tai Nosta 4- jokerikortti " - + "(vain jos k�dess� ei ole kyseist� v�ri�)"); + + "(vain jos k�dess� ei ole kyseist� v�ri�)"); return false; } if (kortti instanceof Nosta4Jokerikortti) { @@ -147,30 +147,32 @@ public class Peli { } } if (pelaajallaSopivanVarinenKortti) { - System.out.println("Et voi k�ytt�� Nosta 4 -korttia, jos sinulla on sopivan v�rinen kortti."); + System.out.println("Et voi k�ytt�� Nosta 4 -korttia, jos sinulla on sopivan v�rinen kortti."); return false; } } } /* - * Jokeri � Kortin ly�nyt pelaaja saa valita seuraavaksi pelattavan v�rin. - * Kortin saa ly�d� milloin tahansa paitsi silloin, kun sen ly�j� joutuu juuri + * Jokeri � Kortin ly�nyt pelaaja saa valita seuraavaksi pelattavan v�rin. + * Kortin saa ly�d� milloin tahansa paitsi silloin, kun sen ly�j� joutuu juuri * ottamaan vastaan Nosta kaksi -korttia tai Nosta 4-jokeri -korttia. */ if (kortti instanceof Jokerikortti) { - System.out.println("Valitse v�ri (sininen, punainen, keltainen, vihre�):"); - System.out.print(">"); - String vari = lukija.next(); - this.vari = vari; + do{ + System.out.println("Valitse väri (sininen, punainen, keltainen, vihreä):"); + System.out.print(">"); + 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; } /* - * Nosta 4 -jokeri � Kortin ly�neest� pelaajasta seuraava menett�� vuoronsa - * ja nostaa pakasta nelj� korttia. Lis�ksi kortin ly�nyt pelaaja saa valita - * seuraavaksi pelattavan v�rin. Pelaaja ei saa kuitenaan ly�d� nosta 4-jokeri - * korttia silloin, kun h�nell� on k�dess��n my�s samanv�rinen kortti kuin - * poistopakan p��llimm�inen kortti on. Muulloin kortin voi ly�d� koska vain. + * Nosta 4 -jokeri � Kortin ly�neest� pelaajasta seuraava menett�� vuoronsa + * ja nostaa pakasta nelj� korttia. Lis�ksi kortin ly�nyt pelaaja saa valita + * seuraavaksi pelattavan v�rin. Pelaaja ei saa kuitenaan ly�d� nosta 4-jokeri + * korttia silloin, kun h�nell� on k�dess��n my�s samanv�rinen kortti kuin + * poistopakan p��llimm�inen kortti on. Muulloin kortin voi ly�d� koska vain. */ else if (kortti instanceof Nosta4Jokerikortti) { @@ -182,30 +184,32 @@ public class Peli { } } if (pelaajallaSopivanVarinenKortti) { - System.out.println("Et voi k�ytt�� Nosta 4 -korttia, jos sinulla on sopivan v�rinen kortti."); + System.out.println("Et voi k�ytt�� Nosta 4 -korttia, jos sinulla on sopivan v�rinen kortti."); return false; } this.annaPelaaja(seuraavaksiVuorossa).nostaNeljaKorttia(this.nostopakka); - System.out.println("Valitse v�ri (sininen, punainen, keltainen, vihre�):"); - System.out.print(">"); - String vari = lukija.next(); - this.vari = vari; + do{ + System.out.println("Valitse väri (sininen, punainen, keltainen, vihreä):"); + System.out.print(">"); + 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; } /* - * Nosta kaksi � Kortin ly�neen pelaajan j�lkeen seuraavana vuorossa oleva - * menett�� vuoronsa ja joutuu nostamaan pakasta kaksi korttia k�teen. Nosta - * kaksi -kortin saa ly�d� joko samanv�risen kortin tai my�s eriv�risen Nosta - * kaksi -kortin p��lle. + * Nosta kaksi � Kortin ly�neen pelaajan j�lkeen seuraavana vuorossa oleva + * menett�� vuoronsa ja joutuu nostamaan pakasta kaksi korttia k�teen. Nosta + * kaksi -kortin saa ly�d� joko samanv�risen kortin tai my�s eriv�risen Nosta + * kaksi -kortin p��lle. */ else if (kortti instanceof NostaKaksikortti) { if (!edellinenKortti.annaVari().equals(kortti.annaVari()) || edellinenKortti instanceof NostaKaksikortti) { - System.out.println("Nosta 2 -kortin voi ly�d� samanv�risen kortin p��lle tai" - + " toisen nosta 2 -kortin p��lle."); + System.out.println("Nosta 2 -kortin voi ly�d� samanv�risen kortin p��lle tai" + + " toisen nosta 2 -kortin p��lle."); return false; } this.annaPelaaja(seuraavaksiVuorossa).nostaKaksiKorttia(this.nostopakka); @@ -214,15 +218,15 @@ public class Peli { } /* - * Ohituskortti � Kortin ly�neest� pelaajasta seuraava menett�� vuoronsa. Kortin - * saa ly�d� joko samanv�risen kortin tai eriv�risen ohituskortin p��lle. + * Ohituskortti � Kortin ly�neest� pelaajasta seuraava menett�� vuoronsa. Kortin + * saa ly�d� joko samanv�risen kortin tai eriv�risen ohituskortin p��lle. */ else if (kortti instanceof Ohituskortti) { if (!edellinenKortti.annaVari().equals(kortti.annaVari()) || edellinenKortti instanceof Ohituskortti) { - System.out.println("Ohituskortin saa ly�d� samanv�risen kortin p��lle tai" - + " toisen ohituskortin p��lle."); + System.out.println("Ohituskortin saa ly�d� samanv�risen kortin p��lle tai" + + " toisen ohituskortin p��lle."); return false; } this.paivitaVuoronumero(); @@ -230,18 +234,20 @@ public class Peli { } /* - * Suunnanvaihtokortti � Kortti vaihtaa pelaajien vuoroj�rjestyksen suunnan. - * Kortin saa ly�d� joko samanv�risen kortin tai eriv�risen Suunnanvaihtokortin - * p��lle. + * Suunnanvaihtokortti � Kortti vaihtaa pelaajien vuoroj�rjestyksen suunnan. + * Kortin saa ly�d� joko samanv�risen kortin tai eriv�risen Suunnanvaihtokortin + * p��lle. */ else if (kortti instanceof Suunnanvaihtokortti) { if (!edellinenKortti.annaVari().equals(kortti.annaVari()) || edellinenKortti instanceof Suunnanvaihtokortti) { - System.out.println("Suunnanvaihtokortin saa ly�d� samanv�risen kortin p��lle tai" - + " toisen suunnanvaihtokortin p��lle."); + System.out.println("Suunnanvaihtokortin saa ly�d� samanv�risen kortin p��lle tai" + + " toisen suunnanvaihtokortin p��lle."); } this.suuntaKasvava = !this.suuntaKasvava; + paivitaVuoronumero(); + paivitaVuoronumero(); kelvollinenKortti = true; } @@ -250,13 +256,13 @@ public class Peli { if (!kortti.annaVari().equals(edellinenKortti.annaVari()) && edellinenKortti instanceof Peruskortti) { if (((Peruskortti) kortti).annaNumero() != ((Peruskortti) edellinenKortti).annaNumero()) { - //Kortti on peruskortti, mutta eriv�rinen ja erinumeroinen kuin edellinen kortti - System.out.println("Kortin tulee olla samaa v�ri� tai sama numero."); + //Kortti on peruskortti, mutta eriv�rinen ja erinumeroinen kuin edellinen kortti + System.out.println("Kortin tulee olla samaa v�ri� tai sama numero."); return false; } } if(!kortti.annaVari().equals(edellinenKortti.annaVari())) { - System.out.println("Kortin tulee olla samaa v�ri� tai sama numero."); + System.out.println("Kortin tulee olla samaa v�ri� tai sama numero."); return false; } else { kelvollinenKortti = true; @@ -272,7 +278,7 @@ public class Peli { boolean kelvollinenKortti = false; - // Edellinen pelaaja on valinnut v�rin + // Edellinen pelaaja on valinnut v�rin if (this.vari != null) { if (kortti.annaVari() != null @@ -286,8 +292,8 @@ public class Peli { // Jos edellinen kortti on Jokerikortti tai Nosta 4 -jokerikortti, - //niin kortin pit�� olla annettua v�ri� tai jokerikortti tai Nosta 4 -jokerikortti. - // Nosta 4 -jokerikortin voi k�ytt�� vain jos pelaajalla ei ole kyseist� v�ri�. + //niin kortin pit�� olla annettua v�ri� tai jokerikortti tai Nosta 4 -jokerikortti. + // Nosta 4 -jokerikortin voi k�ytt�� vain jos pelaajalla ei ole kyseist� v�ri�. if (edellinenKortti instanceof Jokerikortti || edellinenKortti instanceof Nosta4Jokerikortti) { if (kortti.annaVari() != null @@ -309,12 +315,12 @@ public class Peli { } } /* - * Jokeri � Kortin ly�nyt pelaaja saa valita seuraavaksi pelattavan v�rin. - * Kortin saa ly�d� milloin tahansa paitsi silloin, kun sen ly�j� joutuu juuri + * Jokeri � Kortin ly�nyt pelaaja saa valita seuraavaksi pelattavan v�rin. + * Kortin saa ly�d� milloin tahansa paitsi silloin, kun sen ly�j� joutuu juuri * ottamaan vastaan Nosta kaksi -korttia tai Nosta 4-jokeri -korttia. */ if (kortti instanceof Jokerikortti) { - String[] varit = {"sininen", "punainen", "keltainen", "vihre�"}; + String[] varit = {"sininen", "punainen", "keltainen", "vihre�"}; int varinNumero = this.random.nextInt(4); String vari = varit[varinNumero]; this.vari = vari; @@ -323,11 +329,11 @@ public class Peli { System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); } /* - * Nosta 4 -jokeri � Kortin ly�neest� pelaajasta seuraava menett�� vuoronsa - * ja nostaa pakasta nelj� korttia. Lis�ksi kortin ly�nyt pelaaja saa valita - * seuraavaksi pelattavan v�rin. Pelaaja ei saa kuitenaan ly�d� nosta 4-jokeri - * korttia silloin, kun h�nell� on k�dess��n my�s samanv�rinen kortti kuin - * poistopakan p��llimm�inen kortti on. Muulloin kortin voi ly�d� koska vain. + * Nosta 4 -jokeri � Kortin ly�neest� pelaajasta seuraava menett�� vuoronsa + * ja nostaa pakasta nelj� korttia. Lis�ksi kortin ly�nyt pelaaja saa valita + * seuraavaksi pelattavan v�rin. Pelaaja ei saa kuitenaan ly�d� nosta 4-jokeri + * korttia silloin, kun h�nell� on k�dess��n my�s samanv�rinen kortti kuin + * poistopakan p��llimm�inen kortti on. Muulloin kortin voi ly�d� koska vain. */ else if (kortti instanceof Nosta4Jokerikortti) { @@ -339,11 +345,11 @@ public class Peli { } } if (pelaajallaSopivanVarinenKortti) { - System.out.println("Et voi k�ytt�� Nosta 4 -korttia, jos sinulla on sopivan v�rinen kortti."); + System.out.println("Et voi k�ytt�� Nosta 4 -korttia, jos sinulla on sopivan v�rinen kortti."); return false; } this.annaPelaaja(seuraavaksiVuorossa).nostaNeljaKorttia(this.nostopakka); - String[] varit = {"sininen", "punainen", "keltainen", "vihre�"}; + String[] varit = {"sininen", "punainen", "keltainen", "vihre�"}; int varinNumero = this.random.nextInt(4); String vari = varit[varinNumero]; this.vari = vari; @@ -353,10 +359,10 @@ public class Peli { } /* - * Nosta kaksi � Kortin ly�neen pelaajan j�lkeen seuraavana vuorossa oleva - * menett�� vuoronsa ja joutuu nostamaan pakasta kaksi korttia k�teen. Nosta - * kaksi -kortin saa ly�d� joko samanv�risen kortin tai my�s eriv�risen Nosta - * kaksi -kortin p��lle. + * Nosta kaksi � Kortin ly�neen pelaajan j�lkeen seuraavana vuorossa oleva + * menett�� vuoronsa ja joutuu nostamaan pakasta kaksi korttia k�teen. Nosta + * kaksi -kortin saa ly�d� joko samanv�risen kortin tai my�s eriv�risen Nosta + * kaksi -kortin p��lle. */ else if (kortti instanceof NostaKaksikortti) { @@ -371,8 +377,8 @@ public class Peli { } /* - * Ohituskortti � Kortin ly�neest� pelaajasta seuraava menett�� vuoronsa. Kortin - * saa ly�d� joko samanv�risen kortin tai eriv�risen ohituskortin p��lle. + * Ohituskortti � Kortin ly�neest� pelaajasta seuraava menett�� vuoronsa. Kortin + * saa ly�d� joko samanv�risen kortin tai eriv�risen ohituskortin p��lle. */ else if (kortti instanceof Ohituskortti) { @@ -386,9 +392,9 @@ public class Peli { } /* - * Suunnanvaihtokortti � Kortti vaihtaa pelaajien vuoroj�rjestyksen suunnan. - * Kortin saa ly�d� joko samanv�risen kortin tai eriv�risen Suunnanvaihtokortin - * p��lle. + * Suunnanvaihtokortti � Kortti vaihtaa pelaajien vuoroj�rjestyksen suunnan. + * Kortin saa ly�d� joko samanv�risen kortin tai eriv�risen Suunnanvaihtokortin + * p��lle. */ else if (kortti instanceof Suunnanvaihtokortti) { @@ -396,6 +402,8 @@ public class Peli { || edellinenKortti instanceof Suunnanvaihtokortti) { } this.suuntaKasvava = !this.suuntaKasvava; + paivitaVuoronumero(); + paivitaVuoronumero(); kelvollinenKortti = true; System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); } @@ -405,7 +413,7 @@ public class Peli { if (!kortti.annaVari().equals(edellinenKortti.annaVari()) && edellinenKortti instanceof Peruskortti) { if (((Peruskortti) kortti).annaNumero() != ((Peruskortti) edellinenKortti).annaNumero()) { - //Kortti on peruskortti, mutta eriv�rinen ja erinumeroinen kuin edellinen kortti + //Kortti on peruskortti, mutta eriv�rinen ja erinumeroinen kuin edellinen kortti return false; } } diff --git a/src/ui/Tekstikayttoliittyma.java b/src/ui/Tekstikayttoliittyma.java index 858b673b4d7792cd96115aa52bc0c5a791566318..554bd798116bee12d77d367f22e257676f7b18e9 100644 --- a/src/ui/Tekstikayttoliittyma.java +++ b/src/ui/Tekstikayttoliittyma.java @@ -68,8 +68,8 @@ public class Tekstikayttoliittyma { while (peliKesken) { Pelaaja peliVuorossa = peli.annaPelaaja(peli.annaSeuraavaksiVuorossa()); - System.out.println("Pelivuorossa on: " + peliVuorossa.annaNimi() - + " (Pisteet: " + peliVuorossa.laskePisteet() + ")"); +// System.out.println("Pelivuorossa on: " + peliVuorossa.annaNimi() +// + " (Pisteet: " + peliVuorossa.laskePisteet() + ")"); System.out.println(); @@ -77,21 +77,21 @@ public class Tekstikayttoliittyma { if (peli.annaSeuraavaksiVuorossa() == 0) { 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��limm�inen kortti on: "); + System.out.print("Pakan p��limm�inen kortti on: "); System.out.println(poistopakka.annaPaallimmainenKortti()); } peli.paivitaVuoronumero(); boolean korttiPelattu = false; while (korttiPelattu == false) { - System.out.println("Sinulla on k�dess�si kortit:"); + System.out.println("Sinulla on k�dess�si kortit:"); pelaaja.tulostaKortit(); System.out.println("Kirjoita kortin numero pelataksesi kortin tai \"nosta\" nostaaksesi kortin."); - System.out.print(">"); + System.out.print("> "); String input = this.lukija.next(); List<Kortti> kortit = pelaaja.annaKortit(); if (input.equals("nosta")) { @@ -126,6 +126,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. kelvollinenKortti = true; } else { kortinNumero++;