package solitaer; import java.awt.Color; import java.awt.Graphics; import java.util.ArrayList; import javax.swing.JPanel; public class StartStack extends JPanel { private static final long serialVersionUID = 1L; private ArrayList stack = new ArrayList(); private final int OFFSET_VALUE = 20; private final int IMAGE_WIDTH = 72; private final int IMAGE_HIGHT = 450; private int offset; public StartStack(int _x, int _y) { super.setLocation(_x, _y); super.setSize(IMAGE_WIDTH, IMAGE_HIGHT); super.setOpaque(false); super.setLayout(null); offset = 0; } public boolean cardCheck(Card _topStack, Card _playerCard) { if(_topStack == null && _playerCard == null) { return false; } if (_topStack == null) { // Nur der König kann auf einen leeren Stapel gelegt werden return _playerCard.getNr() == 13; }else { return (// Nummer nur aufsteigend _topStack.getNr() == _playerCard.getNr() + 1) && // rot auf Schwarz ( ((_topStack.getSymbol() == Symbol.Herz || _topStack.getSymbol() == Symbol.Karo) && (_playerCard.getSymbol() == Symbol.Pik || _playerCard.getSymbol() == Symbol.Kreuz)) || // schwarz auf rot ((_topStack.getSymbol() == Symbol.Pik || _topStack.getSymbol() == Symbol.Kreuz) && (_playerCard.getSymbol() == Symbol.Herz || _playerCard.getSymbol() == Symbol.Karo)) ); } } public void addCard(Card _card) { _card.setLocation(0, offset); stack.add(_card); addtoPanel(); offset += OFFSET_VALUE; } private void addtoPanel() { this.removeAll(); //Alles neu Zeichnen for (int i = stack.size() - 1; i >= 0; i--) { this.add(stack.get(i)); } } @Override protected void paintComponent(Graphics g) { // TODO Auto-generated method stub super.paintComponent(g); if (stack.size() == 0) { g.setColor(Color.gray); g.fillRect(0, 0, this.getWidth(), 96); g.setColor(Color.black); g.drawRect(0, 0, this.getWidth()-1, 96-1); } } }