From bee73e36aa3eef0a3ab1db4d7baaa7b33359a3c6 Mon Sep 17 00:00:00 2001 From: Roope Malinen <rokrmal@utu.fi> Date: Mon, 9 Mar 2020 21:51:18 +0000 Subject: [PATCH] =?UTF-8?q?Ihan=20vaan=20niin=20kuin=20muuten=20vaan=20pal?= =?UTF-8?q?autteesta=20gitille,=201/5=20t=C3=A4hte=C3=A4,=20el=C3=A4m?= =?UTF-8?q?=C3=A4ni=20kehnoin=20kokemus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit f1cff9d276559f9adaefb955413492887fc7e3f1) --- src/domain/kortit/Erikoiskortti.java | 5 ++ src/domain/kortit/Jokerikortti.java | 2 +- src/domain/kortit/Nosta4Jokerikortti.java | 2 +- src/domain/kortit/NostaKaksikortti.java | 2 +- src/domain/kortit/Ohituskortti.java | 2 +- src/domain/kortit/Suunnanvaihtokortti.java | 2 +- src/domain/korttipakat/Nostopakka.java | 9 ++++ src/domain/korttipakat/Poistopakka.java | 9 ++++ src/domain/pelaajat/Pelaaja.java | 9 ++++ src/logiikka/Peli.java | 27 +++++----- src/ui/Tekstikayttoliittyma.java | 57 +++++++++++++++++----- 11 files changed, 96 insertions(+), 30 deletions(-) create mode 100644 src/domain/kortit/Erikoiskortti.java diff --git a/src/domain/kortit/Erikoiskortti.java b/src/domain/kortit/Erikoiskortti.java new file mode 100644 index 0000000..9a5a82c --- /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 af0d600..3825dcb 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 4535fbc..01863b6 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 9f7b1ac..57c5c66 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 58ba67c..19ae128 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 54f56a8..7383ffb 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 e179604..186e2ca 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 bbe4d29..7118b11 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 ab43c19..a6202e8 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 6e0c0f0..0e80f8f 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 d0537c8..858b673 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 } + } } } -- GitLab