You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.6 KiB
81 lines
1.6 KiB
package solitaer;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import javax.swing.JPanel;
|
|
|
|
public abstract class BaseStack extends JPanel {
|
|
public final int IMAGE_WIDTH = 72;
|
|
public final int IMAGE_HIGHT = 96;
|
|
public final int STACK_HIGHT = 450;
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
private ArrayList<Card> stack = new ArrayList<Card>();
|
|
private final int OFFSET_VALUE = 20;
|
|
private int offset;
|
|
private int addOffset;
|
|
|
|
public BaseStack(boolean _offset) {
|
|
// TODO Auto-generated constructor stub
|
|
if(_offset) {
|
|
addOffset = OFFSET_VALUE;
|
|
}else {
|
|
addOffset = 0;
|
|
}
|
|
offset = 0;
|
|
}
|
|
|
|
public void clearStack() {
|
|
stack.clear();
|
|
offset = 0;
|
|
RenderStackNew();
|
|
}
|
|
|
|
public boolean stackIsEmpty() {
|
|
return stack.isEmpty();
|
|
}
|
|
|
|
public Card peekLastCard() {
|
|
if(!stackIsEmpty()) {
|
|
return stack.get(stack.size()-1);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public int indexOfCard(Card _card) {
|
|
return stack.indexOf(_card);
|
|
}
|
|
|
|
public int stackSize() {
|
|
return stack.size();
|
|
}
|
|
|
|
public void addCard(Card _card) {
|
|
_card.setLocation(0, offset);
|
|
stack.add(_card);
|
|
RenderStackNew();
|
|
offset += addOffset;
|
|
}
|
|
|
|
public Card removeLastCard() {
|
|
if (stack.size() != 0) {
|
|
Card LastCard = stack.remove(stack.size() - 1);
|
|
offset -= addOffset;
|
|
RenderStackNew();
|
|
return LastCard;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private void RenderStackNew() {
|
|
this.removeAll();
|
|
// Alles neu Zeichnen
|
|
for (int i = stack.size() - 1; i >= 0; i--) {
|
|
this.add(stack.get(i));
|
|
}
|
|
this.repaint();
|
|
}
|
|
|
|
protected abstract boolean cardCheck(Card _topStack, Card _playerCard);
|
|
}
|