/**
 * Kartenfeld für magische Informatik
 * zur Behandlung aller Routinen für die Arbeit mit (Teil-)Kartensets
 * Implementierung als zwei-dimensionales Array
 * 
 * @author (Ulrich Kiesmüller) 
 * @version (1.4)
 */
 
public class Kartenfeld
{
    // Variablen
    private Karte[][] feld = new Karte [3][7];

    /**
     * Konstruktor
     */
    public Kartenfeld()
    {
        // Initialisierung
        for (int i = 0; i < 3; i++)
        { 
            for (int j = 0; j < 7; j++)
            {
                feld[i][j] = new Karte("","");
            }
        }
    }

    /**
     * Methoden zur Kartenfeldbehandlung
     * erst allgemeine, dann trickspezifische
     */
    public void fuellenPos(Karte k, int xpos, int ypos)
    {
        feld[xpos][ypos] = k;
    }
    
    public Karte gibPos(int xpos, int ypos)
    {
        return feld[xpos][ypos];
    }
    
    public Kartenstapel nimmSpalte(int x)
    {
        Kartenstapel hilfe = new Kartenstapel(7);
        for (int i = 0; i < 7 ; i++)
        {
            hilfe.setzeKarte(feld [x][i], i);
        }
        return hilfe;
    }
    
    public Karte[] verbindeSpalten(Karte[] sp1, Karte[] sp2, Karte[] sp3)
    {
        Karte[] hilfe = new Karte[21];
        for (int i = 0; i < 7 ; i++)
        {
            hilfe [i] = sp1[i];
        }
        for (int i = 7; i < 14 ; i++)
        {
            hilfe [i] = sp2[i-7];
        }
        for (int i = 14; i < 21 ; i++)
        {
            hilfe [i] = sp3[i-14];
        }
        return hilfe;
    }
    
    public Kartenfeld fuellen(Kartenstapel st)
    {
        Kartenfeld temp = new Kartenfeld();
        for (int j = 0 ; j < 7 ; j++)
        {
            for (int i = 0 ; i < 3 ; i++)
            {
                temp.fuellenPos(st.gibKarte(i+j*3), i, j);
            }
        }
        return temp;
    }

    public void ausgeben()
    {
        for (int j = 0; j < 7 ; j++)
        {
            for (int i = 0; i < 3 ; i++)
            {
                feld[i][j].zeigen();
                System.out.print("\t  ");
            }
            System.out.println();
        }
    }
}
