Nur die besten Spiele ;3
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.

140 lines
3.1 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. package solitaer;
  2. import java.awt.Color;
  3. import java.awt.Graphics;
  4. import javax.swing.JLabel;
  5. import javax.swing.JPanel;
  6. public class SolitaerGamePanel extends JPanel {
  7. private static final long serialVersionUID = 1L;
  8. private final int OFFSET_STACKS_X = 5;
  9. private final int OFFSET_STACKS_Y = 15;
  10. public final int IMAGE_WIDTH = 72;
  11. public final int IMAGE_HIGHT = 96;
  12. public final int STARTSTACK_SIZE = 7;
  13. public final int ABLAGESTACK_SIZE = 4;
  14. private Color backgroundColor = new Color(0, 135, 62);
  15. private CardDeck deck;
  16. private MyMouseListener mouseL;
  17. private SaveStack save;
  18. private StartStack[] start = new StartStack[7];
  19. private AblageStack[] ablage = new AblageStack[4];
  20. private WasteStack waste;
  21. private GeberStack geber;
  22. public SolitaerGamePanel() {
  23. setLayout(null);
  24. int Offset_x_Save = setLayoutX(STARTSTACK_SIZE + 1);
  25. int Offset_y_Save = setLayouty(1);
  26. JLabel label = new JLabel();
  27. label.setText("selected Cards");
  28. label.setBounds(Offset_x_Save, Offset_y_Save - 25, 200, 25);
  29. this.add(label);
  30. save = new SaveStack(Offset_x_Save, Offset_y_Save);
  31. mouseL = new MyMouseListener(save);
  32. this.addMouseListener(mouseL);
  33. for (int i = 0; i < STARTSTACK_SIZE; i++) {
  34. int y = setLayouty(1);
  35. start[i] = new StartStack(setLayoutX(i), y);
  36. }
  37. for (int i = 0; i < ABLAGESTACK_SIZE; i++) {
  38. int x = setLayoutX(((STARTSTACK_SIZE - ABLAGESTACK_SIZE) + i));
  39. int y = setLayouty(0);
  40. switch (i) {
  41. case 0:
  42. ablage[i] = new AblageStack(x, y, Symbol.Herz);
  43. break;
  44. case 1:
  45. ablage[i] = new AblageStack(x, y, Symbol.Kreuz);
  46. break;
  47. case 2:
  48. ablage[i] = new AblageStack(x, y, Symbol.Karo);
  49. break;
  50. case 3:
  51. ablage[i] = new AblageStack(x, y, Symbol.Pik);
  52. break;
  53. default:
  54. break;
  55. }
  56. }
  57. waste = new WasteStack(setLayoutX(1), OFFSET_STACKS_Y);
  58. geber = new GeberStack(setLayoutX(0), OFFSET_STACKS_Y, waste);
  59. restartGame();
  60. }
  61. private int setLayoutX(int _spalte) {
  62. return (((IMAGE_WIDTH + OFFSET_STACKS_X) * _spalte) + OFFSET_STACKS_X);
  63. }
  64. private int setLayouty(int _row) {
  65. if (_row == 1)
  66. return IMAGE_HIGHT + (OFFSET_STACKS_Y * 3);
  67. else
  68. return OFFSET_STACKS_Y;
  69. }
  70. public void restartGame() {
  71. deck = new CardDeck();
  72. deck.shuffelDeck();
  73. for (int i = 0; i < STARTSTACK_SIZE; i++) {
  74. start[i].clearStack();
  75. int tmp = i;
  76. while (tmp != 0) {
  77. start[i].addCard(deck.getDeck().remove(0));
  78. tmp -= 1;
  79. }
  80. Card card = deck.getDeck().remove(0);
  81. card.setFaceUp(true);
  82. start[i].addCard(card);
  83. this.add(start[i]);
  84. }
  85. for (int i = 0; i < ABLAGESTACK_SIZE; i++) {
  86. ablage[i].clearStack();
  87. this.add(ablage[i]);
  88. }
  89. geber.clearStack();
  90. waste.clearStack();
  91. while (deck.getDeck().size() != 1) {
  92. geber.addCard(deck.getDeck().remove(0));
  93. }
  94. Card card = deck.getDeck().remove(0);
  95. card.setFaceUp(true);
  96. waste.addCard(card);
  97. this.add(waste);
  98. this.add(geber);
  99. save.clearStack();
  100. this.add(save);
  101. }
  102. @Override
  103. protected void paintComponent(Graphics g) {
  104. // TODO Auto-generated method stub
  105. super.paintComponent(g);
  106. g.setColor(backgroundColor);
  107. g.fillRect(0, 0, this.getWidth(), this.getHeight());
  108. }
  109. }