-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBlock.java
More file actions
92 lines (91 loc) · 2.74 KB
/
Block.java
File metadata and controls
92 lines (91 loc) · 2.74 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
import java.awt.Color;
import java.awt.Image;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
abstract class Block extends JLabel{
protected int pixelsX, pixelsY;
protected Board container;
protected Color blockColor;
protected ImageIcon blockImage;
//accessors
public Block(int pxX, int pxY, Color col){
pixelsX=pxX;
pixelsY=pxY;
blockColor=col;
blockImage=Board.OI.imageMap.get(toString());
setIcon(blockImage);
container=null;
}
public Block(int pxX, int pxY, Color color, Board board){
pixelsX=pxX+(int)board.getOffset().getX();
pixelsY=pxY+(int)board.getOffset().getY();
blockColor=color;
blockImage=Board.OI.imageMap.get(toString());
setIcon(blockImage);
container=board;
board.setSpace(getRow(), getCol(), this);
Board.OI.addBlock(this);
}
public int getPixelsX(){
if(container==null)
return pixelsX;
return pixelsX-(int)container.getOffset().getX();
}
public int getPixelsY(){
if(container==null)
return pixelsY;
return pixelsY-(int)container.getOffset().getY();
}
public int getRow(){
return Board.pixelsToCoord(pixelsY, (int)container.getOffset().getY());
}
public int getCol(){
return Board.pixelsToCoord(pixelsX, (int)container.getOffset().getX());
}
public Color getColor(){
return blockColor;
}
public ImageIcon getImage(){
return blockImage;
}
public Block copy(){
return copy(container);
}
abstract Block copy(Board destination);
abstract Block copyNoBoard();
public abstract String toString();
//mutators
public void moveRC(int newRow, int newCol){
container.setSpace(getRow(), getCol(), null);
pixelsX=newRow*Board.BLOCK_SIZE+(int)container.getOffset().getX();
pixelsY=newCol*Board.BLOCK_SIZE+(int)container.getOffset().getY();
setLocation(pixelsX, pixelsY);
container.setSpace(newRow, newCol, this);
}
public void movePixels(int newX, int newY){
container.setSpace(getRow(), getCol(), null);
pixelsX=newX+(int)container.getOffset().getX();
pixelsY=newY+(int)container.getOffset().getY();
setLocation(pixelsX, pixelsY);
container.setSpace(getRow(), getCol(), this);
}
public void movePixelsNoBoard(int newX, int newY){
pixelsX=newX;
pixelsY=newY;
}
public void shift(int rows, int cols){
moveRC(getRow()+rows, getCol()+cols);
}
public void shiftPixels(int x, int y){
movePixels(getPixelsX()+x, getPixelsY()+y);
}
public void setColor(Color newColor){
blockColor=newColor;
}
public void setBoard(Board b){
container=b;
b.setSpace(getRow(), getCol(), this);
Board.OI.addBlock(this);
}
abstract void destroyNeighborsInternal();
}