-
Notifications
You must be signed in to change notification settings - Fork 1
/
Cell.java
116 lines (101 loc) · 2.28 KB
/
Cell.java
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
import javax.swing.JButton;
/**
* The Cell abstract class provides the other classes with informations about the cell(position and size)
* and ways to interact with it, such as:
* <ul>
* <li> getting its position
* <li> getting the state (alive/dead/definitely dead)
* <li> changing its state
* </ul>
*
* @author <A HREF="mailto:niccolo.marastoni@studenti.univr.it">Niccolò Marastoni</A>
* @author <A HREF="mailto:andrei.munteanu@studenti.univr.it">Andrei Munteanu</A>
* @version 1.0
*
*/
public abstract class Cell extends JButton{
/*
* Horizontal position.
*/
private int x;
/*
* Vertical position.
*/
private int y;
private static final long serialVersionUID = 1L;
/*
* Cell's size.
*/
public static final int CELL_SIZE = 10;
/**
* Constructs a cell in a specific position with a specific size.
*
* @param x
* vertical position
* @param y
* horizontal position
*/
protected Cell(int x, int y){
super();
setBounds(x * Cell.CELL_SIZE, y * Cell.CELL_SIZE, Cell.CELL_SIZE, Cell.CELL_SIZE);
this.x = x;
this.y = y;
}
/**
* Returns the horizontal position of the cell on the grid.
*
* @return
* horizontal position
*/
public int auxGetX(){
return x;
}
/**
* Returns the vertical position of the cell on the grid.
*
* @return
* vertical position
*/
public int auxGetY(){
return y;
}
/**
* Tests if the cell is alive in the actual generation.
*
* @return
* true if the cell is alive
*/
public abstract boolean isAliveNow();
/**
* Changes the cell's state in the actual generation.
*/
public abstract void changeNow();
/**
* Changes the cell's state in the next generation.
*/
public abstract void changeNext();
/**
* Swaps the cell's state from the next generation to the actual.
*/
public abstract void swap();
/**
* Reinitializes the cell's state: dead and not definitely dead.
*
*/
public abstract void reset();
/**
* Tests if the cell is definitely dead.
*
* @return
* true if the cell is definitely dead
*/
public abstract boolean isDefDead();
/**
* Returns a string representation of this cell, containing it's position.
*
*/
@Override
public String toString(){
return "(" + auxGetX() + ", " + auxGetY() + ")";
}
}