Commit f1cff9d2 authored by Roope Malinen's avatar Roope Malinen
Browse files

Ihan vaan niin kuin muuten vaan palautteesta gitille, 1/5 tähteä, elämäni kehnoin kokemus

parent 69f0060a
package domain.kortit;
public interface Erikoiskortti {
}
package domain.kortit;
public class Jokerikortti extends Kortti {
public class Jokerikortti extends Kortti implements Erikoiskortti {
public Jokerikortti(String vari) {
super(vari);
}
public String toString() {
return "[Jokeri, vri]";
return "jokerikortti";
}
}
package domain.kortit;
public class Nosta4Jokerikortti extends Kortti {
public class Nosta4Jokerikortti extends Kortti implements Erikoiskortti {
public Nosta4Jokerikortti(String vari) {
super(vari);
}
public String toString() {
return "[Jokeri, +4]";
return "nosta 4 -jokerikortti";
}
}
package domain.kortit;
public class NostaKaksikortti extends Kortti {
public class NostaKaksikortti extends Kortti implements Erikoiskortti {
public NostaKaksikortti(String vari) {
......@@ -8,6 +8,6 @@ public class NostaKaksikortti extends Kortti {
}
public String toString() {
return "[" + this.vari + ", +2]";
return this.vari + " nosta kaksi -kortti";
}
}
package domain.kortit;
public class Ohituskortti extends Kortti {
public class Ohituskortti extends Kortti implements Erikoiskortti {
public Ohituskortti(String vari) {
......@@ -8,7 +8,7 @@ public class Ohituskortti extends Kortti {
}
public String toString() {
return "[" + this.vari + ", ]";
return this.vari + " ohituskortti";
}
}
......@@ -14,7 +14,7 @@ public class Peruskortti extends Kortti {
}
public String toString() {
return "[" + this.vari + ", " + this.numero + "]";
return this.vari + " peruskortti numero " + this.numero;
}
......
package domain.kortit;
public class Suunnanvaihtokortti extends Kortti {
public class Suunnanvaihtokortti extends Kortti implements Erikoiskortti {
public Suunnanvaihtokortti(String vari) {
super(vari);
}
public String toString() {
return "[" + this.vari + ", <->]";
return this.vari + " suunnanvaihtokortti";
}
}
......@@ -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();
}
}
......@@ -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();
}
}
......@@ -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();
}
}
......@@ -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();
......@@ -158,12 +158,10 @@ public class Peli {
* ottamaan vastaan Nosta kaksi -korttia tai Nosta 4-jokeri -korttia.
*/
if (kortti instanceof Jokerikortti) {
do{
System.out.println("Valitse vri (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")));
System.out.println("Valitse vri (sininen, punainen, keltainen, vihre):");
System.out.print(">");
String vari = lukija.next();
this.vari = vari;
this.paivitaVuoronumero();
kelvollinenKortti = true;
}
......@@ -188,12 +186,10 @@ public class Peli {
return false;
}
this.annaPelaaja(seuraavaksiVuorossa).nostaNeljaKorttia(this.nostopakka);
do{
System.out.println("Valitse vri (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")));
System.out.println("Valitse vri (sininen, punainen, keltainen, vihre):");
System.out.print(">");
String vari = lukija.next();
this.vari = vari;
this.paivitaVuoronumero();
kelvollinenKortti = true;
}
......@@ -206,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 lyd samanvrisen kortin plle tai"
+ " toisen nosta 2 -kortin plle.");
......@@ -223,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 lyd samanvrisen kortin plle tai"
+ " toisen ohituskortin plle.");
......@@ -240,20 +236,18 @@ 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 lyd samanvrisen kortin plle tai"
+ " toisen suunnanvaihtokortin plle.");
}
this.suuntaKasvava = !this.suuntaKasvava;
paivitaVuoronumero();
paivitaVuoronumero();
kelvollinenKortti = true;
}
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 erivrinen ja erinumeroinen kuin edellinen kortti
......@@ -264,10 +258,10 @@ public class Peli {
if(!kortti.annaVari().equals(edellinenKortti.annaVari())) {
System.out.println("Kortin tulee olla samaa vri tai sama numero.");
return false;
}
} else {
kelvollinenKortti = true;
}
} else {
kelvollinenKortti = true;
}
}
}
this.vari = null;
......@@ -286,6 +280,7 @@ public class Peli {
return false;
}
this.vari = null;
System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti);
return true;
}
......@@ -344,6 +339,7 @@ public class Peli {
}
}
if (pelaajallaSopivanVarinenKortti) {
System.out.println("Et voi kytt Nosta 4 -korttia, jos sinulla on sopivan vrinen kortti.");
return false;
}
this.annaPelaaja(seuraavaksiVuorossa).nostaNeljaKorttia(this.nostopakka);
......@@ -364,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;
}
......@@ -380,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;
}
......@@ -396,18 +392,16 @@ 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;
paivitaVuoronumero();
paivitaVuoronumero();
kelvollinenKortti = true;
System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti);
}
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()) {
......
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,17 +49,27 @@ 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) {
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();
......@@ -81,7 +91,7 @@ public class Tekstikayttoliittyma {
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")) {
......@@ -116,8 +126,6 @@ public class Tekstikayttoliittyma {
if (!kelvollinenKortti) {
if (kortinNumero == peliVuorossa.annaKortit().size()-1) {
peliVuorossa.nostaKortti(nostopakka); //ei sopivaa korttia
// System.out.println((peli.annaPelaaja(peli.annaSeuraavaksiVuorossa()).annaNimi()) + " nosti yhden kortin"); //Faulty, saved for syntax
System.out.println(peliVuorossa.annaNimi() + " nosti yhden kortin"); //Vaikutti rikkovan jotain? En tied varmaksi. Nyt nytt jo toimivan
kelvollinenKortti = true;
} else {
kortinNumero++;
......@@ -126,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
}
}
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment