亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java swing框架實現貪吃蛇游戲

瀏覽:2日期:2022-08-19 13:25:05

本文實例為大家分享了java swing實現貪吃蛇游戲的具體代碼,供大家參考,具體內容如下

1、編寫main方法

package game;import java.awt.Graphics;import javax.swing.*;public class snakeMain extends JFrame { public snakeMain() { snakeWin win = new snakeWin(); add(win); setTitle('̰貪吃蛇v1.0'); setSize(435,390); setLocation(200, 200); setVisible(true); } public static void main(String[] args) { new snakeMain(); }}

2、編寫實體類

package game;public class snakeAct { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }

3、編寫主要程序

package game;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.util.List;public class snakeWin extends JPanel implements ActionListener,KeyListener,Runnable{ int fenShu=0,Speed=0; boolean start = false; int rx=0,ry=0; int eat1=0,eat2=0; JDialog dialog = new JDialog(); JLabel label = new JLabel('你掛了!你的分數'+fenShu+''); JButton ok = new JButton('T_T'); Random r = new Random(); JButton newGame,stopGame; List<snakeAct> list = new ArrayList<snakeAct>(); int temp=0; Thread nThread; public snakeWin() { newGame = new JButton('開始'); stopGame = new JButton('結束'); newGame.addActionListener(this); stopGame.addActionListener(this); this.addKeyListener(this); this.setLayout(new FlowLayout(FlowLayout.LEFT)); this.add(newGame); this.add(stopGame); dialog.setLayout(new GridLayout(2, 1)); dialog.add(label); dialog.add(ok); dialog.setSize(200, 200); dialog.setLocation(200, 200); dialog.setVisible(false); ok.addActionListener(this); } public void paintComponent(Graphics g){ super.paintComponent(g); g.drawRect(10, 40, 400, 300); g.drawString('分數'+fenShu, 150, 15); g.drawString('速度'+Speed, 150, 35); g.setColor(new Color(0, 255, 0)); if(start){ g.fillRect(10+rx*10, 40+ry*10, 10, 10); for (int i = 0; i < list.size(); i++) { g.setColor(new Color(0, 0, 255)); g.fillRect(10+list.get(i).getX()*10, 40+list.get(i).getY()*10, 10, 10); } } } public void actionPerformed(ActionEvent e) { if(e.getSource()==newGame){ newGame.setEnabled(false); start = true; rx=r.nextInt(40);ry=r.nextInt(30); snakeAct tempAct = new snakeAct(); tempAct.setX(20); tempAct.setY(15); list.add(tempAct); this.requestFocus(); nThread = new Thread(this); nThread.start(); repaint(); } if(e.getSource()==stopGame){ System.exit(0); } if(e.getSource()==ok){ list.clear(); start=false; newGame.setEnabled(true); dialog.setVisible(false); fenShu=0; Speed=0; repaint(); } } private void eat() { if (rx==list.get(0).getX()&&ry==list.get(0).getY()) { rx = r.nextInt(40);ry = r.nextInt(30); snakeAct tempAct = new snakeAct(); tempAct.setX(list.get(list.size()-1).getX()); tempAct.setY(list.get(list.size()-1).getY()); list.add(tempAct); fenShu = fenShu+100*Speed+10; eat1++; if(eat1-eat2>=4){ eat2=eat1; Speed++; } } } public void otherMove(){ snakeAct tempAct = new snakeAct(); for (int i = 0; i < list.size(); i++) { if (i==1) { list.get(i).setX(list.get(0).getX()); list.get(i).setY(list.get(0).getY()); }else if(i>1){ tempAct=list.get(i-1); list.set(i-1, list.get(i)); list.set(i, tempAct); } } } public void move(int x,int y){ if (minYes(x, y)) { otherMove(); list.get(0).setX(list.get(0).getX()+x); list.get(0).setY(list.get(0).getY()+y); eat(); repaint(); }else { nThread = null; label.setText('你掛了!你的分數'+fenShu+''); dialog.setVisible(true); } } public boolean minYes(int x,int y){ if (!maxYes(list.get(0).getX()+x,list.get(0).getY()+ y)) { return false; } return true; } public boolean maxYes(int x,int y){ if (x<0||x>=40||y<0||y>=30) { return false; } for (int i = 0; i < list.size(); i++) { if (i>1&&list.get(0).getX()==list.get(i).getX()&&list.get(0).getY()==list.get(i).getY()) { return false; } } return true; } public void keyPressed(KeyEvent e) { if(start){ switch (e.getKeyCode()) { case KeyEvent.VK_UP: move(0, -1); temp=1; break; case KeyEvent.VK_DOWN: move(0, 1); temp=2; break; case KeyEvent.VK_LEFT: move(-1, 0); temp=3; break; case KeyEvent.VK_RIGHT: move(1, 0); temp=4; break; default: break; } } } public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) {} public void run() { while (start) { switch (temp) { case 1: move(0, -1); break; case 2: move(0, 1); break; case 3: move(-1, 0); break; case 4: move(1, 0); break; default: break; } repaint(); try { Thread.sleep(300-30*Speed); } catch (InterruptedException e) { e.printStackTrace(); } } }}

4、效果圖

java swing框架實現貪吃蛇游戲

更多有趣的經典小游戲實現專題,分享給大家:

C++經典小游戲匯總

python經典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經典游戲 玩不停

javascript經典小游戲匯總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 娇小被黑人巨嗷嗷叫 | 日韩电影中文字幕 | 日韩一区二区久久久久久 | 日韩手机在线视频 | 欧美伦理片在线观看 | 非洲特黄一级毛片高清视频 | 国产在线视频一区 | 中文字幕日韩高清版毛片 | 久久两性视频 | 成人午夜在线观看国产 | 日韩精品一 | 忘忧草综合久久综合88亚洲 | 18日本xxxxxxⅹxx96 | 国产99福利视频在线 | 日韩欧美亚洲综合 | 国产黄色三级网站 | 亚洲国产精品日韩高清秒播 | 精品69久久久久久99 | 欧美卡1卡2卡三卡网站入口 | 麻豆国产精品一二三在线观看 | 亚洲网站在线观看 | 欧美日韩黄色大片 | 涩涩看片| 成人福利小视频 | 精品大臿蕉视频在线观看 | 狠狠色综合久久丁香婷婷 | 露脸在线 | 中国一级特黄视频 | 国产欧美国产精品第二区 | 国产永久免费高清动作片www | 1024国产视频 | 成人爱av18丰满 | 免费国产一级特黄aa大 | 美女视频大全美女视频黄 | 久热re在线视频精品免费 | 婷婷色网 | 成人性欧美丨区二区三区 | 久久国产免费一区二区三区 | 免费大片在线观看高清 | 国产乱人伦精品一区二区 | 国产a级免费 |