Vla_DOS

Untitled

May 11th, 2023
1,004
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.05 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.Dimension;
  3. import java.awt.EventQueue;
  4. import java.awt.event.KeyEvent;
  5. import javax.swing.JFrame;
  6. import javax.swing.JScrollPane;
  7. import javax.swing.JTable;
  8. import javax.swing.table.DefaultTableCellRenderer;
  9. import javax.swing.table.DefaultTableModel;
  10.  
  11. public class PacmanMap extends JFrame {
  12.     private static final int CELL_SIZE = 20;
  13.     private static final int ROWS = 15;
  14.     private static final int COLUMNS = 15;
  15.  
  16.     private JTable mapTable;
  17.     private DefaultTableModel tableModel;
  18.     private int pacmanRow = ROWS / 2;
  19.     private int pacmanColumn = COLUMNS / 2;
  20.     private boolean[][] obstacleMap;
  21.  
  22.     public PacmanMap() {
  23.         initObstacleMap();
  24.         initUI();
  25.     }
  26.  
  27.     private void initObstacleMap() {
  28.         obstacleMap = new boolean[ROWS][COLUMNS];
  29.  
  30.         for (int row = 0; row < ROWS; row++) {
  31.             obstacleMap[row][0] = true;
  32.             obstacleMap[row][COLUMNS - 1] = true;
  33.         }
  34.  
  35.         for (int column = 0; column < COLUMNS; column++) {
  36.             obstacleMap[0][column] = true;
  37.             obstacleMap[ROWS - 1][column] = true;
  38.         }
  39.  
  40.         obstacleMap[3][6] = true;
  41.         obstacleMap[3][7] = true;
  42.         obstacleMap[3][8] = true;
  43.  
  44.         obstacleMap[9][6] = true;
  45.         obstacleMap[9][7] = true;
  46.         obstacleMap[9][8] = true;
  47.     }
  48.  
  49.     private void initUI() {
  50.         tableModel = new DefaultTableModel(ROWS, COLUMNS);
  51.  
  52.         for (int row = 0; row < ROWS; row++) {
  53.             for (int column = 0; column < COLUMNS; column++) {
  54.                 tableModel.setValueAt(".", row, column);
  55.                 if (obstacleMap[row][column]) {
  56.                     tableModel.setValueAt("X", row, column);
  57.                 }
  58.             }
  59.         }
  60.  
  61.         tableModel.setValueAt("P", pacmanRow, pacmanColumn);
  62.  
  63.         mapTable = new JTable(tableModel);
  64.  
  65.         mapTable.setRowHeight(CELL_SIZE);
  66.         for (int column = 0; column < COLUMNS; column++) {
  67.             mapTable.getColumnModel().getColumn(column).setPreferredWidth(CELL_SIZE);
  68.         }
  69.  
  70.         mapTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
  71.             @Override
  72.             public void setValue(Object value) {
  73.                 setBackground(Color.white);
  74.                 setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
  75.                 setText(value.toString());
  76.             }
  77.         });
  78.  
  79.         mapTable.addKeyListener(new java.awt.event.KeyAdapter() {
  80.             public void keyPressed(java.awt.event.KeyEvent event) {
  81.                 movePacman(event);
  82.             }
  83.         });
  84.  
  85.         JScrollPane scrollPane = new JScrollPane(mapTable);
  86.         scrollPane.setPreferredSize(new Dimension(CELL_SIZE * COLUMNS, CELL_SIZE * ROWS));
  87.  
  88.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  89.         this.add(scrollPane);
  90.         this.pack();
  91.         this.setLocationRelativeTo(null);
  92.         this.setVisible(true);
  93.     }
  94.  
  95.     private void movePacman(KeyEvent event) {
  96.         int newPacmanRow = pacmanRow;
  97.         int newPacmanColumn = pacmanColumn;
  98.  
  99.         switch (event.getKeyCode()) {
  100.             case KeyEvent.VK_UP:
  101.                 newPacmanRow = pacmanRow - 1;
  102.                 break;
  103.             case KeyEvent.VK_DOWN:
  104.                 newPacmanRow = pacmanRow + 1;
  105.                 break;
  106.             case KeyEvent.VK_LEFT:
  107.                 newPacmanColumn = pacmanColumn - 1;
  108.                 break;
  109.             case KeyEvent.VK_RIGHT:
  110.                 newPacmanColumn = pacmanColumn + 1;
  111.                 break;
  112.             default:
  113.                 return;
  114.         }
  115.  
  116.         if (newPacmanRow < 0 || newPacmanRow >= ROWS || newPacmanColumn < 0 || newPacmanColumn >= COLUMNS) {
  117.             return;
  118.         }
  119.  
  120.         if (obstacleMap[newPacmanRow][newPacmanColumn]) {
  121.             return;
  122.         }
  123.  
  124.         tableModel.setValueAt(".", pacmanRow, pacmanColumn);
  125.         pacmanRow = newPacmanRow;
  126.         pacmanColumn = newPacmanColumn;
  127.         tableModel.setValueAt("P", pacmanRow, pacmanColumn);
  128.     }
  129.  
  130. }
Advertisement
Add Comment
Please, Sign In to add comment