Pacman Java
Pacman Java
pacman;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.Timer;
private Dimension d;
private final Font smallFont = new Font("Helvetica", Font.BOLD, 14);
public Board() {
loadImages();
initVariables();
initBoard();
}
addKeyListener(new TAdapter());
setFocusable(true);
setBackground(Color.black);
}
@Override
public void addNotify() {
super.addNotify();
initGame();
}
private void doAnim() {
pacAnimCount--;
if (pacAnimCount <= 0) {
pacAnimCount = PAC_ANIM_DELAY;
pacmanAnimPos = pacmanAnimPos + pacAnimDir;
if (dying) {
death();
} else {
movePacman();
drawPacman(g2d);
moveGhosts(g2d);
checkMaze();
}
}
g2d.setColor(Color.white);
g2d.setFont(small);
g2d.drawString(s, (SCREEN_SIZE - metr.stringWidth(s)) / 2,
SCREEN_SIZE / 2);
}
int i;
String s;
g.setFont(smallFont);
g.setColor(new Color(96, 128, 255));
s = "Score: " + score;
g.drawString(s, SCREEN_SIZE / 2 + 96, SCREEN_SIZE + 16);
short i = 0;
boolean finished = true;
i++;
}
if (finished) {
score += 50;
initLevel();
}
}
pacsLeft--;
if (pacsLeft == 0) {
inGame = false;
}
continueLevel();
}
short i;
int pos;
int count;
count = 0;
if (count == 0) {
} else {
if (count > 3) {
count = 3;
}
ghost_dx[i] = dx[count];
ghost_dy[i] = dy[count];
}
dying = true;
}
}
}
g2d.drawImage(ghost, x, y, this);
}
int pos;
short ch;
if (req_dx != 0 || req_dy != 0) {
if (!((req_dx == -1 && req_dy == 0 && (ch & 1) != 0)
|| (req_dx == 1 && req_dy == 0 && (ch & 4) != 0)
|| (req_dx == 0 && req_dy == -1 && (ch & 2) != 0)
|| (req_dx == 0 && req_dy == 1 && (ch & 8) != 0)))
{
pacmand_x = req_dx;
pacmand_y = req_dy;
view_dx = pacmand_x;
view_dy = pacmand_y;
}
}
if (view_dx == -1) {
drawPacnanLeft(g2d);
} else if (view_dx == 1) {
drawPacmanRight(g2d);
} else if (view_dy == -1) {
drawPacmanUp(g2d);
} else {
drawPacmanDown(g2d);
}
}
switch (pacmanAnimPos) {
case 1:
g2d.drawImage(pacman2up, pacman_x + 1, pacman_y + 1, this);
break;
case 2:
g2d.drawImage(pacman3up, pacman_x + 1, pacman_y + 1, this);
break;
case 3:
g2d.drawImage(pacman4up, pacman_x + 1, pacman_y + 1, this);
break;
default:
g2d.drawImage(pacman1, pacman_x + 1, pacman_y + 1, this);
break;
}
}
switch (pacmanAnimPos) {
case 1:
g2d.drawImage(pacman2down, pacman_x + 1, pacman_y + 1,
this);
break;
case 2:
g2d.drawImage(pacman3down, pacman_x + 1, pacman_y + 1,
this);
break;
case 3:
g2d.drawImage(pacman4down, pacman_x + 1, pacman_y + 1,
this);
break;
default:
g2d.drawImage(pacman1, pacman_x + 1, pacman_y + 1, this);
break;
}
}
switch (pacmanAnimPos) {
case 1:
g2d.drawImage(pacman2left, pacman_x + 1, pacman_y + 1,
this);
break;
case 2:
g2d.drawImage(pacman3left, pacman_x + 1, pacman_y + 1,
this);
break;
case 3:
g2d.drawImage(pacman4left, pacman_x + 1, pacman_y + 1,
this);
break;
default:
g2d.drawImage(pacman1, pacman_x + 1, pacman_y + 1, this);
break;
}
}
switch (pacmanAnimPos) {
case 1:
g2d.drawImage(pacman2right, pacman_x + 1, pacman_y + 1,
this);
break;
case 2:
g2d.drawImage(pacman3right, pacman_x + 1, pacman_y + 1,
this);
break;
case 3:
g2d.drawImage(pacman4right, pacman_x + 1, pacman_y + 1,
this);
break;
default:
g2d.drawImage(pacman1, pacman_x + 1, pacman_y + 1, this);
break;
}
}
short i = 0;
int x, y;
g2d.setColor(mazeColor);
g2d.setStroke(new BasicStroke(2));
if ((screenData[i] & 1) != 0) {
g2d.drawLine(x, y, x, y + BLOCK_SIZE - 1);
}
if ((screenData[i] & 2) != 0) {
g2d.drawLine(x, y, x + BLOCK_SIZE - 1, y);
}
if ((screenData[i] & 4) != 0) {
g2d.drawLine(x + BLOCK_SIZE - 1, y, x + BLOCK_SIZE - 1,
y + BLOCK_SIZE - 1);
}
if ((screenData[i] & 8) != 0) {
g2d.drawLine(x, y + BLOCK_SIZE - 1, x + BLOCK_SIZE - 1,
y + BLOCK_SIZE - 1);
}
i++;
}
}
}
private void initGame() {
pacsLeft = 3;
score = 0;
initLevel();
N_GHOSTS = 6;
currentSpeed = 3;
}
int i;
for (i = 0; i < N_BLOCKS * N_BLOCKS; i++) {
screenData[i] = levelData[i];
}
continueLevel();
}
short i;
int dx = 1;
int random;
ghost_y[i] = 4 * BLOCK_SIZE;
ghost_x[i] = 4 * BLOCK_SIZE;
ghost_dy[i] = 0;
ghost_dx[i] = dx;
dx = -dx;
random = (int) (Math.random() * (currentSpeed + 1));
ghostSpeed[i] = validSpeeds[random];
}
pacman_x = 7 * BLOCK_SIZE;
pacman_y = 11 * BLOCK_SIZE;
pacmand_x = 0;
pacmand_y = 0;
req_dx = 0;
req_dy = 0;
view_dx = -1;
view_dy = 0;
dying = false;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
doDrawing(g);
}
g2d.setColor(Color.black);
g2d.fillRect(0, 0, d.width, d.height);
drawMaze(g2d);
drawScore(g2d);
doAnim();
if (inGame) {
playGame(g2d);
} else {
showIntroScreen(g2d);
}
g2d.drawImage(ii, 5, 5, this);
Toolkit.getDefaultToolkit().sync();
g2d.dispose();
}
@Override
public void keyPressed(KeyEvent e) {
if (inGame) {
if (key == KeyEvent.VK_LEFT) {
req_dx = -1;
req_dy = 0;
} else if (key == KeyEvent.VK_RIGHT) {
req_dx = 1;
req_dy = 0;
} else if (key == KeyEvent.VK_UP) {
req_dx = 0;
req_dy = -1;
} else if (key == KeyEvent.VK_DOWN) {
req_dx = 0;
req_dy = 1;
} else if (key == KeyEvent.VK_ESCAPE && timer.isRunning())
{
inGame = false;
} else if (key == KeyEvent.VK_PAUSE) {
if (timer.isRunning()) {
timer.stop();
} else {
timer.start();
}
}
} else {
if (key == 's' || key == 'S') {
inGame = true;
initGame();
}
}
}
@Override
public void keyReleased(KeyEvent e) {
@Override
public void actionPerformed(ActionEvent e) {
repaint();
}
}