import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.applet.*;
SnakeMap sm;
Snake snake = new Snake();
public SnakeMap(){
sm = this;
//构造组件
newGame.
setBackground(new Color(168,
132,
98));
newGame.
setForeground(new Color(128,
64,
0));
newGame.
setFont(new Font("华文行楷",
1,
30 ));
stopGame.
setBackground(new Color(168,
132,
98));
stopGame.
setForeground(new Color(128,
64,
0));
stopGame.
setFont(new Font("华文行楷",
1,
30 ));
jlScore.
setForeground(new Color(128,
64,
0));
jlScore.
setFont(new Font("华文行楷",
1,
22 ));
//JLabel jlHard = new JLabel("难度");
//jlHard.setForeground(new Color(128,64,0));
//jlHard.setFont(new Font("华文行楷",1,22 ));
//JSlider slider = new JSlider(5,20);
//slider.setBackground(new Color(168,132,98));
//slider.setSnapToTicks(true);
//slider.setPaintTicks(false);
//slider.setMajorTickSpacing(0);
//slider.setMinorTickSpacing(0);
//设定布局
setLayout(null);
//添加组件
add(jlTitle);
jlTitle.setBounds(0,0,800,70);
add(newGame);
newGame.setBounds(40, 120, 120, 40);
add(jlScore);
jlScore.setBounds(30,210,100,80);
//add(jlHard);
//jlHard.setBounds(30,220,70,40);
add(stopGame);
stopGame.setBounds(40,320,120,40);
add(jlLgio);
jlLgio.setBounds(15,370,180,230);
add(jlMap);
jlMap.setBounds(210,80,580,480);
//add(slider);
//slider.setBounds(100,230,100,20);
//设置窗体颜色
this.
setBackground(new Color(168,
132,
98));
//设置监听器
//newGame.setEnabled(false);
if(snake.start == false && snake.failed == true){
music();
snake.setup();
snake.start = true;
requestFocus(true);
}
if(snake.start == true){
requestFocus(true);
}
if(snake.start == false && snake.failed == false){
snake.setup();
snake.start = true;
snake.failed = true;
requestFocus(true);
}
}
});
}
});
//添加键盘监听
if(snake.start && snake.failed){
if(e.
getKeyCode() == KeyEvent.
VK_UP && snake.
j !=20 && snake.
isMove == false){
snake.j = -20;
snake.i = 0;
snake.isMove = true;
}
if(e.
getKeyCode() == KeyEvent.
VK_DOWN && snake.
j != -20 && snake.
isMove == false){
snake.j = 20;
snake.i = 0;
snake.isMove = true;
}
if(e.
getKeyCode() ==KeyEvent.
VK_LEFT && snake.
i != 20 && snake.
isMove == false){
snake.i = -20;
snake.j = 0;
snake.isMove = true;
}
if(e.
getKeyCode() == KeyEvent.
VK_RIGHT && snake.
i != -20 && snake.
isMove == false){
snake.i = 20;
snake.j = 0;
snake.isMove = true;
}
if(e.
getKeyCode() == KeyEvent.
VK_SPACE && snake.
pause == true)
snake.pause = false;
else if(e.
getKeyCode() == KeyEvent.
VK_SPACE && snake.
pause == false){
snake.pause = true;
thread2.start();
requestFocus(true);
}
}
}
});
thread.start();
}
public void run(){
while(snake.pause){
snake.move();
repaint();
try{
Thread.
sleep(400 - 50*snake.
speed);
}
}
/*if(snakex[0] == 370 && snakey[0] == 400){
snakex[0] = 610;
snakey[0] = 280;
}
else if(snakex[0] == 610 && snakey[0] == 280){
snakex[0] = 370;
snakey[0] = 400;
}*/
public void music(){
try{
URI uri = f.toURI();
aau.loop();
e.printStackTrace();
}
}
//调用paint方法
super.paint(g);
//画出地图 左上角(210,80) 右下角(790,560)
g.drawRect(200,70,600,500);
g.drawRect(210,80,580,480);
g.fillRect(200,70,600,10);
g.fillRect(200,70,10,500);
g.fillRect(200,560,600,10);
g.fillRect(790,70,10,500);
//画出蛇、食物
if(snake.start && snake.failed){
eatIcon.paintIcon(this , g , snake.food.eatx , snake.food.eaty);
heidong.paintIcon(this , g , 370 , 400);
heidong.paintIcon(this , g , 610 , 280);
g.
setColor(new Color(255,
0,
0));
g.fillOval(snake.snakex[0] , snake.snakey[0] , 20 , 20);
for(int m = 1 ; m < snake.len ; m ++){
g.fillOval(snake.snakex[m] , snake.snakey[m] , 20 , 20);
}
g.
setColor(new Color(128,
64,
0));
g.
setFont(new Font("华文行楷",
Font.
BOLD,
30));
g.drawString(""+snake.score, 100, 260);
}
if (!snake.failed){
g.
setColor(new Color(128,
64,
0));
g.
setFont(new Font("华文行楷",
Font.
BOLD,
30));
g.drawString(""+snake.score, 100, 200);
g.
setColor(new Color(168,
132,
98));
g.
setFont(new Font("arial",
Font.
BOLD,
30));
g.drawString("Game Over ! Press start to restart", 200, 300);
}
}
}