Note
Note
25 11:06 PM
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.*;
Tile(int x, int y) {
this.x = x;
this.y = y;
}
}
int boardWidth;
int boardHeight;
int tileSize = 25;
//snake
Tile snakeHead;
ArrayList<Tile> snakeBody;
//food
Tile food;
Random random;
//game logic
int velocityX;
int velocityY;
Timer gameLoop;
velocityX = 1;
velocityY = 0;
//game timer
gameLoop = new Timer(100, this); //how long it takes to start timer,
milliseconds gone between frames
gameLoop.start();
}
//Food
g.setColor(Color.red);
// g.fillRect(food.x*tileSize, food.y*tileSize, tileSize, tileSize);
g.fill3DRect(food.x*tileSize, food.y*tileSize, tileSize, tileSize, true);
//Snake Head
g.setColor(Color.green);
// g.fillRect(snakeHead.x, snakeHead.y, tileSize, tileSize);
// g.fillRect(snakeHead.x*tileSize, snakeHead.y*tileSize, tileSize,
tileSize);
g.fill3DRect(snakeHead.x*tileSize, snakeHead.y*tileSize, tileSize,
tileSize, true);
//Snake Body
for (int i = 0; i < snakeBody.size(); i++) {
Tile snakePart = snakeBody.get(i);
// g.fillRect(snakePart.x*tileSize, snakePart.y*tileSize, tileSize,
tileSize);
g.fill3DRect(snakePart.x*tileSize, snakePart.y*tileSize, tileSize,
tileSize, true);
}
//Score
g.setFont(new Font("Arial", Font.PLAIN, 16));
if (gameOver) {
g.setColor(Color.red);
g.drawString("Game Over: " + String.valueOf(snakeBody.size()), tileSize
- 16, tileSize);
}
else {
g.drawString("Score: " + String.valueOf(snakeBody.size()), tileSize -
16, tileSize);
}
}
@Override
public void actionPerformed(ActionEvent e) { //called every x milliseconds by
gameLoop timer
move();
repaint();
if (gameOver) {
gameLoop.stop();
}
}
@Override
public void keyPressed(KeyEvent e) {
// System.out.println("KeyEvent: " + e.getKeyCode());
if (e.getKeyCode() == KeyEvent.VK_UP && velocityY != 1) {
velocityX = 0;
velocityY = -1;
}
else if (e.getKeyCode() == KeyEvent.VK_DOWN && velocityY != -1) {
velocityX = 0;
velocityY = 1;
}
else if (e.getKeyCode() == KeyEvent.VK_LEFT && velocityX != 1) {
velocityX = -1;
velocityY = 0;
}
else if (e.getKeyCode() == KeyEvent.VK_RIGHT && velocityX != -1) {
velocityX = 1;
velocityY = 0;
}
}
//not needed
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
}