package Maze; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JPanel; import javax.swing.Timer; public class board extends JPanel implements ActionListener{ private Timer timer; private map m; private Items i; private Battle b; private String direction="nothing"; public static Player p; public static Monster c; private int level=1; // private int keys=0; public stats s; private boolean move = false; public board(){ m = new map(); i = new Items(); p = new Player(); c = new Monster(); addKeyListener(new keyboardInput()); //Adds listener for keyboard input setFocusable(true); //add keyListener to Frame timer = new Timer(25, this); //every 25 milliseconds the board is repainted timer.start(); } public void actionPerformed(ActionEvent e){ repaint(); //update(());//every 25 milliseconds the board is repainted } public void paint(Graphics g){ //Scans each tile of the map for "g" or "w" and paints the appropriate image super.paint(g); for (int y = 0; y < 14; y++) { //nested for loops scan all parts of the board for (int x = 0; x < 14; x++) { if (m.getMap(x, y).equals("g")) { g.drawImage(m.getGrass(), x * 32, y * 32, null); } if (m.getMap(x, y).equals("w")) { g.drawImage(m.getWall(), x * 32, y * 32, null); } } } //draw items on top of the background for (int y = 0; y < 14; y++) { //nested for loops scan all parts of the board for (int x = 0; x < 14; x++) { if (i.getItems(x, y, level).equals("u")) { g.drawImage(i.getStairsUp(), x * 32, y * 32, null); } else if (i.getItems(x, y, level).equals("d")) { g.drawImage(i.getStairsDown(), x * 32, y * 32, null); } else if (i.getItems(x, y, level).equals("l")) { g.drawImage(i.getDoor(), x * 32, y * 32, null); } else if (i.getItems(x, y, level).equals("k")) { g.drawImage(i.getKey(), x * 32, y * 32, null); } else if (i.getItems(x, y, level).equals("m")) { g.drawImage(i.getMonster(), x * 32, y * 32, null); } else{ g.drawImage(i.getBlank(), x * 32, y * 32, null); } } } g.drawImage(p.getPlayer(direction), p.getTileX()*32, p.getTileY()* 32, null); //draws player after the board } public static Player getPlayerInfo(Player p2){ p2 = p; return p2; } public static Monster getMonsterInfo(Monster m2){ m2 = c; return m2; } public class keyboardInput extends KeyAdapter{ public void keyPressed(KeyEvent e){ move = true; int keycode = e.getKeyCode(); if (keycode == KeyEvent.VK_W) { direction = "up"; if (!m.getMap(p.getTileX(), p.getTileY() - 1).equals("w")) { //check for stairs going up if (i.getItems(p.getTileX(), p.getTileY() - 1, i.currentLevel).equals("u")) { m.upLevel(m); i.upLevel(i); level +=1; } //check for stairs going down else if (i.getItems(p.getTileX(), p.getTileY() - 1, i.currentLevel).equals("d")) { m.downLevel(m); i.downLevel(i); level-=1; } //check for key else if (i.getItems(p.getTileX(), p.getTileY() - 1, i.currentLevel).equals("k")) { i.pickUpKey(i, p.getTileX(), p.getTileY()-1, i.currentLevel, p); p.addKey(p); } else if (i.getItems(p.getTileX(), p.getTileY() - 1, i.currentLevel).equals("l")){ if (p.numKeys > 0){ i.openDoor(i, p.getTileX(), p.getTileY()-1, i.currentLevel, p); p.loseKey(p);} else{ System.out.println("Door is locked. You need a key."); move = false;}} if (move==true) p.move(0, -1); } } if (keycode == KeyEvent.VK_S) { direction = "down"; if (!m.getMap(p.getTileX(), p.getTileY() + 1).equals("w")) { if (i.getItems(p.getTileX(), p.getTileY() + 1, i.currentLevel).equals("u")) { level +=1; m.upLevel(m); i.upLevel(i); } else if (i.getItems(p.getTileX(), p.getTileY() + 1, i.currentLevel).equals("d")) { m.downLevel(m); i.downLevel(i); level-=1; } else if (i.getItems(p.getTileX(), p.getTileY() + 1, i.currentLevel).equals("k")) { i.pickUpKey(i, p.getTileX(), p.getTileY()+1, i.currentLevel, p); p.addKey(p); } else if (i.getItems(p.getTileX(), p.getTileY() + 1, i.currentLevel).equals("l")){ if (p.numKeys > 0){ i.openDoor(i, p.getTileX(), p.getTileY()+1, i.currentLevel, p); p.loseKey(p);} else{ System.out.println("Door is locked. You need a key."); move = false;}} if (move==true) p.move(0, 1); } } if (keycode == KeyEvent.VK_A) { direction = "left"; if (!m.getMap(p.getTileX() - 1, p.getTileY()).equals("w")) { if (i.getItems(p.getTileX() - 1, p.getTileY(), i.currentLevel).equals("u")) { level +=1; m.upLevel(m); i.upLevel(i); } else if (i.getItems(p.getTileX() - 1, p.getTileY(), i.currentLevel).equals("d")) { m.downLevel(m); i.downLevel(i); level-=1; } else if (i.getItems(p.getTileX()-1, p.getTileY() , i.currentLevel).equals("k")) { i.pickUpKey(i, p.getTileX()-1, p.getTileY(), i.currentLevel, p); p.addKey(p); } else if (i.getItems(p.getTileX()-1, p.getTileY() , i.currentLevel).equals("l")){ if (p.numKeys > 0){ i.openDoor(i, p.getTileX()-1, p.getTileY(), i.currentLevel, p); p.loseKey(p);} else{ System.out.println("Door is locked. You need a key."); move = false;}} if (move==true) p.move(-1, 0); } } if (keycode == KeyEvent.VK_D) { direction = "right"; if (!m.getMap(p.getTileX() + 1, p.getTileY()).equals("w")) { if (i.getItems(p.getTileX() + 1, p.getTileY(), i.currentLevel).equals("u")) { level +=1; m.upLevel(m); i.upLevel(i); } else if (i.getItems(p.getTileX() + 1, p.getTileY(), i.currentLevel).equals("d")) { m.downLevel(m); i.downLevel(i); level-=1; } else if (i.getItems(p.getTileX()+1, p.getTileY(), i.currentLevel).equals("k")) { i.pickUpKey(i, p.getTileX()+1, p.getTileY(), i.currentLevel, p); p.addKey(p); } else if (i.getItems(p.getTileX()+1, p.getTileY(), i.currentLevel).equals("m")) { c.getMonster(c); //board.setVisible(false); // b = new Battle(p, c); battle(p,c); } else if (i.getItems(p.getTileX()+1, p.getTileY() , i.currentLevel).equals("l")){ if (p.numKeys > 0){ i.openDoor(i, p.getTileX()+1, p.getTileY(), i.currentLevel, p); p.loseKey(p);} else{ System.out.println("Door is locked. You need a key."); move = false;}} if (move==true) p.move(1, 0); } } } public void keyReleased(KeyEvent e){ } public void keyTyped(KeyEvent e){ } public void battle(Player p, Monster m){ b = new Battle(p, m); } }}