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

please I'm so tired of this

parent a656925a
Branches
No related tags found
No related merge requests found
Showing
with 0 additions and 888 deletions
package domain.kortit;
public class Jokerikortti extends Kortti {
public Jokerikortti(String vari) {
super(vari);
}
public String toString() {
return "[Jokeri, vri]";
}
}
package domain.kortit;
public abstract class Kortti {
protected String vari;
public Kortti(String vari) {
this.vari = vari;
}
public String annaVari() {
return this.vari;
}
}
package domain.kortit;
public class Nosta4Jokerikortti extends Kortti {
public Nosta4Jokerikortti(String vari) {
super(vari);
}
public String toString() {
return "[Jokeri, +4]";
}
}
package domain.kortit;
public class NostaKaksikortti extends Kortti {
public NostaKaksikortti(String vari) {
super(vari);
}
public String toString() {
return "[" + this.vari + ", +2]";
}
}
package domain.kortit;
public class Ohituskortti extends Kortti {
public Ohituskortti(String vari) {
super(vari);
}
public String toString() {
return "[" + this.vari + ", ]";
}
}
package domain.kortit;
public class Peruskortti extends Kortti {
private int numero;
public Peruskortti(String vari, int numero) {
super(vari);
this.numero = numero;
}
public int annaNumero() {
return this.numero;
}
public String toString() {
return "[" + this.vari + ", " + this.numero + "]";
}
}
package domain.kortit;
public class Suunnanvaihtokortti extends Kortti {
public Suunnanvaihtokortti(String vari) {
super(vari);
}
public String toString() {
return "[" + this.vari + ", <->]";
}
}
package domain.korttipakat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import domain.kortit.Jokerikortti;
import domain.kortit.Kortti;
import domain.kortit.Nosta4Jokerikortti;
import domain.kortit.NostaKaksikortti;
import domain.kortit.Ohituskortti;
import domain.kortit.Peruskortti;
import domain.kortit.Suunnanvaihtokortti;
public class Korttipakka {
List<Kortti> kortit;
public Korttipakka() {
this.kortit = new ArrayList<>();
this.generoiKorttipakka();
this.sekoita();
}
public void generoiKorttipakka() {
for (int i = 0; i < 4; i++) {
this.kortit.add(new Jokerikortti(null));
}
for (int i = 0; i < 4; i++) {
this.kortit.add(new Nosta4Jokerikortti(null));
}
generoiSamaaVariaOlevatKortit("sininen");
generoiSamaaVariaOlevatKortit("vihre");
generoiSamaaVariaOlevatKortit("punainen");
generoiSamaaVariaOlevatKortit("keltainen");
}
public void generoiSamaaVariaOlevatKortit(String vari) {
for (int i = 0; i < 2; i++) {
for (int j = 1; j < 10; j++) {
this.kortit.add(new Peruskortti(vari, j));
}
this.kortit.add(new NostaKaksikortti(vari));
this.kortit.add(new Suunnanvaihtokortti(vari));
this.kortit.add(new Ohituskortti(vari));
}
this.kortit.add(new Peruskortti(vari, 0));
}
public void sekoita() {
Collections.shuffle(this.kortit);
}
public Kortti jaaKortti() {
Kortti k = this.kortit.get(0);
this.kortit.remove(0);
return k;
}
public List<Kortti> annaKortit() {
return this.kortit;
}
}
package domain.korttipakat;
import java.util.ArrayList;
import java.util.List;
import domain.kortit.Kortti;
public class Nostopakka {
List<Kortti> kortit;
public Nostopakka() {
this.kortit = new ArrayList<>();
}
public void lisaaKortit(List<Kortti> kortit) {
this.kortit.addAll(kortit);
}
public Kortti nostaKortti() {
try {
Kortti k = this.kortit.get(0);
this.kortit.remove(0);
return k;
} catch (Exception e) {
throw new IndexOutOfBoundsException();
}
}
}
package domain.korttipakat;
import java.util.ArrayList;
import java.util.List;
import domain.kortit.Kortti;
public class Poistopakka {
List<Kortti> kortit;
public Poistopakka() {
this.kortit = new ArrayList<>();
}
public void lisaaKortti(Kortti k) {
this.kortit.add(k);
}
public Kortti annaPaallimmainenKortti() {
return this.kortit.get(this.kortit.size()-1);
}
}
package domain.pelaajat;
public class Ihmispelaaja extends Pelaaja {
public Ihmispelaaja(String nimi) {
super(nimi);
}
}
package domain.pelaajat;
import java.util.ArrayList;
import java.util.List;
import domain.kortit.Jokerikortti;
import domain.kortit.Kortti;
import domain.kortit.Nosta4Jokerikortti;
import domain.kortit.NostaKaksikortti;
import domain.kortit.Ohituskortti;
import domain.kortit.Peruskortti;
import domain.kortit.Suunnanvaihtokortti;
import domain.korttipakat.Nostopakka;
public abstract class Pelaaja {
private String nimi;
List<Kortti> kortit;
public Pelaaja(String nimi) {
this.nimi = nimi;
this.kortit = new ArrayList<>();
}
public void lisaaKortti(Kortti k) {
this.kortit.add(k);
}
public void tulostaKortit() {
int i = 0;
for (Kortti k : this.kortit) {
System.out.println("(" + i + ")" + " " + k.toString());
i++;
}
}
public List<Kortti> annaKortit() {
return this.kortit;
}
public String annaNimi() {
return this.nimi;
}
public void nostaKortti(Nostopakka nostopakka) {
this.kortit.add(nostopakka.nostaKortti());
}
public void nostaKaksiKorttia(Nostopakka nostopakka) {
this.nostaKortti(nostopakka);
this.nostaKortti(nostopakka);
}
public void nostaNeljaKorttia(Nostopakka nostopakka) {
this.nostaKortti(nostopakka);
this.nostaKortti(nostopakka);
this.nostaKortti(nostopakka);
this.nostaKortti(nostopakka);
}
public int laskePisteet() {
int summa = 0;
for (Kortti k : this.kortit) {
if (k instanceof Ohituskortti || k instanceof Suunnanvaihtokortti
|| k instanceof NostaKaksikortti) {
summa += 20;
} else if (k instanceof Jokerikortti || k instanceof Nosta4Jokerikortti) {
summa += 50;
} else {
summa += ((Peruskortti) k).annaNumero();
}
}
return summa;
}
}
package domain.pelaajat;
public class Tietokonepelaaja extends Pelaaja {
public Tietokonepelaaja(String nimi) {
super(nimi);
}
}
package logiikka;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import domain.kortit.Jokerikortti;
import domain.kortit.Kortti;
import domain.kortit.Nosta4Jokerikortti;
import domain.kortit.NostaKaksikortti;
import domain.kortit.Ohituskortti;
import domain.kortit.Peruskortti;
import domain.kortit.Suunnanvaihtokortti;
import domain.korttipakat.Korttipakka;
import domain.korttipakat.Nostopakka;
import domain.korttipakat.Poistopakka;
import domain.pelaajat.Ihmispelaaja;
import domain.pelaajat.Pelaaja;
import domain.pelaajat.Tietokonepelaaja;
public class Peli {
private List<Pelaaja> pelaajat;
private Nostopakka nostopakka;
private Poistopakka poistopakka;
private String vari;
private int seuraavaksiVuorossa;
private boolean suuntaKasvava;
private Random random;
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.nostopakka = new Nostopakka();
this.poistopakka = new Poistopakka();
Korttipakka korttipakka = new Korttipakka();
this.jaaKortit(korttipakka);
this.vari = null;
this.seuraavaksiVuorossa = 0;
this.suuntaKasvava = true;
this.random = new Random();
}
public void jaaKortit(Korttipakka k) {
for (Pelaaja p : this.pelaajat) {
for (int i = 0; i < 7; i++) {
p.lisaaKortti(k.jaaKortti());
k.sekoita();
}
}
this.poistopakka.lisaaKortti(k.jaaKortti());
this.nostopakka.lisaaKortit(k.annaKortit());
}
public Pelaaja annaPelaaja(int numero) {
return this.pelaajat.get(numero);
}
public Nostopakka annaNostopakka() {
return this.nostopakka;
}
public Poistopakka annaPoistopakka() {
return this.poistopakka;
}
public void kasvataVuoronumeroa() {
if (this.seuraavaksiVuorossa == this.pelaajat.size()-1) {
this.seuraavaksiVuorossa = 0;
return;
}
this.seuraavaksiVuorossa++;
}
public void pienennaVuoronumeroa() {
if (this.seuraavaksiVuorossa == 0) {
this.seuraavaksiVuorossa = this.pelaajat.size()-1;
return;
}
this.seuraavaksiVuorossa--;
}
public boolean annaSuuntaKasvava() {
return this.suuntaKasvava;
}
public int annaSeuraavaksiVuorossa() {
return this.seuraavaksiVuorossa;
}
public String annaVari() {
return this.vari;
}
public void paivitaVuoronumero() {
if (this.annaSuuntaKasvava()) {
this.kasvataVuoronumeroa();
} else {
this.pienennaVuoronumeroa();
}
}
public boolean pelaaKortti(Scanner lukija, Kortti kortti, Kortti edellinenKortti, Pelaaja pelaaja) {
boolean kelvollinenKortti = false;
// Edellinen pelaaja on valinnut vrin
if (this.vari != null) {
if (kortti.annaVari() != null
&& kortti.annaVari().equals(this.vari)) {
return false;
}
this.vari = null;
return true;
}
// Jos edellinen kortti on Jokerikortti tai Nosta 4 -jokerikortti,
//niin kortin pit olla annettua vri tai jokerikortti tai Nosta 4 -jokerikortti.
// Nosta 4 -jokerikortin voi kytt vain jos pelaajalla ei ole kyseist vri.
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 vriltn "
+ this.vari + " tai jokerikortti tai Nosta 4- jokerikortti "
+ "(vain jos kdess ei ole kyseist vri)");
return false;
}
if (kortti instanceof Nosta4Jokerikortti) {
boolean pelaajallaSopivanVarinenKortti = false;
for (Kortti k : pelaaja.annaKortit()) {
if (k.annaVari() != null &&
k.annaVari().equals(edellinenKortti.annaVari())) {
pelaajallaSopivanVarinenKortti = true;
}
}
if (pelaajallaSopivanVarinenKortti) {
System.out.println("Et voi kytt Nosta 4 -korttia, jos sinulla on sopivan vrinen kortti.");
return false;
}
}
}
/*
* Jokeri Kortin lynyt pelaaja saa valita seuraavaksi pelattavan vrin.
* Kortin saa lyd milloin tahansa paitsi silloin, kun sen lyj joutuu juuri
* 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;
}
/*
* Nosta 4 -jokeri Kortin lyneest pelaajasta seuraava menett vuoronsa
* ja nostaa pakasta nelj korttia. Lisksi kortin lynyt pelaaja saa valita
* seuraavaksi pelattavan vrin. Pelaaja ei saa kuitenaan lyd nosta 4-jokeri
* korttia silloin, kun hnell on kdessn mys samanvrinen kortti kuin
* poistopakan pllimminen kortti on. Muulloin kortin voi lyd koska vain.
*/
else if (kortti instanceof Nosta4Jokerikortti) {
boolean pelaajallaSopivanVarinenKortti = false;
for (Kortti k : pelaaja.annaKortit()) {
if (k.annaVari() != null &&
k.annaVari().equals(edellinenKortti.annaVari())) {
pelaajallaSopivanVarinenKortti = true;
}
}
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);
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;
}
/*
* Nosta kaksi Kortin lyneen pelaajan jlkeen seuraavana vuorossa oleva
* menett vuoronsa ja joutuu nostamaan pakasta kaksi korttia kteen. Nosta
* kaksi -kortin saa lyd joko samanvrisen kortin tai mys erivrisen Nosta
* kaksi -kortin plle.
*/
else if (kortti instanceof NostaKaksikortti) {
if (edellinenKortti != null && !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.");
return false;
}
this.annaPelaaja(seuraavaksiVuorossa).nostaKaksiKorttia(this.nostopakka);
this.paivitaVuoronumero();
kelvollinenKortti = true;
}
/*
* Ohituskortti Kortin lyneest pelaajasta seuraava menett vuoronsa. Kortin
* saa lyd joko samanvrisen kortin tai erivrisen ohituskortin plle.
*/
else if (kortti instanceof Ohituskortti) {
if (edellinenKortti != null && !edellinenKortti.annaVari().equals(kortti.annaVari())
|| edellinenKortti instanceof Ohituskortti) {
System.out.println("Ohituskortin saa lyd samanvrisen kortin plle tai"
+ " toisen ohituskortin plle.");
return false;
}
this.paivitaVuoronumero();
kelvollinenKortti = true;
}
/*
* Suunnanvaihtokortti Kortti vaihtaa pelaajien vuorojrjestyksen suunnan.
* Kortin saa lyd joko samanvrisen kortin tai erivrisen Suunnanvaihtokortin
* plle.
*/
else if (kortti instanceof Suunnanvaihtokortti) {
if (edellinenKortti != null && !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())
&& edellinenKortti instanceof Peruskortti) {
if (((Peruskortti) kortti).annaNumero() != ((Peruskortti) edellinenKortti).annaNumero()) {
//Kortti on peruskortti, mutta erivrinen ja erinumeroinen kuin edellinen kortti
System.out.println("Kortin tulee olla samaa vri tai sama numero.");
return false;
}
}
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;
}
public boolean pelaaKorttiTietokone(Scanner lukija, Kortti kortti, Kortti edellinenKortti, Pelaaja pelaaja) {
boolean kelvollinenKortti = false;
// Edellinen pelaaja on valinnut vrin
if (this.vari != null) {
if (kortti.annaVari() != null
&& kortti.annaVari().equals(this.vari)) {
return false;
}
this.vari = null;
return true;
}
// Jos edellinen kortti on Jokerikortti tai Nosta 4 -jokerikortti,
//niin kortin pit olla annettua vri tai jokerikortti tai Nosta 4 -jokerikortti.
// Nosta 4 -jokerikortin voi kytt vain jos pelaajalla ei ole kyseist vri.
if (edellinenKortti instanceof Jokerikortti || edellinenKortti instanceof Nosta4Jokerikortti) {
if (kortti.annaVari() != null
&& !kortti.annaVari().equals(this.vari) && !(kortti instanceof Jokerikortti)
&& !(kortti instanceof Nosta4Jokerikortti)) {
return false;
}
if (kortti instanceof Nosta4Jokerikortti) {
boolean pelaajallaSopivanVarinenKortti = false;
for (Kortti k : pelaaja.annaKortit()) {
if (k.annaVari() != null
&& k.annaVari().equals(edellinenKortti.annaVari())) {
pelaajallaSopivanVarinenKortti = true;
}
}
if (pelaajallaSopivanVarinenKortti) {
return false;
}
}
}
/*
* Jokeri Kortin lynyt pelaaja saa valita seuraavaksi pelattavan vrin.
* Kortin saa lyd milloin tahansa paitsi silloin, kun sen lyj joutuu juuri
* ottamaan vastaan Nosta kaksi -korttia tai Nosta 4-jokeri -korttia.
*/
if (kortti instanceof Jokerikortti) {
String[] varit = {"sininen", "punainen", "keltainen", "vihre"};
int varinNumero = this.random.nextInt(4);
String vari = varit[varinNumero];
this.vari = vari;
this.paivitaVuoronumero();
kelvollinenKortti = true;
System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti);
}
/*
* Nosta 4 -jokeri Kortin lyneest pelaajasta seuraava menett vuoronsa
* ja nostaa pakasta nelj korttia. Lisksi kortin lynyt pelaaja saa valita
* seuraavaksi pelattavan vrin. Pelaaja ei saa kuitenaan lyd nosta 4-jokeri
* korttia silloin, kun hnell on kdessn mys samanvrinen kortti kuin
* poistopakan pllimminen kortti on. Muulloin kortin voi lyd koska vain.
*/
else if (kortti instanceof Nosta4Jokerikortti) {
boolean pelaajallaSopivanVarinenKortti = false;
for (Kortti k : pelaaja.annaKortit()) {
if (k.annaVari() != null
&& k.annaVari().equals(edellinenKortti.annaVari())) {
pelaajallaSopivanVarinenKortti = true;
}
}
if (pelaajallaSopivanVarinenKortti) {
return false;
}
this.annaPelaaja(seuraavaksiVuorossa).nostaNeljaKorttia(this.nostopakka);
String[] varit = {"sininen", "punainen", "keltainen", "vihre"};
int varinNumero = this.random.nextInt(4);
String vari = varit[varinNumero];
this.vari = vari;
this.paivitaVuoronumero();
kelvollinenKortti = true;
System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti);
}
/*
* Nosta kaksi Kortin lyneen pelaajan jlkeen seuraavana vuorossa oleva
* menett vuoronsa ja joutuu nostamaan pakasta kaksi korttia kteen. Nosta
* kaksi -kortin saa lyd joko samanvrisen kortin tai mys erivrisen Nosta
* kaksi -kortin plle.
*/
else if (kortti instanceof NostaKaksikortti) {
if (edellinenKortti != null && !edellinenKortti.annaVari().equals(kortti.annaVari())
|| edellinenKortti instanceof NostaKaksikortti) {
return false;
}
this.annaPelaaja(seuraavaksiVuorossa).nostaKaksiKorttia(this.nostopakka);
this.paivitaVuoronumero();
kelvollinenKortti = true;
System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti);
}
/*
* Ohituskortti Kortin lyneest pelaajasta seuraava menett vuoronsa. Kortin
* saa lyd joko samanvrisen kortin tai erivrisen ohituskortin plle.
*/
else if (kortti instanceof Ohituskortti) {
if (edellinenKortti != null && !edellinenKortti.annaVari().equals(kortti.annaVari())
|| edellinenKortti instanceof Ohituskortti) {
return false;
}
this.paivitaVuoronumero();
kelvollinenKortti = true;
System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti);
}
/*
* Suunnanvaihtokortti Kortti vaihtaa pelaajien vuorojrjestyksen suunnan.
* Kortin saa lyd joko samanvrisen kortin tai erivrisen Suunnanvaihtokortin
* plle.
*/
else if (kortti instanceof Suunnanvaihtokortti) {
if (edellinenKortti != null && !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 (!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
return false;
}
}
if(!kortti.annaVari().equals(edellinenKortti.annaVari())) {
return false;
}
} else {
kelvollinenKortti = true;
System.out.println(pelaaja.annaNimi() + " pelasi kortin: " + kortti);
}
}
this.vari = null;
return kelvollinenKortti;
}
}
package main;
import ui.Tekstikayttoliittyma;
public class Uno {
public static void main(String[] args) {
Uno.pelaa();
}
public static void pelaa() {
Tekstikayttoliittyma tk = new Tekstikayttoliittyma();
tk.start();
}
}
package ui;
import java.util.List;
import java.util.Scanner;
import domain.kortit.Kortti;
import domain.korttipakat.Nostopakka;
import domain.korttipakat.Poistopakka;
import domain.pelaajat.Pelaaja;
import logiikka.Peli;
public class Tekstikayttoliittyma {
Scanner lukija;
public Tekstikayttoliittyma() {
lukija = new Scanner(System.in);
}
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.print("> ");
String input = this.lukija.next();
switch (input) {
case "lopeta":
return;
case "uusi":
this.uusiPeli();
break;
case "lataa":
// lataaPeli();
break;
case "ohjeet":
// naytaPeliohjeet();
break;
default:
this.uusiPeli();
}
}
public void uusiPeli() {
System.out.println("Pelaat Unoa kolmea tietokonepelaajaa vastaan.");
System.out.println();
Peli peli = new Peli();
Pelaaja pelaaja = peli.annaPelaaja(0);
Poistopakka poistopakka = peli.annaPoistopakka();
Nostopakka nostopakka = peli.annaNostopakka();
Kortti ensimmainenKortti = poistopakka.annaPaallimmainenKortti();
peli.pelaaKorttiTietokone(lukija, ensimmainenKortti, null, pelaaja);
boolean peliKesken = true;
while (peliKesken) {
Pelaaja peliVuorossa = peli.annaPelaaja(peli.annaSeuraavaksiVuorossa());
// System.out.println("Pelivuorossa on: " + peliVuorossa.annaNimi()
// + " (Pisteet: " + peliVuorossa.laskePisteet() + ")");
System.out.println();
//ihmispelaaja
if (peli.annaSeuraavaksiVuorossa() == 0) {
if (peli.annaVari() != null) {
System.out.println("Laitettava kortti, joka on vriltn "
+ peli.annaVari() );
} else {
System.out.print("Pakan plimminen kortti on: ");
System.out.println(poistopakka.annaPaallimmainenKortti());
}
peli.paivitaVuoronumero();
boolean korttiPelattu = false;
while (korttiPelattu == false) {
System.out.println("Sinulla on kdesssi kortit:");
pelaaja.tulostaKortit();
System.out.println("Kirjoita kortin numero pelataksesi kortin tai \"nosta\" nostaaksesi kortin.");
System.out.print("> ");
String input = this.lukija.next();
List<Kortti> kortit = pelaaja.annaKortit();
if (input.equals("nosta")) {
pelaaja.nostaKortti(nostopakka);
break;
}
int kortinNumero = Integer.valueOf(input);
Kortti k = kortit.get(kortinNumero);
Kortti edellinenKortti = poistopakka.annaPaallimmainenKortti();
korttiPelattu = peli.pelaaKortti(lukija, k, edellinenKortti, pelaaja);
if (korttiPelattu) {
poistopakka.lisaaKortti(k);
kortit.remove(kortinNumero);
}
}
} else { // tietokonepelaaja
peli.paivitaVuoronumero();
boolean kelvollinenKortti = false;
int kortinNumero = 0;
while (kelvollinenKortti == false) {
List<Kortti> kortit = peliVuorossa.annaKortit();
Kortti k = kortit.get(kortinNumero);
Kortti edellinenKortti = poistopakka.annaPaallimmainenKortti();
kelvollinenKortti = peli.pelaaKorttiTietokone(lukija, k, edellinenKortti, peliVuorossa);
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++;
}
} else {
poistopakka.lisaaKortti(k);
kortit.remove(kortinNumero);
}
}
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment