Skip to content
Snippets Groups Projects
Commit 56f4e158 authored by Roope Malinen's avatar Roope Malinen
Browse files

ndgusiahgugdnsgn

parent 41951ff5
No related branches found
No related tags found
No related merge requests found
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")));
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")));
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,19 +236,17 @@ 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 (edellinenKortti.annaVari() != null) {
if (!kortti.annaVari().equals(edellinenKortti.annaVari())
&& edellinenKortti instanceof Peruskortti) {
if (((Peruskortti) kortti).annaNumero() != ((Peruskortti) edellinenKortti).annaNumero()) {
......@@ -264,11 +258,11 @@ 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;
}
}
}
this.vari = null;
return kelvollinenKortti;
......@@ -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();
}
......@@ -50,16 +50,26 @@ public class Tekstikayttoliittyma {
Poistopakka poistopakka = peli.annaPoistopakka();
Nostopakka nostopakka = peli.annaNostopakka();
try {
PrintWriter tiedosto = new PrintWriter(new File("pelitilanne.txt"));
tiedosto.close();
} catch (Exception e) {
// TODO: handle exception
}
Kortti ensimmainenKortti = poistopakka.annaPaallimmainenKortti();
peli.pelaaKorttiTietokone(lukija, ensimmainenKortti, null, pelaaja);
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();
......@@ -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++;
......@@ -127,8 +135,31 @@ public class Tekstikayttoliittyma {
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
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment