-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMazeGame.java
98 lines (86 loc) · 3.08 KB
/
MazeGame.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
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class MazeGame extends JFrame implements KeyListener {
private static final int MAZE_SIZE = 10; // Adjust maze size as needed
private char[][] maze;
private int playerX, playerY; // Player position
public MazeGame() {
setTitle("Maze Game");
setSize(600, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
addKeyListener(this);
maze = generateMaze();
playerX = 1; // Start position
playerY = 1;
}
private char[][] generateMaze() {
// Implement maze generation algorithm (e.g., Randomized Prim's, Recursive Backtracking)
// Return a randomly generated maze represented as a 2D char array
// 'X' for walls, ' ' for empty spaces, 'S' for start, 'E' for end
// Example:
char[][] maze = new char[MAZE_SIZE][MAZE_SIZE];
// Generate maze content
return maze;
}
private void displayMaze(Graphics g) {
int cellSize = 50; // Adjust cell size as needed
for (int i = 0; i < MAZE_SIZE; i++) {
for (int j = 0; j < MAZE_SIZE; j++) {
int x = j * cellSize;
int y = i * cellSize;
if (maze[i][j] == 'X') {
g.setColor(Color.BLACK);
g.fillRect(x, y, cellSize, cellSize);
} else if (maze[i][j] == 'S') {
g.setColor(Color.GREEN);
g.fillRect(x, y, cellSize, cellSize);
} else if (maze[i][j] == 'E') {
g.setColor(Color.RED);
g.fillRect(x, y, cellSize, cellSize);
}
// Add more conditions for displaying other elements of the maze
}
}
}
private void movePlayer(int dx, int dy) {
// Check if the move is valid and update player position accordingly
int newX = playerX + dx;
int newY = playerY + dy;
if (newX >= 0 && newX < MAZE_SIZE && newY >= 0 && newY < MAZE_SIZE && maze[newY][newX] != 'X') {
playerX = newX;
playerY = newY;
}
repaint(); // Redraw the maze after player movement
}
@Override
public void paint(Graphics g) {
super.paint(g);
displayMaze(g);
}
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) {
movePlayer(-1, 0);
} else if (key == KeyEvent.VK_RIGHT) {
movePlayer(1, 0);
} else if (key == KeyEvent.VK_UP) {
movePlayer(0, -1);
} else if (key == KeyEvent.VK_DOWN) {
movePlayer(0, 1);
}
// Add more key handling if needed
}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
MazeGame game = new MazeGame();
game.setVisible(true);
});
}
}