谁能告诉我蛇游戏的所有代码?

//包main

导入Java . awt . color;

导入Java . awt . event . action event;

导入Java . awt . event . action listener;

导入Java . awt . event . key event;

导入Java . awt . event . key listener;

导入Java . awt . event . window adapter;

导入Java . awt . event . window event;

导入Java . io . buffered reader;

导入Java . io . file inputstream;

导入Java . io . file output stream;

导入Java . io . inputstreamreader;

导入javax . swing . image icon;

导入javax . swing . jframe;

导入javax . swing . jlabel;

导入javax . swing . jmenu;

导入javax . swing . jmenubar;

导入javax . swing . jmenuitem;

导入javax . swing . joptionpane;

导入javax . swing . jpanel;

公共类TanChiShe实现KeyListener、ActionListener{

/**

* @param args

*/

int max = 300//最大蛇形长度

final int JianJu = 15;//设置蛇的移动网格间距(最大窗口32*28网格)。

字节方想= 4;//控制蛇的移动方向,最初是向右。

int time = 500//蛇移动的间隔

int Jian time = 2;//吃减少的时间

int x,y;//根据网格计算出蛇移动的坐标。

int x2,y2;//暂时存储蛇头的坐标。

int jiFenQi = 0;//积分器

boolean isRuned = false//只有在未运行时才能设置级别。

boolean out = false//没开始跑?

布尔run = false//暂停操作

String JiBie = " intermediate

JFrame f = new JFrame(" Snake v 1.0 ");

JPanel show = new JPanel();

JLabel Message = new JLabel("等级:中级蛇长:5次500ms分数:00 ");

//JButton play = new JButton(" start ");

JLabel sheTou

JLabel shiWu

JLabel sheWei[]= new JLabel[max];

静态int diJi = 4;//蛇尾应该加哪个下标?

image icon Shang = new image icon(" tu pian \ \ isshetouup . png ");//生成四个蛇头图案。

image icon Xia = new image icon(" tu pian \ \ isshetoudown . png ");

image icon Zhuo = new image icon(" tu pian \ \ isshetouleft . png ");

image icon you = new image icon(" tu pian \ \ isshetouright . png ");

JMenuBar JMB = new JMenuBar();

JMenu file = new JMenu("开始游戏");

JMenuItem play = new JMenuItem("开始游戏");

JMenuItem pause = new JMenuItem("暂停游戏");

JMenu hard = new JMenu(“游戏难度”);

JMenuItem Gao = new JMenuItem(" advanced ");

JMenuItem zhong = new JMenuItem(" intermediate ");

JMenuItem di = new JMenuItem("低级");

JMenu about = new JMenu(" about ");

JMenuItem GF = new JMenuItem("※高分榜");

JMenuItem ZZ = new JMenuItem("关于作者");

JMenuItem YX = new JMenuItem("关于游戏");

JMenuItem QK = new JMenuItem("空记录");

静态TanChiShe TCS = new TanChiShe();

公共静态void main(String[] args) {

//TanChiShe TCS = new TanChiShe();

TCS . f();

}

公共void f(){

f.setBounds(250,100,515,530);

f.setLayout(空);

f . setalwaysontop(true);//窗口总是停留在最前面。

f.setBackground(新颜色(0,0,0));

f . setdefaultcloseoperation(0);

f . setresizable(false);

f . set visible(true);

// f.getContentPane()。setBackground(颜色。黑色);

f . addwindowlistener(new window adapter(){

public void window closing(window event e){

system . exit(0);//退出程序

}

});

f .塞吉梅努巴尔(JMB);

JMB.add(文件);

file.add(播放);

file.add(暂停);

JMB.add(硬);

hard.add(高);

hard.add(钟);

hard . add(di);

JMB.add(关于);

about . add(GF);

gf . set foreground(color . blue);

about . add(ZZ);

about . add(YX);

about . add(QK);

qk . set foreground(color . red);

f.add(显示);

show.setBounds(0,f.getHeight()-92,f.getWidth(),35);

//show . set background(color . green);

// f.add(播放);

// play.setBounds(240,240,80,25);

play . addactionlistener(this);

pause . addactionlistener(this);

Gao . addactionlistener(this);

zhong.addActionListener(本);

di . addactionlistener(this);

gf . addactionlistener(this);

ZZ . addactionlistener(this);

yx . addactionlistener(this);

qk . addactionlistener(this);

show.add(消息);

message . set foreground(color . blue);

f.addKeyListener(这个);

//show . addkey listener(this);

play.addKeyListener(这个);

sheChuShi();

}

Public void sheChuShi(){// snake初始化

sheTou = new JLabel(你);//用右图初始化蛇头。

f.add(蛇头);

sheTou.setBounds(JianJu*0,JianJu*0,JianJu,JianJu);

//system . out . println(" is here ");

shiWu = new JLabel(“■”);

f.add(十五);

shiwu . set bounds(10 *剑居,10 *剑居,剑居,剑居);

for(int I = 0;我& lt= diJii++) {

sheWei[I]= new JLabel(■);

f . add(sheWei[I]);

蛇尾[我]。set bounds(-1 *剑居,0 *剑居,剑居,剑居);

}

while(true){

if(out == true){

云星();

打破;

}

尝试{

thread . sleep(200);

}catch(Exception ex){

ex . printstacktrace();

}

}

}

Public void sheJiaChang(){//蛇的长度增加了。

if(diJi & lt;最大){

sheWei[++ diJi]= new JLabel(new image icon(" tuPian \ \ isshewei . jpg "));

f . add(sheWei[diJi]);

蛇尾[地极]。setBounds(sheWei[diJi-1]。getX(),sheWei[diJi-1]。getY()、JianJu、JianJu);

//system . out . println(" diJi "+diJi);

}

}

public void penghuanjiance(){//检测蛇的碰撞。

if(shetou . getx()& lt;0 | | shetou . gety()& lt;0 ||

shetou . getx()& gt;f . getwidth()-15 | | shetou . gety()& gt;f.getHeight()-105 ){

game over();

//system . out . println(" game over ");

}

if(shetou . getx()= = shiwu . getx()& amp;& ampsheTou.getY() == shiWu.getY()){

out: while(true){

shiwu . set location((int)(math . random()* 32)* JianJu,(int)(math . random()* 28)* JianJu);

for(int I = 0;我& lt= diJii++){

if(shiWu.getX()!= sheWei[i]。getX()& amp;& ampshiWu.getY()!=sheWei[i]。getY()

& amp& ampsheTou.getX()!= shiwu . getx()& amp;& ampsheTou.getY()!= shiWu.getY()){//如果食物不在蛇上,退出循环,成功产生食物。

爆发;

}

}

}

佘家场();

//system . out . println(" ate one ");

如果(时间& gt100 ){

time-= Jian time;

}

else{}

message . settext(" Level:"+JiBie+" Snake Length:"+(diJi+2)+" Time:"+Time+" ms Score:"+(jiFenQi+= 10)+";

}

for(int I = 0;我& lt= diJii++){

if(sheTou.getX() == sheWei[i]。getX()& amp;& ampsheTou.getY() == sheWei[i]。getY()){

game over();

// System.out.println("吃尾");

}

}

}

public void yunXing(){

while(true){

while(运行){

If(方想== 1){//

y-= 1;

}

If(方想== 2){//

y+= 1;

}

If(方想== 3){// left

x-= 1;

}

If(方想== 4){//右

x+= 1;

}

x2 = shetou . getx();

y2 = shetou . gety();

sheTou.setLocation(x*JianJu,y * JianJu);//设置黑鱼的网格数*间隔。

for(int I = diJi;我& gt=0;我- ){

if(i==0){

蛇尾[我]。setLocation(x2,y2);

//system . out . println(I+" "+shetou . getx()+" "+shetou . gety());

}

否则{

蛇尾[我]。setLocation(sheWei[i-1]。getX(),sheWei[i-1]。getY());

//system . out . println(I+" "+sheWei[I])。getX()+" "+sheWei[i]。getY());

}

}

pengzhuanjance();

尝试{

thread . sleep(time);

}catch(异常e){

e . printstacktrace();

}

}

message . settext(" Level:"+JiBie+" Snake Length:"+(diJi+2)+" Time:"+Time+" ms Score:"+(jiFenQi+= 10)+";

尝试{

thread . sleep(200);

}catch(异常e){

e . printstacktrace();

}

}

}

公共void gameOver(){//游戏结束时处理。

Int in =选项窗格。ShowConfirmDiarog (f,“游戏结束!\n是否要保存分数”,“提示”,JOptionPane。YES _ NO _ OPTION);

if(in == JOptionPane。是_选项){

//system . out . println(" YES ");

strings =选项窗格。ShowinputDialog (f,"输入你的名字:");

尝试{

file inputstream fis = new file inputstream(" Gao fen . ini ");//先读取前面的数据,再添加到写入的数据中。

InputStreamReader isr =新的InputStreamReader(fis);

BufferedReader br =新buffered reader(ISR);

字符串s2,setOut =

while((s2=br.readLine())!= null){

setOut = setOut+S2+" \ n ";

}

file output stream fos = new file output stream(" Gao fen . ini ");//输出到文件流

s = setOut+s+":"+jiFenQi+" \ n ";

fos . write(s . getbytes());

}catch(异常e){}

}

system . exit(0);

}

public void key typed(key event arg 0){

// TODO自动生成方法存根

}

公共void按键(KeyEvent arg0) {

//system . out . println(arg 0 . getsource());

If (arg0。getkeycode () = = keyevent。vk _ up){//按下上下方向的数值进行相应改变。

如果(方想!= 2){

方想= 1;

// sheTou.setIcon(尚);//设置蛇的方向

}

//system . out . println(" UP ");

}

if(arg0.getKeyCode() == KeyEvent。VK_DOWN){

如果(方想!= 1){

方想= 2;

//shetou . seticon(Xia);

}

//system . out . println(" DOWN ");

}

If (arg0。getkeycode () = = keyevent。vk _ left){//左右方向的值相应变化。

如果(方想!= 4){

方想= 3;

// sheTou.setIcon(卓);

}

//system . out . println(" LEFT ");

}

if(arg0.getKeyCode() == KeyEvent。VK _右){

如果(方想!= 3){

方想= 4;

// sheTou.setIcon(你);

}

//system . out . println(" RIGHT ");

}

}

public void key released(key event arg 0){

// TODO自动生成方法存根

}

public void action performed(action event arg 0){

// TODO自动生成方法存根

JMenuItem JI =(JMenuItem)arg 0 . getsource();

if(JI == play){

out = true

run = true

isRuned = true

Gao . set enabled(false);

zhong . set enabled(false);

di . set enabled(false);

}

if(JI == pause){

run = false

}

if(is rund = = false){//){//只有在游戏还没有运行的情况下才能设置关卡。

如果(高)

时间= 200;

Jian time = 1;

JiBie = "高级";

message . settext(" Level:"+JiBie+" Snake Length:"+(diJi+2)+" Time:"+Time+" ms Score:"+jiFenQi);

}

if(JI == zhong){

时间= 400;

Jian time = 2;

JiBie = "中级";

message . settext(" Level:"+JiBie+" Snake Length:"+(diJi+2)+" Time:"+Time+" ms Score:"+jiFenQi);

}

if(JI == di){

时间= 500;

Jian time = 3;

JiBie = "低级";

message . settext(" Level:"+JiBie+" Snake Length:"+(diJi+2)+" Time:"+Time+" ms Score:"+jiFenQi);

}

}

if(JI == GF){

尝试{

file inputstream fis = new file inputstream(" Gao fen . ini ");

InputStreamReader isr =新的InputStreamReader(fis);

BufferedReader br =新buffered reader(ISR);

字符串s,setOut =

while((s=br.readLine())!= null){

setOut = setOut+s+" \ n ";

}

if(setout . equals(" "){

Joptionpane。显示消息对话框(f,“没有记录保存!”,“高分榜”,jooptionpane。信息_消息);

}

否则{

joptionpane . showmessagedialog(f,setOut);

}

}catch(异常e){

e . printstacktrace();

}

}

If(JI == ZZ){//关于作者

Joption窗格。显示消息对话框(f,“软件作者:沈\n地址:四川省绵阳市\ nqq:898513806 \ n邮箱:shenzhifeiok @ 126.com”,“关于作者”,Joption窗格。信息_。

}

If(JI == YX){//关于游戏

Joption窗格。显示消息对话框(f,“贪吃蛇游戏\ n游戏版本V1.0”,“关于游戏”,选项窗格。信息_消息);

}

如果(纪== QK){

尝试{

Int Select =选项窗格。ShowConfirmDiarog (f,"您确定要清空记录吗?",“空记录”,jooptionpane。yes _ option);

if(select == JOptionPane。是_选项){

String setOut =

file output stream fos = new file output stream(" Gao fen . ini ");//输出到文件流

fos . write(setout . getbytes());

}

}catch(异常ex){}

}

}

}

//我自己写的。本来里面有图片,但是我上传不了,就把图片去掉了,里面的ImageIcon之类的句子也可以去掉。可以正常运行。