-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSquare.java
More file actions
129 lines (119 loc) · 3.22 KB
/
Square.java
File metadata and controls
129 lines (119 loc) · 3.22 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
122
123
124
125
126
127
128
129
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
/**
* Square
*
* Each square is an extension of a JButton.
* Each square holds a number for the grid.
* Numbers can be placed or removed.
*
* @author Quinten Houck
* @version 8/1/2021
*
*/
public class Square extends JButton {
Data data;
int x;
int y;
int value;
ImageIcon iconA;
int state;
public Square(Data data, int x, int y) {
super();
this.data = data;
value = 0;
iconA = new ImageIcon(Images.getImage("sprites/SquareBackground.PNG"));
this.setIcon(iconA);
this.setHorizontalTextPosition(JButton.CENTER);
this.setVerticalTextPosition(JButton.CENTER);
this.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (data.getGrid()[x][y] == 0) {
if (checkSquare(data,x,y) == 1) {
state=1;
placeNumber(data, x, y);
}
} else if (data.getCount() == value) {
state=0;
removeNumber(data, x, y);
}
}
});
}
//The next number is placed in the grid square//
//The data object is updated for the new square//
public void placeNumber(Data data, int x, int y) {
data.setLastX(x);
data.setLastY(y);
this.setText(String.valueOf(data.getCount()+1));
data.getGrid()[x][y] = data.getCount()+1;
data.addCount();
value = data.getCount();
}
//The last number placed is removed//
//The data object is updated//
public void removeNumber(Data data, int x, int y) {
this.setText("");
data.getGrid()[x][y] = 0;
data.subCount();
value = 0;
//Finds last number placed before just removed//
//Sets last coordinates of that square in data object//
int[][] grid = data.getGrid();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (grid[i][j] == data.getCount()) {
data.setLastX(i);
data.setLastY(j);
}
if (data.getCount() == 0) {
data.setLastX(-1);
data.setLastY(-1);
}
}
}
}
//Resets the text and value of each square//
public void reset() {
value = 0;
this.setText("");
}
//Checks the eligibility of a square for the next number to be placed//
//New numbers can be placed 3 away up, down, left, and right//
//New numbers can be placed 2 away diagonally//
public int checkSquare(Data data, int x, int y) {
int LX = data.getLastX();
int LY = data.getLastY();
if (LX == -1 && LY == -1) {
return 1;
}
try {
if (LX-3 == x && LY == y) {
return 1;
} else if (LX-3 == x && LY == y) {
return 1;
} else if (LX-2 == x && LY+2 == y) {
return 1;
} else if (LX == x && LY+3 == y) {
return 1;
} else if (LX+2 == x && LY+2 == y) {
return 1;
} else if (LX+3 == x && LY == y) {
return 1;
} else if (LX+2 == x && LY-2 == y) {
return 1;
} else if (LX == x && LY-3 == y) {
return 1;
} else if (LX-2 == x && LY-2 == y) {
return 1;
} else {
return 0;
}
} catch (IndexOutOfBoundsException e) {
return 0;
}
}
}