-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRectPanel.java
More file actions
121 lines (117 loc) · 5.24 KB
/
Copy pathRectPanel.java
File metadata and controls
121 lines (117 loc) · 5.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/**
* This class is an object which creates a visual of a board and adds itself to board's JFrame
*/
import java.awt.Color;
import java.awt.*;
import javax.swing.*;
public class RectPanel extends JPanel {
int c, r;
Board gameBoard;
boolean notLost = true;
/**
* creates it with the number of collums (c) and the number of rows (r)
*/
public RectPanel(int c, int r, Board gameBoard) {
this.gameBoard = gameBoard;
this.c = c;
this.r = r;
}
/**
* Draws EVERYTHING
*/
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (int cR = 0; cR < r; cR++) {
for (int cC = 0; cC < c; cC++) {
g.setColor(Color.GRAY);
g.fillRect(cC * 21 + 1, cR * 21 + 1, 20, 20);
}
}
for (int cR = 0; cR < r; cR++) {
for (int cC = 0; cC < c; cC++) {
g.setColor(Color.LIGHT_GRAY);
if (gameBoard.getBoard()[cC][cR].getRevealed()) {
g.fillRect(cC * 21 + 1, cR * 21 + 1, 20, 20);
}
if (gameBoard.getBoard()[cC][cR].getRevealed()) {
if (gameBoard.getBoard()[cC][cR].getValue() != 0 && gameBoard.getBoard()[cC][cR].getValue() != 9) {
g.setFont(new Font("Courier", Font.BOLD, 20));
if (gameBoard.getBoard()[cC][cR].getValue() == 1) {
g.setColor(Color.BLUE);
}
if (gameBoard.getBoard()[cC][cR].getValue() == 2) {
g.setColor(new Color(12, 159, 32));
}
if (gameBoard.getBoard()[cC][cR].getValue() == 3) {
g.setColor(Color.YELLOW);
}
if (gameBoard.getBoard()[cC][cR].getValue() == 4) {
g.setColor(new Color(95, 7, 108));
}
if (gameBoard.getBoard()[cC][cR].getValue() == 5) {
g.setColor(Color.RED);
}
if (gameBoard.getBoard()[cC][cR].getValue() == 6) {
g.setColor(new Color(7, 131, 98));
}
if (gameBoard.getBoard()[cC][cR].getValue() == 7) {
g.setColor(Color.WHITE);
}
if (gameBoard.getBoard()[cC][cR].getValue() == 8) {
g.setColor(Color.DARK_GRAY);
}
if (!gameBoard.getBoard()[cC][cR].isMarked()) {
g.drawString("" + gameBoard.getBoard()[cC][cR].getValue(), cC * 21 + 5, cR * 21 + 17);
}
}
}
if ((gameBoard.getBoard()[cC][cR].isMarked() && notLost && !gameBoard.getWon()) || (gameBoard.getBoard()[cC][cR].isMarked() && gameBoard.getBoard()[cC][cR].getIsMine() && !gameBoard.getWon())) {
g.setColor(Color.RED);
g.fillRect(cC * 21 + 1, cR * 21 + 1, 20, 20);
g.setColor(Color.BLACK);
g.drawLine(cC * 21 + 8, cR * 21 + 6, cC * 21 + 18, cR * 21 + 9);
g.drawLine(cC * 21 + 8, cR * 21 + 12, cC * 21 + 18, cR * 21 + 9);
g.drawLine(cC * 21 + 8, cR * 21 + 6, cC * 21 + 8, cR * 21 + 19);
}
if (gameBoard.getBoard()[cC][cR].getIsMine() && !gameBoard.getBoard()[cC][cR].isMarked()) {
if (gameBoard.getBoard()[cC][cR].getRevealed()) {
g.setColor(Color.DARK_GRAY);
g.fillOval(cC * 21, cR * 21, 21, 21);
if (gameBoard.getBoard()[cC][cR].isMarked() && gameBoard.getWon()) {
g.setColor(Color.RED);
g.drawOval(cC * 21, cR * 21, 21, 21);
g.drawOval(cC * 21 + 3, cR * 21 + 3, 15, 15);
g.drawOval(cC * 21 + 6, cR * 21 + 6, 9, 9);
g.drawOval(cC * 21 + 9, cR * 21 + 9, 3, 3);
}
}
}
if ((gameBoard.getBoard()[cC][cR].isMarked() && !notLost && !gameBoard.getBoard()[cC][cR].getIsMine())){
g.setColor(Color.DARK_GRAY);
g.fillOval(cC * 21, cR * 21, 21, 21);
g.setColor(Color.RED);
g.drawLine(cC * 21 + 1, cR * 21 + 1, cC * 21 + 20, cR * 21 + 20);
g.drawLine(cC * 21 + 1, cR * 21 + 20, cC * 21 + 20, cR * 21 + 1);
g.drawLine(cC * 21 + 1, cR * 21 + 2, cC * 21 + 19, cR * 21 + 20);
g.drawLine(cC * 21 + 1, cR * 21 + 19, cC * 21 + 19, cR * 21 + 1);
g.drawLine(cC * 21 + 2, cR * 21 + 1, cC * 21 + 20, cR * 21 + 19);
g.drawLine(cC * 21 + 2, cR * 21 + 20, cC * 21 + 20, cR * 21 + 2);
g.drawLine(cC * 21 + 1, cR * 21 + 3, cC * 21 + 18, cR * 21 + 20);
g.drawLine(cC * 21 + 1, cR * 21 + 18, cC * 21 + 18, cR * 21 + 1);
g.drawLine(cC * 21 + 3, cR * 21 + 1, cC * 21 + 20, cR * 21 + 18);
g.drawLine(cC * 21 + 3, cR * 21 + 20, cC * 21 + 20, cR * 21 + 3);
}
}
}
g.setFont(new Font("SansSerif", Font.BOLD, 10));
g.setColor(Color.BLACK);
g.drawString("Left click to reveal a tile", 1, r * 21 + 15);
g.drawString("Right click to mark a mine", 1, r * 21 + 30);
}
/**
* changes if the player has lost to know what to draw
*/
public void setLost() {
notLost = false;
}
}