import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Game {
public static void main(String args[]) {
GameSnake gs = new GameSnake();
}
}
class GameSnake implements KeyListener {
JLabel jlabel;
JPanel jpanel;
JFrame jframe;
static int panelWidth = 294;
static int panelHeight = 450;
int rectX = 15;
int rectY = 15;
Snake snake;
Node n;
public GameSnake() {
jframe=new JFrame("̰³ÔÉßDEMO!");
jframe.setLayout(new BorderLayout());
Container cp=jframe.getContentPane();
jlabel=new JLabel("welcome");
jlabel.setText("Welcome my friend! Enjoy your self!");
cp.add(jlabel,BorderLayout.NORTH);
jpanel=new JPanel();
jpanel.setLayout(new BorderLayout());
cp.add(jpanel,BorderLayout.CENTER);
jframe.pack();
snake = new Snake(this, panelWidth / rectX, panelHeight / rectY);
setBackground(Color.WHITE);
setSize(panelWidth, panelHeight);
setFocusable(true);
addKeyListener(this);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
LinkedList list = Snake.snakeList;
Iterator it = list.iterator();
g2.setColor(Color.black);
while (it.hasNext()) {
n = (Node) it.next();
drawNode(g2, n);
}
g2.setColor(Color.ORANGE);
Node f = snake.food;
drawNode(g2, f);
snake.drawMap(g2);// »æÖƵØÍ¼
}
public void keyPressed(KeyEvent e) {
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_ENTER) {
begin();
} else if (keycode == KeyEvent.VK_UP) {
snake.changeDirection(Snake.up);
} else if (keycode == KeyEvent.VK_DOWN) {
snake.changeDirection(Snake.down);
} else if (keycode == KeyEvent.VK_LEFT) {
snake.changeDirection(Snake.left);
} else if (keycode == KeyEvent.VK_RIGHT) {
snake.changeDirection(Snake.right);
} else if (keycode == KeyEvent.VK_S) {
Snake.run = false;
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void drawNode(Graphics2D g, Node n) {
g.fillRect(n.x * rectX, n.y * rectY, rectX - 2, rectY - 2);
}
public void begin() {
Snake.run = true;
SnakeThread thread = new SnakeThread(snake);
thread.start();
}
public void repaint(){
int score=snake.getScore();
jlabel.setText("ÄúµÄµÃ·ÖÊÇ£º"+score);
}
}
class Node {
int x;
int y;
public Node(int x, int y) {
this.x = x;
this.y = y;
}
}
class SnakeThread extends Thread {
Snake snake;
public SnakeThread(Snake s) {
snake = s;
}
public void run() {
int interval=200;