diff --git a/src/domain/kortit/Erikoiskortti.java b/src/domain/kortit/Erikoiskortti.java new file mode 100644 index 0000000000000000000000000000000000000000..9a5a82cb9134cc20e5ee0d5456029f365a3b77d9 --- /dev/null +++ b/src/domain/kortit/Erikoiskortti.java @@ -0,0 +1,5 @@ +package domain.kortit; + +public interface Erikoiskortti { + +} diff --git a/src/domain/kortit/Jokerikortti.java b/src/domain/kortit/Jokerikortti.java index af0d600626dd891a36b4f76f93b2d35ae64ab3f3..3825dcb95547d4b06817fa2ae05e68fc01b6f5ca 100644 --- a/src/domain/kortit/Jokerikortti.java +++ b/src/domain/kortit/Jokerikortti.java @@ -1,6 +1,6 @@ package domain.kortit; -public class Jokerikortti extends Kortti { +public class Jokerikortti extends Kortti implements Erikoiskortti { public Jokerikortti(String vari) { super(vari); diff --git a/src/domain/kortit/Nosta4Jokerikortti.java b/src/domain/kortit/Nosta4Jokerikortti.java index 4535fbc2cb68959b6a974d400ecffe58349a525f..01863b6588fbbb6a0f5a4579e95e8b3a89bb70eb 100644 --- a/src/domain/kortit/Nosta4Jokerikortti.java +++ b/src/domain/kortit/Nosta4Jokerikortti.java @@ -1,6 +1,6 @@ package domain.kortit; -public class Nosta4Jokerikortti extends Kortti { +public class Nosta4Jokerikortti extends Kortti implements Erikoiskortti { public Nosta4Jokerikortti(String vari) { super(vari); diff --git a/src/domain/kortit/NostaKaksikortti.java b/src/domain/kortit/NostaKaksikortti.java index 9f7b1ac9d2b7655f7bf3b14d2d648c578e18fb05..57c5c6638c4004d5b6264c175fa80887eaa56b8f 100644 --- a/src/domain/kortit/NostaKaksikortti.java +++ b/src/domain/kortit/NostaKaksikortti.java @@ -1,6 +1,6 @@ package domain.kortit; -public class NostaKaksikortti extends Kortti { +public class NostaKaksikortti extends Kortti implements Erikoiskortti { public NostaKaksikortti(String vari) { diff --git a/src/domain/kortit/Ohituskortti.java b/src/domain/kortit/Ohituskortti.java index 58ba67c61ff28b5ef21517e05e85f3fb695d92a6..19ae128b081b46df3c1444ff22200f9dfa851e5a 100644 --- a/src/domain/kortit/Ohituskortti.java +++ b/src/domain/kortit/Ohituskortti.java @@ -1,6 +1,6 @@ package domain.kortit; -public class Ohituskortti extends Kortti { +public class Ohituskortti extends Kortti implements Erikoiskortti { public Ohituskortti(String vari) { diff --git a/src/domain/kortit/Suunnanvaihtokortti.java b/src/domain/kortit/Suunnanvaihtokortti.java index 54f56a8c30256d4c95eae5438d3e6d4ca525ab51..7383ffbe9c6d756856e802054f00a878c1db773e 100644 --- a/src/domain/kortit/Suunnanvaihtokortti.java +++ b/src/domain/kortit/Suunnanvaihtokortti.java @@ -1,6 +1,6 @@ package domain.kortit; -public class Suunnanvaihtokortti extends Kortti { +public class Suunnanvaihtokortti extends Kortti implements Erikoiskortti { public Suunnanvaihtokortti(String vari) { super(vari); diff --git a/src/domain/korttipakat/Nostopakka.java b/src/domain/korttipakat/Nostopakka.java index e179604ad14e32e0141cb3301d64117351cfdbfd..186e2cab12d1a9abf3b519dc362b090fbafa3ca3 100644 --- a/src/domain/korttipakat/Nostopakka.java +++ b/src/domain/korttipakat/Nostopakka.java @@ -26,4 +26,13 @@ public class Nostopakka { throw new IndexOutOfBoundsException(); } } + + public String toString() { + StringBuilder str = new StringBuilder(""); + str.append("Nostopakassa on kortit:\n"); + for (Kortti kortti : this.kortit) { + str.append(kortti + "\n"); + } + return str.toString(); + } } diff --git a/src/domain/korttipakat/Poistopakka.java b/src/domain/korttipakat/Poistopakka.java index bbe4d29445da124a8db18c4797969195d60b9f07..7118b11971053cf6eb06781bdba634b2dd1ba6c2 100644 --- a/src/domain/korttipakat/Poistopakka.java +++ b/src/domain/korttipakat/Poistopakka.java @@ -20,4 +20,13 @@ public class Poistopakka { public Kortti annaPaallimmainenKortti() { return this.kortit.get(this.kortit.size()-1); } + + public String toString() { + StringBuilder str = new StringBuilder(""); + str.append("Poistopakassa olevat kortit:\n"); + for (Kortti kortti : this.kortit) { + str.append(kortti + "\n"); + } + return str.toString(); + } } diff --git a/src/domain/pelaajat/Pelaaja.java b/src/domain/pelaajat/Pelaaja.java index ab43c193b982b07566a5f7e98b0c724b60a4f7c1..a6202e875b29dbc641463f5eaa25f5058403eb4a 100644 --- a/src/domain/pelaajat/Pelaaja.java +++ b/src/domain/pelaajat/Pelaaja.java @@ -72,4 +72,13 @@ public abstract class Pelaaja { } return summa; } + + public String toString() { + StringBuilder str = new StringBuilder(""); + str.append("Pelaajan " + this.nimi + " kortit:\n"); + for (Kortti kortti : this.kortit) { + str.append(kortti + "\n"); + } + return str.toString(); + } } diff --git a/src/logiikka/Peli.java b/src/logiikka/Peli.java index 6e0c0f0303d90df869f701e76706093d46069fed..0e80f8f33f81563ff82a04f27bea59e09fb1a7c3 100644 --- a/src/logiikka/Peli.java +++ b/src/logiikka/Peli.java @@ -202,7 +202,7 @@ public class Peli { */ else if (kortti instanceof NostaKaksikortti) { - if (edellinenKortti != null && !edellinenKortti.annaVari().equals(kortti.annaVari()) + 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."); @@ -219,7 +219,7 @@ public class Peli { */ else if (kortti instanceof Ohituskortti) { - if (edellinenKortti != null && !edellinenKortti.annaVari().equals(kortti.annaVari()) + 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."); @@ -236,7 +236,7 @@ public class Peli { */ else if (kortti instanceof Suunnanvaihtokortti) { - if (edellinenKortti != null && !edellinenKortti.annaVari().equals(kortti.annaVari()) + 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."); @@ -246,8 +246,8 @@ public class Peli { } else if (kortti instanceof Peruskortti) { - if (edellinenKortti != null && edellinenKortti.annaVari() != null) { - if (!kortti.annaVari().equals(edellinenKortti.annaVari()) + if (edellinenKortti.annaVari() != null) { + 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 @@ -258,10 +258,10 @@ public class Peli { if(!kortti.annaVari().equals(edellinenKortti.annaVari())) { System.out.println("Kortin tulee olla samaa v�ri� tai sama numero."); return false; - } - } else { - kelvollinenKortti = true; - } + } else { + kelvollinenKortti = true; + } + } } this.vari = null; @@ -280,6 +280,7 @@ public class Peli { return false; } this.vari = null; + System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti); return true; } @@ -359,7 +360,7 @@ public class Peli { */ else if (kortti instanceof NostaKaksikortti) { - if (edellinenKortti != null && !edellinenKortti.annaVari().equals(kortti.annaVari()) + if (!edellinenKortti.annaVari().equals(kortti.annaVari()) || edellinenKortti instanceof NostaKaksikortti) { return false; } @@ -375,7 +376,7 @@ public class Peli { */ else if (kortti instanceof Ohituskortti) { - if (edellinenKortti != null && !edellinenKortti.annaVari().equals(kortti.annaVari()) + if (!edellinenKortti.annaVari().equals(kortti.annaVari()) || edellinenKortti instanceof Ohituskortti) { return false; } @@ -391,7 +392,7 @@ public class Peli { */ else if (kortti instanceof Suunnanvaihtokortti) { - if (edellinenKortti != null && !edellinenKortti.annaVari().equals(kortti.annaVari()) + if (!edellinenKortti.annaVari().equals(kortti.annaVari()) || edellinenKortti instanceof Suunnanvaihtokortti) { } this.suuntaKasvava = !this.suuntaKasvava; @@ -400,7 +401,7 @@ public class Peli { } else if (kortti instanceof Peruskortti) { - if (edellinenKortti != null && edellinenKortti.annaVari() != null) { + if (edellinenKortti.annaVari() != null) { if (!kortti.annaVari().equals(edellinenKortti.annaVari()) && edellinenKortti instanceof Peruskortti) { if (((Peruskortti) kortti).annaNumero() != ((Peruskortti) edellinenKortti).annaNumero()) { diff --git a/src/ui/Tekstikayttoliittyma.java b/src/ui/Tekstikayttoliittyma.java index d0537c840c411e36df8181cad7280da0b251b997..858b673b4d7792cd96115aa52bc0c5a791566318 100644 --- a/src/ui/Tekstikayttoliittyma.java +++ b/src/ui/Tekstikayttoliittyma.java @@ -1,8 +1,15 @@ package ui; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Scanner; +import domain.kortit.Erikoiskortti; import domain.kortit.Kortti; import domain.korttipakat.Nostopakka; import domain.korttipakat.Poistopakka; @@ -20,7 +27,7 @@ public class Tekstikayttoliittyma { public void start() { System.out.println("Tervetuloa pelaamaan Uunoa. Kirjoita \"uusi\" aloittaaksesi uuden pelin,"); - System.out.println(" \"lataa\" ladataksesi vanhan pelin, \"ohjeet\" lukeaksesi peliohjeita tai 'lopeta' lopettaaksesi."); + System.out.println(" \"lataa\" ladataksesi vanhan pelin tai 'lopeta' lopettaaksesi."); System.out.print("> "); String input = this.lukija.next(); @@ -29,13 +36,6 @@ public class Tekstikayttoliittyma { return; case "uusi": this.uusiPeli(); - break; - case "lataa": -// lataaPeli(); - break; - case "ohjeet": -// naytaPeliohjeet(); - break; default: this.uusiPeli(); } @@ -49,11 +49,21 @@ public class Tekstikayttoliittyma { Pelaaja pelaaja = peli.annaPelaaja(0); Poistopakka poistopakka = peli.annaPoistopakka(); Nostopakka nostopakka = peli.annaNostopakka(); - - Kortti ensimmainenKortti = poistopakka.annaPaallimmainenKortti(); - peli.pelaaKorttiTietokone(lukija, ensimmainenKortti, null, pelaaja); + try { + PrintWriter tiedosto = new PrintWriter(new File("pelitilanne.txt")); + tiedosto.close(); + } catch (Exception e) { + // TODO: handle exception + } + + Kortti ensimmainenKortti = poistopakka.annaPaallimmainenKortti(); + while (ensimmainenKortti instanceof Erikoiskortti) { + ensimmainenKortti = nostopakka.nostaKortti(); + poistopakka.lisaaKortti(ensimmainenKortti); + } + boolean peliKesken = true; while (peliKesken) { @@ -124,9 +134,32 @@ public class Tekstikayttoliittyma { poistopakka.lisaaKortti(k); kortit.remove(kortinNumero); } - } + } + } + //Tulostaminen tiedostoon + try { + + File tiedosto = new File("pelitilanne.txt"); + OutputStreamWriter kirjoittaja = + new OutputStreamWriter(new FileOutputStream(tiedosto), StandardCharsets.UTF_8); + kirjoittaja.append(peli.annaPelaaja(0).toString()); + kirjoittaja.append("\n"); + kirjoittaja.append(peli.annaPelaaja(1).toString()); + kirjoittaja.append("\n"); + kirjoittaja.append(peli.annaPelaaja(2).toString()); + kirjoittaja.append("\n"); + kirjoittaja.append(peli.annaPelaaja(3).toString()); + kirjoittaja.append("\n"); + kirjoittaja.append(nostopakka.toString()); + kirjoittaja.append("\n"); + kirjoittaja.append(poistopakka.toString()); + + kirjoittaja.close(); + } catch (Exception e) { + // TODO: handle exception } + } } }