import javax.swing.JFrame;
public class snake extends JFrame {
public snake() {
add(new Board());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(320, 340);
setLocationRelativeTo(null);
setTitle("Snake");
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new Snake();
}
}

This is Board.java file:

import java.awt.Color;
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 WIDTH = 300;
private final int 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 int x[] = new int[ALL_DOTS];
private int y[] = new int[ALL_DOTS];
private int dots;
private int apple_x;
private int apple_y;
private boolean left = false;
private boolean right = true;
private boolean up = false;
private boolean down = false;
private boolean inGame = true;
private Timer timer;
private Image ball;
private Image apple;
private Image head;
public Board() {
addKeyListener(new TAdapter());
setBackground(Color.black);
ImageIcon iid = new ImageIcon(this.getClass().getResource("dot.png"));
ball = iid.getImage();
ImageIcon iia = new ImageIcon(this.getClass().getResource("apple.png"));
apple = iia.getImage();
ImageIcon iih = new ImageIcon(this.getClass().getResource("head.png"));
head = iih.getImage();
setFocusable(true);
initGame();
}
public 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();
}
public void paint(Graphics g) {
super.paint(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();
g.dispose();
} else {
gameOver(g);
}
}
public void gameOver(Graphics g) {
String msg = "Game Over";
Font small = new Font("Helvetica", Font.BOLD, 14);
FontMetrics metr = this.getFontMetrics(small);
g.setColor(Color.white);
g.setFont(small);
g.drawString(msg, (WIDTH - metr.stringWidth(msg)) / 2,
HEIGHT / 2);
}
public void checkApple() {
if ((x[0] == apple_x) && (y[0] == apple_y)) {
dots++;
locateApple();
}
}
public void move() {
for (int z = dots; z > 0; z--) {
x[z] = x[(z - 1)];
y[z] = y[(z - 1)];
}
if (left) {
x[0] -= DOT_SIZE;
}
if (right) {
x[0] += DOT_SIZE;
}
if (up) {
y[0] -= DOT_SIZE;
}
if (down) {
y[0] += DOT_SIZE;
}
}
public 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] > HEIGHT) {
inGame = false;
}
if (y[0] < 0) {
inGame = false;
}
if (x[0] > WIDTH) {
inGame = false;
}
if (x[0] < 0) {
inGame = false;
}
}
public 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));
}
public void actionPerformed(ActionEvent e) {
if (inGame) {
checkApple();
checkCollision();
move();
}
repaint();
}
private class TAdapter extends KeyAdapter {
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if ((key == KeyEvent.VK_LEFT) && (!right)) {
left = true;
up = false;
down = false;
}
if ((key == KeyEvent.VK_RIGHT) && (!left)) {
right = true;
up = false;
down = false;
}
if ((key == KeyEvent.VK_UP) && (!down)) {
up = true;
right = false;
left = false;
}
if ((key == KeyEvent.VK_DOWN) && (!up)) {
down = true;
right = false;
left = false;
}
}
}
}
}
snake.java:16: class, interface, or enum expected
This is Board.java file:
^
snake.java:18: class, interface, or enum expected
import java.awt.Font;
^
snake.java:19: class, interface, or enum expected
import java.awt.FontMetrics;
^
snake.java:20: class, interface, or enum expected
import java.awt.Graphics;
^
snake.java:21: class, interface, or enum expected
import java.awt.Image;
^
snake.java:22: class, interface, or enum expected
import java.awt.Toolkit;
^
snake.java:23: class, interface, or enum expected
import java.awt.event.ActionEvent;
^
snake.java:24: class, interface, or enum expected
import java.awt.event.ActionListener;
^
snake.java:25: class, interface, or enum expected
import java.awt.event.KeyAdapter;
^
snake.java:26: class, interface, or enum expected
import java.awt.event.KeyEvent;
^
snake.java:27: class, interface, or enum expected
import javax.swing.ImageIcon;
^
snake.java:28: class, interface, or enum expected
import javax.swing.JPanel;
^
snake.java:29: class, interface, or enum expected
import javax.swing.Timer;
^
snake.java:180: class, interface, or enum expected
}→
^
14 errors

Recommended Answers

All 6 Replies

Hello Everybody,

I'm Very new to this Java World struggling to Correct the Above Code Error,

So I request Any one Can Help Me To find & Resolve the Issue associated With the Program

Rgds,
Srinivasan.N

The error message is for a statement at line 16, but the code you posted only has 15 lines. Where are lines 16 through 180 in the snake class?

When you copied and pasted the code you did NOT separate the classes into separate files.

Member Avatar for hfx642

First guess...
I would say that you have everything in ONE file.
Separate them into TWO different files and compile them separately.
Your board.java file first, then you snake.java file second.

I made a snake game as well so if you would like to inspect my code after you fix yours to see how you could improve efficiency, just message me.

First guess...
I would say that you have everything in ONE file.
Separate them into TWO different files and compile them separately.
Your board.java file first, then you snake.java file second.

ya i'll do it now

@sirlink99 .. first of all sorry i mistakenly pressed bad post reply..
and could you send me your program please .. i may could work on that

I made a snake game as well so if you would like to inspect my code after you fix yours to see how you could improve efficiency, just message me.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.