Skip to content

Commit c3c63bc

Browse files
committed
added tile img for each type
1 parent 52ff188 commit c3c63bc

File tree

2 files changed

+78
-30
lines changed

2 files changed

+78
-30
lines changed

src/Game.java

+12-22
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,16 @@ The robot character (an ant) should find its way from the start point (home) to
2727
import java.awt.Font;
2828
import java.awt.Graphics;
2929
import java.awt.GridLayout;
30-
import java.awt.Image;
30+
3131
import java.awt.event.ActionEvent;
3232
import java.awt.event.ActionListener;
3333
import java.awt.event.MouseEvent;
3434
import java.awt.event.MouseListener;
3535
import java.awt.event.MouseMotionListener;
36-
import java.io.IOException;
36+
3737
import java.util.LinkedList;
3838
import javax.swing.Timer;
39-
import javax.imageio.ImageIO;
39+
4040
import javax.swing.JButton;
4141
import javax.swing.JFrame;
4242
import javax.swing.JPanel;
@@ -63,7 +63,7 @@ public class Game extends JPanel implements MouseListener, MouseMotionListener {
6363
private boolean openTerrainSelectionMode;
6464
private boolean swamplandSelectionMode;
6565
private boolean grasslandSelectionMode;
66-
private Image foodImg;
66+
6767
private int buttonCount;
6868
private boolean noPath;
6969
private Tile lastDraggedTile = null;
@@ -92,7 +92,7 @@ public Game(JFrame frame) {
9292

9393
// set tile offset
9494
int xOffset = (int) ((frame.getWidth() - TILE_SIZE * NUM_COLS) / 2);
95-
int yOffset = (int) ((frame.getHeight() - TILE_SIZE * NUM_ROWS) / 2);
95+
int yOffset = (int) ((frame.getHeight() - TILE_SIZE * NUM_ROWS) / 2.5);
9696

9797
Tile.setxOffset(xOffset);
9898
Tile.setyOffset(yOffset);
@@ -112,11 +112,8 @@ public Game(JFrame frame) {
112112
searchButton(); // returning the button to enable the button after search
113113
resetButton(); // it will enable the search button after reseting the game
114114

115-
116-
117-
118115
// load food image
119-
loadFoodImg();
116+
// loadFoodImg();
120117

121118
// Add the button panel
122119
add(buttonPanel, BorderLayout.NORTH);
@@ -152,7 +149,7 @@ public void actionPerformed(ActionEvent e) {
152149
noPath = false;
153150
startMovingAnt = false;
154151
tobeDrawn = new LinkedList<Tile>();
155-
startTimeBeforeSearch = 0;
152+
startTimeBeforeSearch = System.currentTimeMillis();
156153
elapsedTimeAfterSearch = 0;
157154
elapsedTimeStringBeforeSearch = "0:00:000";
158155

@@ -161,19 +158,15 @@ public void actionPerformed(ActionEvent e) {
161158
elapsedTimeStringAfterAnimation = "0:00:000";
162159
antReached = false;
163160
createTiles();
161+
setTimerMageCreation();
162+
setTimerSolving();
164163
repaint();
164+
165165
}
166166
});
167167
buttonPanel.add(result);
168168
}
169169

170-
private void loadFoodImg() {
171-
try {
172-
foodImg = ImageIO.read(getClass().getResource("/assets/images/food.png"));
173-
} catch (IOException e) {
174-
e.printStackTrace();
175-
}
176-
}
177170

178171
// the selection mode of available buttons
179172
private void selectOpenTerrain() {
@@ -557,10 +550,7 @@ protected void paintComponent(Graphics g) {
557550
}
558551
}
559552

560-
// draw food
561-
if (goalTile != null && goalTile.isGoal()) {
562-
g.drawImage(foodImg, goalTile.getXpixel(), goalTile.getYpixel(), TILE_SIZE, TILE_SIZE, null);
563-
}
553+
564554

565555
// draw ant
566556
if (ant != null) {
@@ -640,7 +630,7 @@ public void drawPath(Graphics g, int tileSize, LinkedList<Tile> LinkedList) {
640630
Tile current = LinkedList.get(i);
641631

642632
Tile next = LinkedList.get(i + 1);
643-
System.out.println("current: " + current.getXpixel() + ", " + current.getYpixel());
633+
644634
int x1 = (int) current.getXpixel() + tileSize / 2;
645635
int y1 = (int) current.getYpixel() + tileSize / 2;
646636
int x2 = (int) next.getXpixel() + tileSize / 2;

src/Tile.java

+66-8
Original file line numberDiff line numberDiff line change
@@ -33,38 +33,43 @@ public class Tile implements Comparable<Tile> {
3333
private boolean isSwampland;
3434
private Tile cameFrom;
3535
private boolean removeAntImg;
36+
private static Color boardDefaultColor = Color.WHITE;
3637
private Image antImage;
38+
private Image foodImg;
39+
private Image grasslandImg;
40+
private Image swamplandImg;
41+
private Image obstacleImg;
3742

3843
public Tile(int x, int y) {
3944
this.x = x;
4045
this.y = y;
41-
46+
4247
this.cost = COST_OPEN_TERRAIN;
4348
isOpenTerrain = true;
4449
this.cameFrom = null;
4550
}
4651

4752
public void draw(Graphics g) {
4853
if (isObstacle) {
49-
g.setColor(Color.BLACK);
54+
drawObstacleImage(g);
5055
} else if (isStart) {
5156
if (removeAntImg) {
5257
g.setColor(Color.LIGHT_GRAY);
5358
} else {
5459
drawAntImage(g);
5560
}
5661
} else if (isGoal) {
57-
g.setColor(Color.WHITE);
62+
drawFoodImage(g);
5863
} else if (isGrassland) {
59-
g.setColor(Color.YELLOW);
64+
drawGrassland(g);
6065
} else if (isSwampland) {
61-
g.setColor(Color.BLUE);
66+
drawSwampland(g);
6267
} else {
6368
// open terrain
64-
g.setColor(Color.WHITE);
69+
g.setColor(boardDefaultColor);
6570
}
6671

67-
if(!isStart || removeAntImg){
72+
if((!isStart || removeAntImg) && !isGoal){
6873
g.fillRect(getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize());
6974
}
7075

@@ -73,12 +78,65 @@ public void draw(Graphics g) {
7378

7479
}
7580

81+
private void drawObstacleImage(Graphics g) {
82+
try {
83+
if(obstacleImg == null){
84+
obstacleImg = ImageIO.read(getClass().getResource("/assets/images/obstacle.png"));
85+
}
86+
g.setColor(boardDefaultColor);
87+
g.fillRect(getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize());
88+
g.drawImage(obstacleImg, getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize(), null);
89+
} catch (IOException e) {
90+
e.printStackTrace();
91+
}
92+
}
93+
94+
private void drawSwampland(Graphics g) {
95+
try {
96+
if(swamplandImg == null){
97+
swamplandImg = ImageIO.read(getClass().getResource("/assets/images/swampland.png"));
98+
}
99+
g.setColor(boardDefaultColor);
100+
g.fillRect(getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize());
101+
g.drawImage(swamplandImg, getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize(), null);
102+
} catch (IOException e) {
103+
e.printStackTrace();
104+
}
105+
}
106+
107+
private void drawGrassland(Graphics g) {
108+
try {
109+
if(grasslandImg == null){
110+
grasslandImg = ImageIO.read(getClass().getResource("/assets/images/grassland.png"));
111+
}
112+
g.setColor(boardDefaultColor);
113+
g.fillRect(getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize());
114+
g.drawImage(grasslandImg, getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize(), null);
115+
} catch (IOException e) {
116+
e.printStackTrace();
117+
}
118+
119+
}
120+
121+
private void drawFoodImage(Graphics g) {
122+
try {
123+
if(foodImg == null){
124+
foodImg = ImageIO.read(getClass().getResource("/assets/images/food.png"));
125+
}
126+
g.setColor(boardDefaultColor);
127+
g.fillRect(getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize());
128+
g.drawImage(foodImg, getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize(), null);
129+
} catch (IOException e) {
130+
e.printStackTrace();
131+
}
132+
}
133+
76134
private void drawAntImage(Graphics g) {
77135
try {
78136
if(antImage == null){
79137
antImage = ImageIO.read(getClass().getResource("/assets/images/ant.png"));
80138
}
81-
g.setColor(Color.WHITE);
139+
g.setColor(boardDefaultColor);
82140
g.fillRect(getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize());
83141
g.drawImage(antImage, getXpixel(), getYpixel(), Game.getTileSize(), Game.getTileSize(), null);
84142
} catch (IOException e) {

0 commit comments

Comments
 (0)