代码↓↓
package A;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
public class A implements ActionListener,Runnable{
B B;B b=new B();
JFrame A=new JFrame("贪吃蛇");{//游戏框架、按钮
b.setj(b.getj());
A.setSize(800,600);
A.setLocation(500,100);
B =new B();
A.add(B);A.add(b.getj());
(b.getj()).setText("分数: "+0);
A.setLayout(null);
A.addKeyListener(B);;
A.setFocusable(true);}
static JButton JMP1=new JButton("开始");{
JMP1.setBounds(0,10,90,40);A.add(JMP1);
JMP1.addActionListener(this);
}
JButton JMP2=new JButton("暂停");{
JMP2.setBounds(100,10,90,40);A.add(JMP2);
JMP2.addActionListener(this);
A.setVisible(true);
A.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] ags){
A a=new A();new B();Thread t=new Thread(a);t.start();
}
static int kaiguang;
public void actionPerformed(ActionEvent e) {
if(e.getSource()==JMP2){if(B.kaiguan!=2){kaiguang=1;JMP1.setLabel("继续");}JMP2.setFocusable(false); }
if(e.getSource()==JMP1){if(B.kaiguan!=2){kaiguang=0;JMP1.setLabel("开始");}else{B.kaiguan=0;B.chi=1;B.x=50;B.y=50;JMP1.setLabel("开始");}JMP1.setFocusable(false);}
}
public void run(){
while(true){
if(B.kaiguan==2){(b.getj()).setText("成绩: "+B.chi);}else{(b.getj()).setText("分数: "+B.chi);}
try {
Thread.sleep(250);
} catch (InterruptedException e) {
return;
}
}
}
}
class B extends JPanel implements KeyListener{//游戏界面、蛇、食物
int[] chx=new int[1000];int[] chy=new int[1000];//身体容器
int you=1,xia,zuo,shang=0;//方向函数
static int x=20,y=20,xx=50,yy=50,chi=1,xxx=50,yyy=50;//身体,食物方位
int i=1,ii=0,iii=1,d=0;//数量函数(身体)
static int kaiguan=0;//失败开关
Random rr=new Random();
public JTextField j=new JTextField();
public JTextField getj(){return j;}
public void setj(JTextField j){
j.setBackground(Color.WHITE);
j.setSize(200,40);
j.setLocation(200,10);
j.setEnabled(false);
j.setFont(new Font("宋体",Font.BOLD,25));
}
public B(){
setSize(720,420);
setLocation(30,80);
setBackground(Color.WHITE);
}
public void keyPressed(KeyEvent a){
if(a.getKeyCode()==KeyEvent.VK_UP&&xia!=1){xia=zuo=you=0;shang=1;}else{
if(a.getKeyCode()==KeyEvent.VK_DOWN&&shang!=1){you=zuo=shang=0;xia=1;}
else{if(a.getKeyCode()==KeyEvent.VK_RIGHT&&zuo!=1){xia=shang=zuo=0;you=1;}
else{if(a.getKeyCode()==KeyEvent.VK_LEFT&&you!=1){you=xia=shang=0;zuo=1;}}}}
}
public void keyReleased(KeyEvent a){}
public void keyTyped(KeyEvent a) {}
public void paint(Graphics g){
if(kaiguan!=A.kaiguang&&kaiguan!=2){kaiguan=A.kaiguang;}
repaint();
if(kaiguan==0){
if(you==1){x=x+10;if(x<=0||x>=720){if(x<=0){x=720;}else{x=0;}};if(x==xx&&y==yy){xx=rr.nextInt(72);yy=rr.nextInt(42);xx=xx*10;yy=yy*10;chi=chi+1;}}else{
if(zuo==1){x=x-10;if(x<=0||x>=720){if(x<=0){x=720;}else{x=0;}};if(x==xx&&y==yy){xx=rr.nextInt(72);yy=rr.nextInt(42);xx=xx*10;yy=yy*10;chi=chi+1;}}else{
if(xia==1){y=y+10;if(y<=0||y>=420){if(y<=0){y=420;}else{y=0;}};if(x==xx&&y==yy){xx=rr.nextInt(72);yy=rr.nextInt(42);xx=xx*10;yy=yy*10;chi=chi+1;}}else{
if(shang==1){y=y-10;if(y<=0||y>=420){if(y<=0){y=420;}else{y=0;}};if(x==xx&&y==yy){xx=rr.nextInt(72);yy=rr.nextInt(42);xx=xx*10;yy=yy*10;chi=chi+1;}}}}}
super.paint(g);
g.fillRect(x,y,10,10);
if(d!=200){d=d+1;chx[d]=x;chy[d]=y;if(d>100){ii=ii+1;chx[ii]=chx[d];chy[ii]=chy[d];}}else{d=ii+1;ii=0;chx[d]=x;chy[d]=y;}
iii=d-chi;for(i=d;i!=iii;i--){if(chx[i]==x&&chy[i]==y&&i<d){kaiguan=2;A.JMP1.setLabel("重新");};g.fillRect(chx[i],chy[i],10,10);}
if(xx<=10||yy<=10){if(xx<=10){xx=xx+10;}else{yy=yy+10;}}
g.fillRect(xx,yy,10,10);
try {
Thread.sleep(150);
} catch (InterruptedException e) {
return;
}
}else{
try {
super.paint(g);
g.fillRect(x,y,10,10);
iii=d-chi;for(i=d;i!=iii;i--){g.fillRect(chx[i],chy[i],10,10);}
g.fillRect(xx,yy,10,10);
Thread.sleep(150);
} catch (InterruptedException e) {
return;
}}
}
}