




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇泰州市高港實(shí)驗(yàn)校2025年初三聯(lián)合模擬數(shù)學(xué)試題含解析
- 江蘇揚(yáng)州市2025屆高三八月模擬生物試題含解析
- 山東師范大學(xué)附中2025屆高三摸底調(diào)研測(cè)試物理試題含解析
- 山東省龍口市第五中學(xué)2025屆初三摸底數(shù)學(xué)試題含解析
- 浙江省溫州市八中2025屆校初三第三次模擬數(shù)學(xué)試題含解析
- 產(chǎn)品代售合同范本
- 四川省成都經(jīng)開(kāi)實(shí)中2025年高三下學(xué)期自測(cè)卷(二)線下考試數(shù)學(xué)試題含解析
- 私人住宅地基購(gòu)買(mǎi)合同
- 設(shè)備采購(gòu)分期付款協(xié)議合同
- 銷售合同附加協(xié)議書(shū)范本
- 【電動(dòng)汽車兩檔AMT自動(dòng)變速器傳動(dòng)結(jié)構(gòu)計(jì)算設(shè)計(jì)9800字(論文)】
- 肩關(guān)節(jié)鏡麻醉管理
- 期中檢測(cè)題(含答案)-2024-2025學(xué)年八年級(jí)下學(xué)期道德與法治
- 短期留學(xué)協(xié)議書(shū)范本
- 2025年安徽國(guó)際商務(wù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)附答案
- 一年級(jí)科學(xué)下冊(cè)教案全冊(cè)2024完美版
- 2025-2030中國(guó)神經(jīng)外科手術(shù)導(dǎo)航軟件行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 2025年第三屆天揚(yáng)杯建筑業(yè)財(cái)稅知識(shí)競(jìng)賽題庫(kù)附答案(1301-1400題)
- 《冠心病》課件(完整版)
- 幼兒園紅色小故事PPT:抗日小英雄王二小的故事
- 三輪車駕駛安全操作規(guī)程(機(jī)動(dòng)三輪車和電動(dòng)三輪車)
評(píng)論
0/150
提交評(píng)論