Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyEvent;
- import java.io.IOException;
- import javax.imageio.ImageIO;
- import javax.swing.*;
- import javax.swing.table.DefaultTableCellRenderer;
- import javax.swing.table.DefaultTableModel;
- import javax.swing.Timer;
- public class PacmanMap extends JFrame {
- private static final int CELL_SIZE = 20;
- private static final int ROWS = 31;
- private static final int COLUMNS = 28;
- private JTable mapTable;
- private DefaultTableModel tableModel;
- private int pacmanRow = (ROWS / 2) + 2;
- private int pacmanColumn = COLUMNS / 2;
- private int ghostRow = (ROWS / 2) + 2;
- private int ghostColumn = (COLUMNS / 2) + 1;
- final int W=1; // Wall.
- final int F=2; // Crossroads with food
- final int E=3; // Empty crossroads
- private int obstacleMap[][] = {
- {W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W},
- {W,F,F,F,F,F,F,F,F,F,F,F,F,W,W,F,F,F,F,F,F,F,F,F,F,F,F,W},
- {W,F,W,W,W,W,F,W,W,W,W,W,F,W,W,F,W,W,W,W,W,F,W,W,W,W,F,W},
- {W,F,W,W,W,W,F,W,W,W,W,W,F,W,W,F,W,W,W,W,W,F,W,W,W,W,F,W},
- {W,F,W,W,W,W,F,W,W,W,W,W,F,W,W,F,W,W,W,W,W,F,W,W,W,W,F,W},
- {W,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,W},
- {W,F,W,W,W,W,F,W,W,F,W,W,W,W,W,W,W,W,F,W,W,F,W,W,W,W,F,W},
- {W,F,W,W,W,W,F,W,W,F,W,W,W,W,W,W,W,W,F,W,W,F,W,W,W,W,F,W},
- {W,F,F,F,F,F,F,W,W,F,F,F,F,W,W,F,F,F,F,W,W,F,F,F,F,F,F,W},
- {W,W,W,W,W,W,F,W,W,W,W,W,F,W,W,F,W,W,W,W,W,F,W,W,W,W,W,W},
- {E,E,E,E,E,W,F,W,W,W,W,W,F,W,W,F,W,W,W,W,W,F,W,E,E,E,E,E},
- {E,E,E,E,E,W,F,W,W,F,F,F,F,F,F,F,F,F,F,W,W,F,W,E,E,E,E,E},
- {E,E,E,E,E,W,F,W,W,F,W,W,W,W,W,W,W,W,F,W,W,F,W,E,E,E,E,E},
- {W,W,W,W,W,W,F,W,W,F,W,E,E,E,E,E,E,W,F,W,W,F,W,W,W,W,W,W},
- {F,F,F,F,F,F,F,F,F,F,W,E,E,E,E,E,E,W,F,F,F,F,F,F,F,F,F,F},
- {W,W,W,W,W,W,F,W,W,F,W,E,E,E,E,E,E,W,F,W,W,F,W,W,W,W,W,W},
- {E,E,E,E,E,W,F,W,W,F,W,W,W,W,W,W,W,W,F,W,W,F,W,E,E,E,E,E},
- {E,E,E,E,E,W,F,W,W,F,F,F,F,F,F,F,F,F,F,W,W,F,W,E,E,E,E,E},
- {E,E,E,E,E,W,F,W,W,F,W,W,W,W,W,W,W,W,F,W,W,F,W,E,E,E,E,E},
- {W,W,W,W,W,W,F,W,W,F,W,W,W,W,W,W,W,W,F,W,W,F,W,W,W,W,W,W},
- {W,F,F,F,F,F,F,F,F,F,F,F,F,W,W,F,F,F,F,F,F,F,F,F,F,F,F,W},
- {W,F,W,W,W,W,F,W,W,W,W,W,F,W,W,F,W,W,W,W,W,F,W,W,W,W,F,W},
- {W,F,W,W,W,W,F,W,W,W,W,W,F,W,W,F,W,W,W,W,W,F,W,W,W,W,F,W},
- {W,F,F,F,W,W,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,W,W,F,F,F,W},
- {W,W,W,F,W,W,F,W,W,F,W,W,W,W,W,W,W,W,F,W,W,F,W,W,F,W,W,W},
- {W,W,W,F,W,W,F,W,W,F,W,W,W,W,W,W,W,W,F,W,W,F,W,W,F,W,W,W},
- {W,F,F,F,F,F,F,W,W,F,F,F,F,W,W,F,F,F,F,W,W,F,F,F,F,F,F,W},
- {W,F,W,W,W,W,W,W,W,W,W,W,F,W,W,F,W,W,W,W,W,W,W,W,W,W,F,W},
- {W,F,W,W,W,W,W,W,W,W,W,W,F,W,W,F,W,W,W,W,W,W,W,W,W,W,F,W},
- {W,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,W},
- {W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W}
- };
- BlueGhost blueGhost;
- public PacmanMap() {
- CreateStatusBar();
- add(p);
- initUI();
- }
- private void initUI(){
- tableModel = new DefaultTableModel(ROWS, COLUMNS);
- ImageIcon photo = new ImageIcon(getClass().getResource("img/" +"PacmanRight.png"));
- Image image = photo.getImage();
- for (int row = 0; row < ROWS; row++) {
- for (int column = 0; column < COLUMNS; column++) {
- tableModel.setValueAt("X", row, column);
- if (obstacleMap[row][column]==2) {
- tableModel.setValueAt(".", row, column);
- }
- else if (obstacleMap[row][column]==3) {
- tableModel.setValueAt("0", row, column);
- }
- }
- }
- tableModel.setValueAt(image, pacmanRow, pacmanColumn);
- blueGhost = new BlueGhost(pacmanRow, pacmanColumn);
- tableModel.setValueAt(blueGhost.toString(), ghostRow, ghostColumn);
- mapTable = new JTable(tableModel);
- mapTable.setGridColor(Color.black);
- 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) {
- if(value instanceof Image){
- ImageIcon icon = new ImageIcon((Image)value);
- setIcon(icon);
- setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
- setVerticalAlignment(DefaultTableCellRenderer.CENTER);
- setText(null);
- }
- else if(value == "X"){
- setBackground(new Color(80,111,214));
- setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
- setVerticalAlignment(DefaultTableCellRenderer.CENTER);
- setText(value.toString());
- setIcon(null);
- }
- else if(value == "."){
- setBackground(new Color(13,1,35));
- setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
- setVerticalAlignment(DefaultTableCellRenderer.CENTER);
- setText(value.toString());
- setIcon(null);
- }
- else if(value == "0"){
- setBackground(new Color(13,1,35));
- setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
- setVerticalAlignment(DefaultTableCellRenderer.CENTER);
- setText(value.toString());
- setIcon(null);
- }
- else if(value == "E"){
- setBackground(new Color(100,0,0));
- setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
- setVerticalAlignment(DefaultTableCellRenderer.CENTER);
- setText(value.toString());
- setIcon(null);
- }
- else{
- setIcon(null);
- setText("");
- setBackground(new Color(13,1,35));
- }
- }
- });
- 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));
- // enemy = new Enemy(2, 2, 1,mapTable);
- // enemy.run();
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.add(scrollPane);
- this.pack();
- this.setLocationRelativeTo(null);
- this.setVisible(true);
- }
- JLabel lab1;
- JPanel p ;
- int lives;
- private void CreateStatusBar() {
- try {
- lab1 = new JLabel("User Name", JLabel.LEFT);
- lab1.setBackground(Color.BLUE);
- lab1.setText(" ");
- Font f = new Font("Broadway", Font.BOLD, 18);
- lab1.setFont(f);
- p = new JPanel(){
- private static final long serialVersionUID = 1L;
- private Image pac = ImageIO.read(getClass().getClassLoader().getResource("img/" +"Heart.png"));
- public void paint (Graphics g){
- super.paint(g);
- for(int i = 0;i<lives;i++)
- g.drawImage(pac, 28*i, 1, null);
- }
- };
- p.setLayout(new FlowLayout());
- p.add(lab1);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- 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] == 1) {
- return;
- }
- ImageIcon photo = new ImageIcon(getClass().getResource("img/" +"PacmanRight.png"));
- Image image = photo.getImage();
- tableModel.setValueAt("", pacmanRow, pacmanColumn);
- pacmanRow = newPacmanRow;
- pacmanColumn = newPacmanColumn;
- tableModel.setValueAt(image, pacmanRow, pacmanColumn);
- c = pacmanColumn;
- r = pacmanRow;
- T();
- }
- public int c = 1;
- public int r = 1;
- int delay = 1000; // milliseconds
- public void T(){
- ActionListener taskPerformer = new ActionListener() {
- int direction = 1; // 1: рух вправо, 2: рух вліво, 3: рух вниз, 4: рух вгору
- public void actionPerformed(ActionEvent evt) {
- int newGhostRow = ghostRow;
- int newGhostColumn = ghostColumn;
- //newPacmanColumn = ghostColumn + 1;
- if (obstacleMap[newGhostRow][newGhostColumn] == 1) {
- if (direction == 1 || direction == 2) {
- direction = 3; // рух вниз
- } else if (direction == 3 || direction == 4) {
- direction = 1; // рух вправо
- }
- }
- if (direction == 1) { // рух вправо
- newGhostColumn = ghostColumn + 1;
- } else if (direction == 2) { // рух вліво
- newGhostColumn = ghostColumn - 1;
- } else if (direction == 3) { // рух вниз
- newGhostRow = ghostRow + 1;
- } else if (direction == 4) { // рух вгору
- newGhostRow = ghostRow - 1;
- }
- if (newGhostRow < 0 || newGhostRow >= ROWS || newGhostColumn < 0 || newGhostColumn >= COLUMNS) {
- return;
- }
- if (obstacleMap[newGhostRow][newGhostColumn] == 1) {
- if (direction == 1) {
- direction = 2; // рух вниз
- }
- else if (direction == 2) {
- direction = 3; // рух вправо
- }
- else if (direction == 3) {
- direction = 4; // рух вправо
- }
- else if (direction == 4) {
- direction = 1; // рух вправо
- }
- newGhostRow = ghostRow;
- newGhostColumn = ghostColumn;
- }
- ImageIcon photo = new ImageIcon(getClass().getResource("img/" +"RedLeft.png"));
- Image image = photo.getImage();
- tableModel.setValueAt("", ghostRow, ghostColumn);
- ghostRow = newGhostRow;
- ghostColumn = newGhostColumn;
- tableModel.setValueAt(image, ghostRow, ghostColumn);
- }
- };
- Timer timer = new Timer(delay, taskPerformer);
- timer.start();
- if(ghostRow == r && ghostColumn == c){
- JOptionPane.showMessageDialog(this, "Hello World!", "Message",
- JOptionPane.PLAIN_MESSAGE);
- timer.stop();
- }
- }
- public static void main(String[] args) throws IOException {
- EventQueue.invokeLater(() -> {
- new PacmanMap();
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment