0% found this document useful (0 votes)
40 views

Java Application Board

Uploaded by

Good Bishop
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views

Java Application Board

Uploaded by

Good Bishop
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

board in java. Save as board.

java

package com.zetcode;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
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;

public class Board extends JPanel implements ActionListener {

private final int B_WIDTH = 300;


private final int B_HEIGHT = 300;
private final int DOT_SIZE = 10;
private final int ALL_DOTS = 900;
private final int RAND_POS = 29;
private final int DELAY = 140;

private final int x[] = new int[ALL_DOTS];


private final int y[] = new int[ALL_DOTS];

private int dots;


private int apple_x;
private int apple_y;

private boolean leftDirection = false;


private boolean rightDirection = true;
private boolean upDirection = false;
private boolean downDirection = false;
private boolean inGame = true;

private Timer timer;


private Image ball;
private Image apple;
private Image head;

public Board() {

initBoard();
}
private void initBoard() {

addKeyListener(new TAdapter());
setBackground(Color.black);
setFocusable(true);

setPreferredSize(new Dimension(B_WIDTH, B_HEIGHT));


loadImages();
initGame();
}

private void loadImages() {

ImageIcon iid = new ImageIcon("src/resources/dot.png");


ball = iid.getImage();

ImageIcon iia = new ImageIcon("src/resources/apple.png");


apple = iia.getImage();

ImageIcon iih = new ImageIcon("src/resources/head.png");


head = iih.getImage();
}

private void initGame() {

dots = 3;

for (int z = 0; z < dots; z++) {


x[z] = 50 - z * 10;
y[z] = 50;
}

locateApple();

timer = new Timer(DELAY, this);


timer.start();
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);

doDrawing(g);
}

private void doDrawing(Graphics g) {

if (inGame) {

g.drawImage(apple, apple_x, apple_y, this);

for (int z = 0; z < dots; z++) {


if (z == 0) {
g.drawImage(head, x[z], y[z], this);
} else {
g.drawImage(ball, x[z], y[z], this);
}
}
Toolkit.getDefaultToolkit().sync();

} else {

gameOver(g);
}
}

private void gameOver(Graphics g) {

String msg = "Game Over";


Font small = new Font("Helvetica", Font.BOLD, 14);
FontMetrics metr = getFontMetrics(small);

g.setColor(Color.white);
g.setFont(small);
g.drawString(msg, (B_WIDTH - metr.stringWidth(msg)) / 2, B_HEIGHT / 2);
}

private void checkApple() {

if ((x[0] == apple_x) && (y[0] == apple_y)) {

dots++;
locateApple();
}
}

private void move() {

for (int z = dots; z > 0; z--) {


x[z] = x[(z - 1)];
y[z] = y[(z - 1)];
}

if (leftDirection) {
x[0] -= DOT_SIZE;
}

if (rightDirection) {
x[0] += DOT_SIZE;
}

if (upDirection) {
y[0] -= DOT_SIZE;
}

if (downDirection) {
y[0] += DOT_SIZE;
}
}

private void checkCollision() {

for (int z = dots; z > 0; z--) {

if ((z > 4) && (x[0] == x[z]) && (y[0] == y[z])) {


inGame = false;
}
}

if (y[0] >= B_HEIGHT) {


inGame = false;
}

if (y[0] < 0) {
inGame = false;
}

if (x[0] >= B_WIDTH) {


inGame = false;
}

if (x[0] < 0) {
inGame = false;
}

if (!inGame) {
timer.stop();
}
}

private void locateApple() {

int r = (int) (Math.random() * RAND_POS);


apple_x = ((r * DOT_SIZE));

r = (int) (Math.random() * RAND_POS);


apple_y = ((r * DOT_SIZE));
}

@Override
public void actionPerformed(ActionEvent e) {

if (inGame) {

checkApple();
checkCollision();
move();
}

repaint();
}

private class TAdapter extends KeyAdapter {

@Override
public void keyPressed(KeyEvent e) {

int key = e.getKeyCode();

if ((key == KeyEvent.VK_LEFT) && (!rightDirection)) {


leftDirection = true;
upDirection = false;
downDirection = false;
}
if ((key == KeyEvent.VK_RIGHT) && (!leftDirection)) {
rightDirection = true;
upDirection = false;
downDirection = false;
}

if ((key == KeyEvent.VK_UP) && (!downDirection)) {


upDirection = true;
rightDirection = false;
leftDirection = false;
}

if ((key == KeyEvent.VK_DOWN) && (!upDirection)) {


downDirection = true;
rightDirection = false;
leftDirection = false;
}
}
}
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy