mein altes Spiel

master
3009594 2024-08-27 21:32:30 +02:00
parent 974d33fe92
commit f3800727e0
3 changed files with 202 additions and 51 deletions

View File

@ -27,11 +27,6 @@ public class JTest {
System.out.println("Omar" + omar.getKarten());
}
@Test
void testfigurenkarten() {
c1.setfigurenkarten();
System.out.println("Obai" + obai.getFigurenkarten());
System.out.println("Omar" + omar.getFigurenkarten());
}
}

View File

@ -1,7 +1,10 @@
package Übungen.MeinAltesSpiel;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Collections;
import java.util.ArrayList;
@ -11,12 +14,12 @@ public class Modell {
private String name;
private ArrayList<Integer> karten;
private ArrayList<String> figurenkarten;
public Modell(String name) {
this.name = name;
karten = new ArrayList<>();
figurenkarten = new ArrayList<>();
figurenkarten = new ArrayList<>();
}
public String getName() {
@ -34,7 +37,7 @@ public class Modell {
public void setKarten(ArrayList<Integer> karten) {
this.karten = karten;
}
public ArrayList<String> getFigurenkarten() {
return figurenkarten;
}
@ -49,95 +52,226 @@ public class Modell {
}
}
class Controller{
class Controller {
private Modell spieler1;
private Modell spieler2;
private View view;
private ArrayList<Integer> karten;
private ArrayList<String> figurenkarten;
private ArrayList<Integer> spielfeld;
public Controller(Modell spieler1, Modell spieler2,View view) {
private ArrayList<Integer> aktuelleZweiKarten;
public Controller(Modell spieler1, Modell spieler2, View view) {
this.spieler1 = spieler1;
this.spieler2 = spieler2;
karten =new ArrayList<>();
figurenkarten =new ArrayList<>();
karten = new ArrayList<>();
figurenkarten = new ArrayList<>();
spielfeld = new ArrayList<>();
this.view = view;
aktuelleZweiKarten = new ArrayList<>(Collections.nCopies(2, 0));
}
public void setfigurenkarten() {
for (int i = 1; i <= 4; i++) {
figurenkarten.add("Jack");
figurenkarten.add("Dame");
figurenkarten.add("König");
}
// Erste 18 Karten für Spieler 1
ArrayList<String> kartenFuerSpieler1 = new ArrayList<>(figurenkarten.subList(0, figurenkarten.size() / 2));
// Erste 6 figurenkarten für Spieler 1
ArrayList<String> kartenFuerSpieler1 = new ArrayList<>(figurenkarten.subList(0, figurenkarten.size() / 2));
spieler1.setFigurenkarten(kartenFuerSpieler1);
// Letzte 18 Karten für Spieler 2
ArrayList<String> kartenFuerSpieler2 = new ArrayList<>(figurenkarten.subList(figurenkarten.size() / 2, figurenkarten.size()));
spieler2.setFigurenkarten(kartenFuerSpieler2);
// Letzte 6 figurenkarten für Spieler 2
ArrayList<String> kartenFuerSpieler2 = new ArrayList<>(
figurenkarten.subList(figurenkarten.size() / 2, figurenkarten.size()));
spieler2.setFigurenkarten(kartenFuerSpieler2);
}
public ArrayList<String> getfigurenkarten(){
public ArrayList<String> getfigurenkarten() {
return figurenkarten;
}
public void setKarten() {
for (int i = 1; i <= 4;i++)
for (int i = 1; i <= 4; i++)
for (int j = 1; j <= 9; j++)
karten.add(j);
// Karten mischen
Collections.shuffle(karten);
// Erste 18 Karten für Spieler 1
ArrayList<Integer> kartenFuerSpieler1 = new ArrayList<>(karten.subList(0, 18));
// Erste 18 Karten für Spieler 1
ArrayList<Integer> kartenFuerSpieler1 = new ArrayList<>(karten.subList(0, 18));
spieler1.setKarten(kartenFuerSpieler1);
// Letzte 18 Karten für Spieler 2
ArrayList<Integer> kartenFuerSpieler2 = new ArrayList<>(karten.subList(18, 36));
spieler2.setKarten(kartenFuerSpieler2);
// Letzte 18 Karten für Spieler 2
ArrayList<Integer> kartenFuerSpieler2 = new ArrayList<>(karten.subList(18, 36));
spieler2.setKarten(kartenFuerSpieler2);
}
public ArrayList<Integer> getAlleKarten(){
public ArrayList<Integer> getSpielfeld() {
return spielfeld;
}
public void setSpielfeld(ArrayList<Integer> spielfeld) {
this.spielfeld = spielfeld;
}
public ArrayList<Integer> getAlleKarten() {
return karten;
}
private String auswahl;
public void werfeEineKarte(Modell spieler) {
if (spieler.getKarten().size() > 0) {
spielfeld.add(spieler.getKarten().get(0));
spieler.getKarten().remove(0);
}else {
aktuelleZweiKarten.set(0,spieler1.getKarten().get(0));
aktuelleZweiKarten.set(0,spieler1.getKarten().get(1));
}
else {
Modell gegner = (spieler == spieler1) ? spieler2 : spieler1;
view.zeigeNachricht("Du hast keine Karten mehr!");
String auswahl = view.frageUser("möchtest Du Karten kaufen? Ja/Nein");
auswahl = view.frageUser("möchtest Du Karten kaufen? Ja/Nein");
if (auswahl.equalsIgnoreCase("ja")) {
view.zeigeNachricht("Deine Figurenkarten: " + spieler.getKarten());
while (true) {
view.frageUser("Aus dem Spielfield oder vom deinem Entgegener?\n" + "Speielfiel = S ,Entgegener = EG ");
if (auswahl.equalsIgnoreCase("S")) {
if (getSpielfeld().size() > 0) {
kaufeKartenvomSpielfield(spieler);
break;
}
else {
view.zeigeNachricht("Das Spielfield hat " + getSpielfeld() + " Karten");
kaufeKartenvomgegenr(spieler,gegner);
break;
}
}
else if (auswahl.equalsIgnoreCase("EG")) {
kaufeKartenvomgegenr(spieler,gegner);
break;
}
else {
view.zeigeErorr("Falsche Eingabe!");
continue;
}
}
}
}
}
public void kaufeKarten(ArrayList<String> figurenkarten) {
private ArrayList<Integer> setNeueKarten;
private void kaufeKartenvomSpielfield(Modell käufer) {
setNeueKarten = new ArrayList<>();
while (true) {
view.zeigeNachricht("Deine Figurenkarten: " + käufer.getFigurenkarten());
auswahl = view.frageUser(
"Wie viel karten möchtest du kaufen? \n" + "Jack = 10 Karten, Dame = 15 karten und König = 25 Karten");
int anzahlKarten = 0;
if (auswahl.equalsIgnoreCase("Jack"))
anzahlKarten = 10;
else if (auswahl.equalsIgnoreCase("Dame"))
anzahlKarten = 15;
else if (auswahl.equalsIgnoreCase("König"))
anzahlKarten = 25;
else {
view.zeigeErorr("Falsche Eingabe!");
continue;
}
if (käufer.getFigurenkarten().contains(auswahl)) {
for (int i = 1; i < anzahlKarten && i < getSpielfeld().size(); i++) {
setNeueKarten.add(getSpielfeld().get(i));
getSpielfeld().remove(i);
}
Collections.shuffle(setNeueKarten);
käufer.setKarten(setNeueKarten);
break;
}else {
view.zeigeErorr("Diese Figurenkarte hast du nicht!");
continue;
}
}
}
private void kaufeKartenvomgegenr(Modell käufer, Modell gegner) {
setNeueKarten = new ArrayList<>();
while (true) {
view.zeigeNachricht("Deine Figurenkarten: " + käufer.getFigurenkarten());
auswahl = view.frageUser(
"Wie viel karten möchtest du kaufen? \n" + "Jack = 10 Karten, Dame = 15 karten und König = 25 Karten");
int anzahlKarten = 0;
if (auswahl.equalsIgnoreCase("Jack"))
anzahlKarten = 10;
else if (auswahl.equalsIgnoreCase("Dame"))
anzahlKarten = 15;
else if (auswahl.equalsIgnoreCase("König"))
anzahlKarten = 25;
else {
view.zeigeErorr("Falsche Eingabe!");
continue;
}
if (käufer.getFigurenkarten().contains(auswahl)) {
for (int i = 1; i < anzahlKarten && i < gegner.getKarten().size(); i++) {
setNeueKarten.add(gegner.getKarten().get(i));
gegner.getKarten().remove(i);
}
Collections.shuffle(setNeueKarten);
käufer.setKarten(setNeueKarten);
break;
}else {
view.zeigeErorr("Diese Figurenkarte hast du nicht!");
continue;
}
}
}
public boolean checkGewinner(Modell verlieher) {
Modell gewinner = (verlieher == spieler1)? spieler2:spieler1;
if (verlieher.getKarten().size() == 0 &&verlieher.getFigurenkarten().size() == 0 ) {
String gruen = "\u001B[32m";
view.gewinner(gruen + gewinner.getName() + " hat gewonnen" );
}
return true;
}
}
class View{
private Scanner scanner = new Scanner(System.in);
class View {
private Scanner scanner = new Scanner(System.in);
public void zeigeNachricht(String nachricht) {
System.out.println(nachricht);
}
public void zeigeErorr(String nachricht) {
System.err.println(nachricht);
}
public String frageUser(String nachricht) {
System.out.println(nachricht);
return scanner.nextLine();
}
}
public void gewinner(String nachricht) {
System.out.println(nachricht);
}
public void zeigeAktuelleZweikarten(String nachricht) {
System.out.println(nachricht);
}
}

View File

@ -0,0 +1,22 @@
package Übungen.MeinAltesSpiel;
public class Test {
public static void main(String[] args) throws InterruptedException {
Modell obai = new Modell("Obai");
Modell omar = new Modell("omar");
View view = new View();
Controller c1 = new Controller(obai, omar, view);
c1.setKarten();
c1.setfigurenkarten();
while(true) {
c1.werfeEineKarte(obai);
c1.werfeEineKarte(omar);
Thread.sleep(1000);
}
}
}