import java.io.*;
import Tools.IO.*;
/**
* Memoryspiel.
*/
public class Memory
{
// Attribute
Spieler[] spieler;
SpielFeld spiel;
public static void main( String[] args)
{
// Erzeugt ein Memoryspiel
Memory memory = new Memory();
// Einlesen der Spieleranzahl
int spielerAnzahl
= IOTools.readInteger( " n = Wie viel Spieler gibt es? ");
// Erzeugen der Spieler
memory.spieler = new Spieler[ spielerAnzahl];
for( int i = 0; i < memory.spieler.length; i++)
memory.spieler[ i] = new Spieler();
// Erzeugen des Spielfeldes
memory.spiel = new SpielFeld();
memory.spiel.brett
= new int[memory.spiel.hoehe][memory.spiel.breite];
// Spielfeld
// Anordnen der Kartenpaare auf dem Spielfeld
int karte = 1;
for( int i = 0; i < memory.spiel.hoehe; i++)
for( int j = 0; j < memory.spiel.breite; j++)
memory.spiel.brett[ i][ j] = ++karte / 2;
// Mischen der Karten
int m1, n1, m2, n2, dummy;
for( int i = 0; i < memory.spiel.mischTiefe; i++)
{ m1 = (int)(( memory.spiel.hoehe) * Math.random());
n1 = (int)(( memory.spiel.breite) * Math.random());
m2 = (int)(( memory.spiel.hoehe) * Math.random());
n2 = (int)(( memory.spiel.breite) * Math.random());
dummy = memory.spiel.brett[ m1][ n1];
memory.spiel.brett[ m1][ n1] = memory.spiel.brett[ m2][ n2];
memory.spiel.brett[ m2][ n2] = dummy;
}
// Spieler
// Einlesen der Spielerdaten
for( int s = 0; s < memory.spieler.length; s++)
{
System.out.println( "Spieler "+ (s + 1));
memory.spieler[ s].vorName = Tools.stringEingabe( "Wie ist Dein Vorname? ");
memory.spieler[ s].nachName = IOTools.readLine( "Wie ist Dein Nachname? ");
}
// Spiel
int s = 0;
while( memory.spiel.kartenPaare != 0)
{
System.out.println
( "Spieler "+ memory.spieler[ s].vorName +
", du bist dran! Nimm zwei Karten!");
do // Karte 1
{
m1 = IOTools.readInteger( "");
n1 = IOTools.readInteger( "");
} while( m1 < 0 || n1 < 0 ||
m1 >= memory.spiel.hoehe || n1 >= memory.spiel.breite ||
memory.spiel.brett[ m1][ n1] == 0);
// Zwischenstand Spielbrett
for( int i = 0; i < memory.spiel.hoehe; i++)
{
for( int j = 0; j < memory.spiel.breite; j++)
{
if( memory.spiel.brett[ i][ j] == 0)
System.out.print( " |");
else
if( i == m1 && j == n1)
{
if( memory.spiel.brett[ i][ j] < 10)
System.out.print( " ");
else
if( memory.spiel.brett[ i][ j] < 100)
System.out.print( " ");
else System.out.print( " ");
System.out.print
( " " + memory.spiel.brett[ i][ j] + " |");
}
else System.out.print( " X |");
}
System.out.println( "");
}
do // Karte 2
{
m2 = IOTools.readInteger( "");
n2 = IOTools.readInteger( "");
}
while( m1 == m2 && n1 == n2 ||
m2 < 0 || n2 < 0 ||
m2 >= memory.spiel.hoehe ||
n2 >= memory.spiel.breite ||
memory.spiel.brett[ m2][ n2] == 0);
// Zwischenstand Spielbrett
for( int i = 0; i < memory.spiel.hoehe; i++)
{
for( int j = 0; j < memory.spiel.breite; j++)
{
if( memory.spiel.brett[ i][ j] == 0)
System.out.print( " |");
else
if( i == m1 && j == n1)
{
if( memory.spiel.brett[ i][ j] < 10)
System.out.print( " ");
else
if( memory.spiel.brett[ i][ j] < 100)
System.out.print( " ");
else System.out.print( " ");
System.out.print
( " " + memory.spiel.brett[ i][ j] + " |");
}
else System.out.print( " X |");
}
System.out.println( "");
}
// Auswertung
if( memory.spiel.brett[ m1][ n1] == memory.spiel.brett[ m2][ n2])
{
System.out.println( "Richtig, das Paar gehoehrt dir!");
memory.spieler[ s].gewonnenePaare++;
memory.spiel.kartenPaare--;
memory.spiel.brett[ m1][ n1] = 0;
memory.spiel.brett[ m2][ n2] = 0;
}
else
{ // Spielerwechsel
System.out.println( "Falsch, jetzt ist der Naechste dran!");
s++; s %= memory.spieler.length;
}
}
// Endstand
System.out.println( "Liste unsortiert: ");
for( int i = 0; i < memory.spieler.length; i++)
System.out.println( "Spieler "+ (i + 1) + ": " +
memory.spieler[ i].vorName + " " +
memory.spieler[ i].nachName + ", gewonnen: " +
memory.spieler[ i].gewonnenePaare + " Paare.");
}
}