间隔
private boolean b = true;
private int fen = 0; //初始分数
private int currentValue = 100; //进程条初始可见值
private Random rn = new Random();
private JLabel showFen;
private JMenuBar jmb ; //菜单栏
private JProgressBar jpb; //进程条
public GameMain(){
jf = new JFrame("Game");
jpb = new JProgressBar();
jf.setBounds(160, 120, 500, 420);
jpb.setValue(currentValue); //血条初始值为100
jpb.setMinimum(0); //血条最小值为0
jpb.setStringPainted(true); //能在血条上显示文字的字符串
mp = new MyPanel();
jf.add(mp);
showFen = new JLabel(""+fen);
jf.add(showFen,BorderLayout.NORTH);
jf.add(jpb,BorderLayout.SOUTH);
jmb = new JMenuBar();
JMenu jm1 = new JMenu("File");
JMenuItem jmi1 = new JMenuItem("Start");
JMenuItem jmi2 = new JMenuItem("Stop");
JMenuItem jmi3 = new JMenuItem("Exit");
JMenu jm3 = new JMenu("New");//需要包含子菜单的菜单
jm1.add(jm3);
jm1.add(jmi1);
jm1.add(jmi2);
jm1.addSeparator();//分割线
jm1.add(jmi3);
//New中的子菜单
JMenuItem jmi5 = new JMenuItem("Class");
JMenuItem jmi6 = new JMenuItem("File");
JMenuItem jmi7 = new JMenuItem("Package");
jm3.add(jmi5);
jm3.add(jmi6);
jm3.add(jmi7);
JMenu jm2 = new JMenu("Edit");
jmb.add(jm1);
jmb.add(jm2);
jf.setJMenuBar(jmb);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setResizable(false);//窗口大小不可调整
jf.setVisible(true);
/*
* 匿名类,根据方向键给sign赋值
*/
jf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if(sign!=3 &;&; code == KeyEvent.VK_DOWN){
sign = 4;
}else if(sign != 4 &;&; code== KeyEvent.VK_UP){
sign = 3;
}else if(sign != 2 &;&; code == KeyEvent.VK_RIGHT){
sign = 1;
}else if(sign != 1 &;&; code == KeyEvent.VK_LEFT){
sign = 2;
}
}
});
//start按钮的监听
jmi1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
b = true;
MyThread mt = new MyThread()
;
mt.start();
}
});
//stop按钮的监听
jmi2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
b = false;
}
});
}
/*
* 蛇的move
*/
public void move(){
Snake sk = mp.sk;
List
slist = sk.getSnake();
int x = slist.get(0).x;//蛇尾的x坐标
int y = slist.get(0).y;
//后一格=前一格
for(int i=0;i Rectangle rt1 = slist.get(i);
Rectangle rt2 = slist.get(i+1);
rt1.x = rt2.x;
rt1.y = rt2.y;
}
//根据方向的转变判断蛇头的做坐标变换
switch(sign){
case 1:
Rectangle rt1 = slist.get(slist.size()-1);
rt1.x += sk.WIDTH;
break;
case 2:<