谁能告诉我蛇游戏的所有代码?
导入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之类的句子也可以去掉。可以正常运行。