package de.nak;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
public class Einundzwanzig
{
private ArrayList<Karte> stapel = new ArrayList<Karte>();
public static Einundzwanzig einundzwanzig = new Einundzwanzig();
public Menschlicherspieler menschlicherspieler = new Menschlicherspieler();
public Computerspieler computerspieler = new Computerspieler();
[B] #######--> public List<int[]> spielstandArrayList = Arrays.asList(spielstand);<--######[/B]
public static int[] spielstand =
{ 0, 0 };
public static int[] spielstandsicherung =
{ 0, 0 };
public static void main(String[] args)
{
// einundzwanzig.willkommen();
einundzwanzig.start();
}
public void wilkommen()
{
// willkommenstext
}
public void start()
{
einundzwanzig.stapelErstellen();
einundzwanzig.spielStarten();
einundzwanzig.spielfeldAusgabe();
einundzwanzig.spielrunde();
einundzwanzig.hauptmenuAuswertung(hauptMenu());
}
public void stapelErstellen()
{
stapelEinfuegen();
stapelMischen();
}
public void stapelEinfuegen()
{
String[] farbe =
{ "Pik", "Kreuz", "Karo", "Herz" };
String[] name =
{ "As", "Bube", "Dame", "Koenig", "7", "8", "9", "10" };
int[] werte =
{ 1, 2, 3, 4, 7, 8, 9, 10 };
for (int i = 0; i <= 3; i++)
{
for (int j = 0; j <= 7; j++)
{
stapel.add(new Karte(name[j], farbe[i], werte[j]));
}
}
}
public void stapelMischen()
{
Karte aktuelleKarte;
int rand;
Random r = new Random();
for (int i = 0; i < stapel.size(); i++)
{
rand = r.nextInt(stapel.size());
aktuelleKarte = stapel.get(i);
stapel.set(i, stapel.get(rand));
stapel.set(rand, aktuelleKarte);
}
}
public void spielStarten()
{
gebeKarteMenschlicherspieler();
gebeKarteMenschlicherspieler();
gebeKarteComputerspieler();
gebeKarteComputerspieler();
}
public void gebeKarteMenschlicherspieler()
{
menschlicherspieler.erhalteKarte(stapel.get(0));
stapel.remove(0);
}
public void gebeKarteComputerspieler()
{
computerspieler.erhalteKarte(stapel.get(0));
stapel.remove(0);
}
public void spielrunde()
{
while (Computerspieler.getComputerHandWert() <= 21
&& Menschlicherspieler.getMenschHandWert() <= 21)
{
if (Computerspieler.getComputerHandWert() < 21
&& Menschlicherspieler.getMenschHandWert() < 21)
{
dialogSpieler();
}
if (Computerspieler.getComputerHandWert() < 21
&& Menschlicherspieler.getMenschHandWert() < 21)
{
dialogComputer();
}
if (Computerspieler.getComputerHandWert() == 21)
{
zwischenstandComputerGewonnen();
hauptMenu();
}
if (Computerspieler.getComputerHandWert() > 21)
{
zwischenstandSpielerGewonnen();
hauptMenu();
}
if (Menschlicherspieler.getMenschHandWert() > 21)
{
zwischenstandComputerGewonnen();
hauptMenu();
}
if (Menschlicherspieler.getMenschHandWert() == Computerspieler
.getComputerHandWert())
{
System.out.println("Unentschieden!");// Untentschieden
System.out.println("Spielstand: Du: " + spielstand[0]
+ " Computer: " + spielstand[1]);
hauptMenu();
// hauptmenu ausgliedern -> break;
}
}
}
private void zwischenstandSpielerGewonnen()
{
System.out.println("Du hast gewonnen");
spielstand[0] = spielstand[0] + 1;
System.out.println("Spielstand: Du: " + spielstand[0] + " Computer: "
+ spielstand[1]);
}
private void zwischenstandComputerGewonnen()
{
System.out.println("Computer hat gewonnen");
spielstand[1] = spielstand[1] + 1;
System.out.println("Spielstand: Du: " + spielstand[0] + " Computer: "
+ spielstand[1]);
}
public void spielfeldAusgabe()
{
for (int i = 0; i < computerspieler.getHandComputer().size(); i++)
{
System.out.println(computerspieler.getHandComputer().get(i)
.toString());
}
System.out.println("*Computer hat Gesamtpunktzahl: "
+ Computerspieler.getComputerHandWert() + "*");
for (int i = 0; i < menschlicherspieler.getHandSpieler().size(); i++)
{
System.out.println(menschlicherspieler.getHandSpieler().get(i)
.toString());
}
System.out.println("*Spieler hat Gesamtpunktzahl: "
+ Menschlicherspieler.getMenschHandWert() + "*");
}
public void dialogSpieler()
{
System.out.println("");
System.out.println("~Spieler ist dran~");
System.out.println("Weitere Karte [(1) ja (2) nein]?");
int eingabe = Eingabe.leseInt();
int userIn = 1;
if (eingabe == 1 && Menschlicherspieler.getMenschHandWert() < 21)
{
userIn = +2;
gebeKarteMenschlicherspieler();
System.out.print(menschlicherspieler.getHandSpieler().get(userIn)
.toString());
System.out.println("");
System.out.println("*Spieler hat Gesamtpunktzahl: "
+ Menschlicherspieler.getMenschHandWert() + "*");
}
}
public void dialogComputer()
{
System.out.println("Computer ist dran");
int comIn = 2;
computerAnfrageWeitereKarte();
if (computerAnfrageWeitereKarte() == 2)
{
System.out.println("com größer -> Computer passt");
} else
{
gebeKarteComputerspieler();
comIn = +2;
System.out.println("com kleiner -> Computer zieht eine Karte");
System.out.print(computerspieler.getHandComputer().get(comIn)
.toString());
System.out.println("*Computer hat Gesamtpunktzahl: "
+ Computerspieler.getComputerHandWert() + "*");
}
}
public int computerAnfrageWeitereKarte()
{
if (Computerspieler.getComputerHandWert() < Menschlicherspieler
.getMenschHandWert())
{
int i = 1;
return i;
} else if (Computerspieler.getComputerHandWert() > Menschlicherspieler
.getMenschHandWert()
&& Menschlicherspieler.getMenschHandWert() != 21)
{
int i = 2;
return i;
} else if (Computerspieler.getComputerHandWert() == Menschlicherspieler
.getMenschHandWert()
&& Computerspieler.getComputerHandWert() < 20)
{
System.out.println("Computer behält Karten");
int i = 3;
return i;
} else
{
int i = 1;
return i;
}
}
public int hauptMenu()
{
System.out.println("\n--------------------" + "\n Wähle weise!"
+ "\n (1) weiteres Spiel" + "\n (2) Spiel beenden"
+ "\n (3) Spielstand speichern" + "\n (4) Spielstand laden");
return Eingabe.leseInt();
}
public void spielSpeichern()
{
spielstandsicherung[0] = spielstand[0];
spielstandsicherung[1] = spielstand[1];
System.out.println("Spielstand wurde gespeichert!");
}
public void spielLaden()
{
spielstand[0] = spielstandsicherung[0];
spielstand[1] = spielstandsicherung[1];
System.out.println("Spielstand geladen" + "\n Du: " + spielstand[0]
+ " - Computer: " + spielstand[1]);
}
public void hauptmenuAuswertung(int x)
{
if (x != 1 && x != 2 && x != 3 && x != 4)
{
System.out.println("Bitte gültigen Wert (1,2,3 oder 4) eingeben!");
hauptmenuAuswertung(hauptMenu());
}
switch (x)
{
case 1:
System.out.println("Neues Spiel wird gestartet");
einundzwanzig.start();
break;
case 2:
System.out.println("Das Spiel wurde beendet");
System.exit(1);
break;
case 3:
spielstandToTxt();
hauptmenuAuswertung(hauptMenu());
break;
case 4:
spielLaden();
hauptmenuAuswertung(hauptMenu());
break;
}
}
[B] #######-> private void spielstandToTxt()
{
listInDatei(spielstandArrayList, new File("C:\\test.txt"));
System.out.println("fertig");
}
private void listInDatei(List<int[]> spielstandArrayList2, File datei)
{
try
{
PrintWriter printWriter = new PrintWriter(new FileWriter(datei));
Iterator<int[]> iter = spielstandArrayList2.iterator();
while (iter.hasNext())
{
Object o = iter.next();
printWriter.println(o);
}
printWriter.close();
} catch (IOException e)
{
e.printStackTrace();
}<-######## [/B]
}
}