Java貪吃蛇源碼(共6頁(yè))_第1頁(yè)
Java貪吃蛇源碼(共6頁(yè))_第2頁(yè)
Java貪吃蛇源碼(共6頁(yè))_第3頁(yè)
Java貪吃蛇源碼(共6頁(yè))_第4頁(yè)
Java貪吃蛇源碼(共6頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上Java貪吃蛇源代碼 import java.awt.*; import java.awt.event.*; public class GreedSnake /主類 /* * param args */ public static void main(String args) / TODO Auto-generated method stub new MyWindow(); class MyPanel extends Panel implements KeyListener,Runnable/自定義面板類,繼承了鍵盤(pán)和線程接口 Button snake; /定義蛇按鈕

2、 int shu=0; /蛇的節(jié)數(shù) int food; /食物數(shù)組 boolean result=true; /判定結(jié)果是輸 還是贏 Thread thread; /定義線程 static int weix,weiy; /食物位置 boolean t=true; /判定游戲是否結(jié)束 int fangxiang=0; /蛇移動(dòng)方向 int x=0,y=0; /蛇頭位置 MyPanel() setLayout(null); snake=new Button20; food=new int 20; thread=new Thread(this); for(int j=0;j<20;j+) fo

3、odj=(int)(Math.random()*99);/定義20個(gè)隨機(jī)食物 weix=(int)(food0*0.1)*60; /十位*60為橫坐標(biāo) weiy=(int)(food0%10)*40; /個(gè)位*40為縱坐標(biāo) for(int i=0;i<20;i+) snakei=new Button(); add(snake0); snake0.setBackground(Color.black); snake0.addKeyListener(this); /為蛇頭添加鍵盤(pán)監(jiān)視器 snake0.setBounds(0,0,10,10); setBackground(Color.cyan)

4、; public void run() /接收線程 while(t) if(fangxiang=0)/向右 try x+=10; snake0.setLocation(x, y);/設(shè)置蛇頭位置 if(x=weix&&y=weiy) /吃到食物 shu+; weix=(int)(foodshu*0.1)*60; weiy=(int)(foodshu%10)*40; repaint(); /重繪下一個(gè)食物 add(snakeshu); /增加蛇節(jié)數(shù)和位置 snakeshu.setBounds(snakeshu-1.getBounds(); thread.sleep(100); /

5、睡眠100ms catch(Exception e) else if(fangxiang=1)/向左 try x-=10; snake0.setLocation(x, y); if(x=weix&&y=weiy) shu+; weix=(int)(foodshu*0.1)*60; weiy=(int)(foodshu%10)*40; repaint(); add(snakeshu); snakeshu.setBounds(snakeshu-1.getBounds(); thread.sleep(100); catch(Exception e) else if(fangxiang

6、=2)/向上 try y-=10; snake0.setLocation(x, y); if(x=weix&&y=weiy) shu+; weix=(int)(foodshu*0.1)*60; weiy=(int)(foodshu%10)*40; repaint(); add(snakeshu); snakeshu.setBounds(snakeshu-1.getBounds(); thread.sleep(100); catch(Exception e) else if(fangxiang=3)/向下 try y+=10; snake0.setLocation(x, y);

7、if(x=weix&&y=weiy) shu+; weix=(int)(foodshu*0.1)*60; weiy=(int)(foodshu%10)*40; repaint(); add(snakeshu); snakeshu.setBounds(snakeshu-1.getBounds(); thread.sleep(100); catch(Exception e) int num1=shu; while(num1>1)/判斷是否咬自己的尾巴 if(snakenum1.getBounds().x=snake0.getBounds().x&&snaken

8、um1.getBounds().y=snake0.getBounds().y) t=false; result=false; repaint(); num1-; if(x<0|x>=this.getWidth()|y<0|y>=this.getHeight()/判斷是否撞墻 t=false; result=false; repaint(); int num=shu; while(num>0) /設(shè)置蛇節(jié)位置 snakenum.setBounds(snakenum-1.getBounds(); num-; if(shu=15) /如果蛇節(jié)數(shù)等于15則勝利 t=fal

9、se; result=true; repaint(); public void keyPressed(KeyEvent e) /按下鍵盤(pán)方向鍵 if(e.getKeyCode()=KeyEvent.VK_RIGHT)/右鍵 if(fangxiang!=1)/如果先前方向不為左 fangxiang=0; else if(e.getKeyCode()=KeyEvent.VK_LEFT) if(fangxiang!=0) fangxiang=1; else if(e.getKeyCode()=KeyEvent.VK_UP) if(fangxiang!=3) fangxiang=2; else if(

10、e.getKeyCode()=KeyEvent.VK_DOWN) if(fangxiang!=2) fangxiang=3; public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) public void paint(Graphics g) /在面板上繪圖 int x1=this.getWidth()-1; int y1=this.getHeight()-1; g.setColor(Color.red); g.fillOval(weix, weiy, 10, 10);/食物 g.drawRect(0, 0, x1

11、, y1); /墻 if(t=false&&result=false) g.drawString("GAME OVER!", 250, 200);/輸出游戲失敗 else if(t=false&&result=true) g.drawString("YOU WIN!", 250, 200);/輸出游戲成功 class MyWindow extends Frame implements ActionListener/自定義窗口類 MyPanel my; Button btn; Panel panel; MyWindow()

12、super("GreedSnake"); my=new MyPanel(); btn=new Button("begin"); panel=new Panel(); btn.addActionListener(this); panel.add(new Label("begin后請(qǐng)按Tab鍵選定蛇"); panel.add(btn); panel.add(new Label("按上下左右鍵控制蛇行動(dòng)"); add(panel,BorderLayout.NORTH); add(my,BorderLayout.CENTER); setBounds(100,100,610,500); setVisible(true); validate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論