/**
 * Vorführung des Tricks "21 Karten"
 * 
 * @author (Ulrich Kiesmüller) 
 * @version (1.6)
 */

import java.io.*;

public class Testklasse
{
    private Kartenstapel stapel;
    private Kartenfeld feldGesamt;

    public Testklasse()
    {
        stapel = new Kartenstapel(21);
        feldGesamt = new Kartenfeld();
    }

    /**
     * Mainmethode 
     */
    public void main ()
    {
        // Bilden eines Feldes aus den notwendigen 21 Karten
        stapel.setzeKarte(new Karte("Herz", "Bube"), 0);
        stapel.setzeKarte(new Karte("Pik", "As  "), 1);
        stapel.setzeKarte(new Karte("Kreuz", "Sieben"), 2);
        stapel.setzeKarte(new Karte("Pik", "Sechs"), 3);
        stapel.setzeKarte(new Karte("Karo", "As  "), 4);
        stapel.setzeKarte(new Karte("Kreuz", "Sechs"), 5);
        stapel.setzeKarte(new Karte("Karo", "Zwei"), 6);
        stapel.setzeKarte(new Karte("Herz", "Koenig"), 7);
        stapel.setzeKarte(new Karte("Karo", "Sechs"), 8);
        stapel.setzeKarte(new Karte("Herz", "Sechs"), 9);
        stapel.setzeKarte(new Karte("Pik", "Koenig"), 10);
        stapel.setzeKarte(new Karte("Kreuz", "Vier"), 11);
        stapel.setzeKarte(new Karte("Pik", "Sieben"), 12);
        stapel.setzeKarte(new Karte("Pik", "Sechs"), 13);
        stapel.setzeKarte(new Karte("Herz", "Fuenf"), 14);
        stapel.setzeKarte(new Karte("Kreuz", "Zwei"), 15);
        stapel.setzeKarte(new Karte("Karo", "Vier"), 16);
        stapel.setzeKarte(new Karte("Herz", "Drei"), 17);
        stapel.setzeKarte(new Karte("Karo", "Bube"), 18);
        stapel.setzeKarte(new Karte("Kreuz", "Drei"), 19);
        stapel.setzeKarte(new Karte("Pik", "Dame"), 20);
        feldGesamt = feldGesamt.fuellen(stapel);
        //Ausgeben des gefüllten Feldes
        feldGesamt.ausgeben();
        System.out.println();
        //Auswählen der Spalte mit der gemerkten Karte
        int spos;
        for (int k = 1; k <= 3; k++)
        {
            spos = 0;
            while (spos == 0)
            {
                System.out.print("In welcher Spalte - 1 bis 3 - befindet sich die von Ihnen gemerkte Karte? ");
                spos = eingabe();
                if (spos < 1 || spos > 3) spos = 0;
            }
            System.out.println();
            feldGesamt = feldGesamt.fuellen(feldGesamt.feld2stapel(spos));
            feldGesamt.ausgeben();
            System.out.println();
        }
        System.out.print("Sie hatten sich die Karte '");
        feldGesamt.gibPos(1,3).zeigen(); 
        System.out.println("' gemerkt, die genau in der Mitte des Kartenfeldes liegt.");
    }
    
    static int eingabe () 
    {        
        String zeile= "";
        int wert;   
        BufferedReader in= new BufferedReader(new InputStreamReader(System.in) );
        try {
            zeile= in.readLine();
            } catch (IOException ioe) {}
      wert= Integer.parseInt(zeile);
      return wert;
    }
}

