當前位置:遊戲中心平台 - 遊戲盒子 - 誰能告訴我蛇遊戲的所有代碼?

誰能告訴我蛇遊戲的所有代碼?

//包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之類的句子也可以去掉。可以正常運行。

  • 上一篇:鈥滃Τ鈥濋亰鎴茬帇浜岄噸鍞辩増鐨勭緟棣櫦闊硘大學生在農村創業可以做什麽?10農村創業點子
  • 下一篇:
  • copyright 2024遊戲中心平台