Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.EventQueue;
- import java.awt.event.KeyEvent;
- import javax.swing.JFrame;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.table.DefaultTableCellRenderer;
- import javax.swing.table.DefaultTableModel;
- public class PacmanMap extends JFrame {
- private static final int CELL_SIZE = 20;
- private static final int ROWS = 15;
- private static final int COLUMNS = 15;
- private JTable mapTable;
- private DefaultTableModel tableModel;
- private int pacmanRow = ROWS / 2;
- private int pacmanColumn = COLUMNS / 2;
- private boolean[][] obstacleMap;
- public PacmanMap() {
- initObstacleMap();
- initUI();
- }
- private void initObstacleMap() {
- obstacleMap = new boolean[ROWS][COLUMNS];
- for (int row = 0; row < ROWS; row++) {
- obstacleMap[row][0] = true;
- obstacleMap[row][COLUMNS - 1] = true;
- }
- for (int column = 0; column < COLUMNS; column++) {
- obstacleMap[0][column] = true;
- obstacleMap[ROWS - 1][column] = true;
- }
- obstacleMap[3][6] = true;
- obstacleMap[3][7] = true;
- obstacleMap[3][8] = true;
- obstacleMap[9][6] = true;
- obstacleMap[9][7] = true;
- obstacleMap[9][8] = true;
- }
- private void initUI() {
- tableModel = new DefaultTableModel(ROWS, COLUMNS);
- for (int row = 0; row < ROWS; row++) {
- for (int column = 0; column < COLUMNS; column++) {
- tableModel.setValueAt(".", row, column);
- if (obstacleMap[row][column]) {
- tableModel.setValueAt("X", row, column);
- }
- }
- }
- tableModel.setValueAt("P", pacmanRow, pacmanColumn);
- mapTable = new JTable(tableModel);
- mapTable.setRowHeight(CELL_SIZE);
- for (int column = 0; column < COLUMNS; column++) {
- mapTable.getColumnModel().getColumn(column).setPreferredWidth(CELL_SIZE);
- }
- mapTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
- @Override
- public void setValue(Object value) {
- setBackground(Color.white);
- setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
- setText(value.toString());
- }
- });
- mapTable.addKeyListener(new java.awt.event.KeyAdapter() {
- public void keyPressed(java.awt.event.KeyEvent event) {
- movePacman(event);
- }
- });
- JScrollPane scrollPane = new JScrollPane(mapTable);
- scrollPane.setPreferredSize(new Dimension(CELL_SIZE * COLUMNS, CELL_SIZE * ROWS));
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.add(scrollPane);
- this.pack();
- this.setLocationRelativeTo(null);
- this.setVisible(true);
- }
- private void movePacman(KeyEvent event) {
- int newPacmanRow = pacmanRow;
- int newPacmanColumn = pacmanColumn;
- switch (event.getKeyCode()) {
- case KeyEvent.VK_UP:
- newPacmanRow = pacmanRow - 1;
- break;
- case KeyEvent.VK_DOWN:
- newPacmanRow = pacmanRow + 1;
- break;
- case KeyEvent.VK_LEFT:
- newPacmanColumn = pacmanColumn - 1;
- break;
- case KeyEvent.VK_RIGHT:
- newPacmanColumn = pacmanColumn + 1;
- break;
- default:
- return;
- }
- if (newPacmanRow < 0 || newPacmanRow >= ROWS || newPacmanColumn < 0 || newPacmanColumn >= COLUMNS) {
- return;
- }
- if (obstacleMap[newPacmanRow][newPacmanColumn]) {
- return;
- }
- tableModel.setValueAt(".", pacmanRow, pacmanColumn);
- pacmanRow = newPacmanRow;
- pacmanColumn = newPacmanColumn;
- tableModel.setValueAt("P", pacmanRow, pacmanColumn);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment