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.

136 lines
2.6 KiB

2 years ago
2 years ago
2 years ago
  1. package solitaer;
  2. import java.awt.Color;
  3. import java.awt.Graphics;
  4. import java.util.Objects;
  5. import javax.swing.JPanel;
  6. enum Symbol {
  7. Herz, Karo, Kreuz, Pik
  8. }
  9. public class Card extends JPanel {
  10. private static final long serialVersionUID = 1L;
  11. private int nr;
  12. private Symbol symbol;
  13. private boolean faceUp;
  14. private final int IMAGE_WIDTH = 72;
  15. private final int IMAGE_HIGHT = 96;
  16. public Card(int _nr, Symbol _symbol, boolean _faceUp) {
  17. this.setSize(IMAGE_WIDTH,IMAGE_HIGHT);
  18. this.nr = _nr;
  19. this.symbol = _symbol;
  20. this.faceUp = _faceUp;
  21. }
  22. public boolean isFaceUp() {
  23. return faceUp;
  24. }
  25. public void setFaceUp(boolean _faceUp) {
  26. this.faceUp = _faceUp;
  27. }
  28. public int getNr() {
  29. return nr;
  30. }
  31. public boolean isred() {
  32. return this.symbol == Symbol.Herz
  33. || this.symbol == Symbol.Karo;
  34. }
  35. public boolean isblack() {
  36. return this.symbol == Symbol.Kreuz
  37. || this.symbol == Symbol.Pik;
  38. }
  39. private String getNrText() {
  40. if (this.nr < 10) {
  41. return "0" + this.nr;
  42. } else {
  43. return "" + this.nr;
  44. }
  45. }
  46. public Symbol getSymbol() {
  47. return symbol;
  48. }
  49. private String getSymboleText() {
  50. switch (this.symbol) {
  51. case Herz:
  52. return "Herz";
  53. case Karo:
  54. return "Karo";
  55. case Pik:
  56. return "Pik";
  57. case Kreuz:
  58. return "Kreuz";
  59. default:
  60. return "";
  61. }
  62. }
  63. @Override
  64. public String toString() {
  65. //return "Card [nr=" + nr + ", symbol=" + symbol + ", faceUp=" + faceUp + "]";
  66. return "Card NR="+nr+" | Symbole="+symbol+" | Face="+faceUp;
  67. }
  68. @Override
  69. public int hashCode() {
  70. return Objects.hash(faceUp, nr, symbol);
  71. }
  72. @Override
  73. public boolean equals(Object obj) {
  74. if (this == obj)
  75. return true;
  76. if (obj == null)
  77. return false;
  78. if (getClass() != obj.getClass())
  79. return false;
  80. Card other = (Card) obj;
  81. return faceUp == other.faceUp && nr == other.nr && symbol == other.symbol;
  82. }
  83. @Override
  84. protected void paintComponent(Graphics g) {
  85. // TODO Auto-generated method stub
  86. super.paintComponent(g);
  87. paintCard(g);
  88. }
  89. private void paintCard(Graphics g) {
  90. if (faceUp) {
  91. g.setColor(Color.white);
  92. g.fillRect(0, 0, this.getWidth(), this.getHeight());
  93. g.setColor(Color.black);
  94. g.drawRect(0, 0, this.getWidth() - 1, this.getHeight() - 1);
  95. if (this.isred())
  96. g.setColor(Color.red);
  97. else
  98. g.setColor(Color.black);
  99. String text = "" + this.getNrText() + " " + this.getSymboleText();
  100. g.drawString(text, 3, 15);
  101. } else {
  102. g.setColor(Color.blue);
  103. g.fillRect(0, 0, this.getWidth(), this.getHeight());
  104. g.setColor(Color.black);
  105. g.drawRect(0, 0, this.getWidth() - 1, this.getHeight() - 1);
  106. }
  107. }
  108. }