#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2013
    Posts
    6
    Rep Power
    0

    Java 2d game help


    I am a beginner with java and I am trying to compile this:
    Code:
    package snake2;
    
    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();
        }
    }
    But it wont compile. The error I'm getting is: "Cannot find symbol: Class Board
    location: class snake2.Snake
    add(new Board());"

    The code for the Board class is:
    Code:
    package snake2;
    
    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;
                }
            }
        }
    }
    I would just like to know if I am doing anything wrong and if so a solution would be nice
  2. #2
  3. Contributing User
    Devshed Expert (3500 - 3999 posts)

    Join Date
    Aug 2010
    Location
    Eastern Florida
    Posts
    3,711
    Rep Power
    347
    Are the Board.java and Snake.java files in the snake2 folder?
    Does the classpath point to the folder that contains the snake2 folder when the javac program is executed?
    Using packages requires that the classpath point to the folder containing the start of the package.

    An easy solution is to remove the package statements.
  4. #3
  5. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2013
    Posts
    6
    Rep Power
    0
    Originally Posted by NormR
    Are the Board.java and Snake.java files in the snake2 folder?
    Does the classpath point to the folder that contains the snake2 folder when the javac program is executed?
    Using packages requires that the classpath point to the folder containing the start of the package.

    An easy solution is to remove the package statements.
    Thanks! Its working now

IMN logo majestic logo threadwatch logo seochat tools logo