国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java編寫貪吃蛇小游戲

2019-11-26 15:14:27
字體:
供稿:網(wǎng)友

廢話不多說,直接奉上代碼:

Frame.java

package snake; import java.awt.Graphics;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener; import javax.swing.JFrame; public class Frame extends JFrame implements KeyListener {   /**   *    */     Boolean isAlive;  Boolean isPause;  Panel panel;  Character direction;  private static final long serialVersionUID = 1L;   public Frame(){    // TODO Auto-generated constructor stub    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    setSize(300,300);    addKeyListener(this);    panel = new Panel();    add(panel);    setVisible(true);    isAlive = true;    isPause = false;    direction = new Character('d');     MenuBar menuBar = new MenuBar();    Menu menu = new Menu("menu");    MenuItem reset = new MenuItem("newgame");    MenuItem pause= new MenuItem("pause");         pause.addActionListener(new ActionListener(){       @Override      public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub        if(!isPause) isPause= true;        else     isPause= false;       }           });          reset.addActionListener(new ActionListener(){       @Override      public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub        reset();      }           });         menu.add(reset);    menu.add(pause);    menuBar.add(menu);    setMenuBar(menuBar);            }     public void reset(){    panel.reset();    isAlive = true;  }   @Override  public void keyTyped(KeyEvent e) {    // TODO Auto-generated method stub       }   @Override  public void keyPressed(KeyEvent e) {    // TODO Auto-generated method stub    if(e.getKeyCode()==KeyEvent.VK_UP)  direction = 'w';    if(e.getKeyCode()==KeyEvent.VK_DOWN) direction = 's';    if(e.getKeyCode()==KeyEvent.VK_LEFT) direction = 'a';    if(e.getKeyCode()==KeyEvent.VK_RIGHT) direction = 'd';  }   @Override  public void keyReleased(KeyEvent e) {    // TODO Auto-generated method stub       }     public void paint(Graphics g){    panel.repaint();  } }

Launch.java

package snake; import java.util.Timer;import java.util.TimerTask; public class Launch extends TimerTask {   Frame frame = new Frame();  public Launch() {    // TODO Auto-generated constructor stub       }     boolean crashWall(){    SnakeBody sb = frame.panel.snake.getFirst();    if((sb.x<0)||(sb.y<0)||(sb.x>=Panel.LINE)||(sb.y>=Panel.LINE))      return true;    else      return false;  }  void initial(){    frame.panel.snake.add(newBody());    frame.panel.food = newBody();   }  @Override  public void run() {    // TODO Auto-generated method stub    if(frame.panel.snake.isEmpty())      initial();    if(frame.isAlive)      if(!frame.isPause){        if(goStraight())           frame.isAlive = false;        frame.repaint();      }    if(crashWall()) frame.isAlive = false;  }     SnakeBody newBody(){    SnakeBody sb = new SnakeBody();     boolean overlap = true;    while(overlap){      overlap =false;      sb.x = (int) (Math.random()*(Panel.LINE-2)+1);      sb.y = (int) (Math.random()*(Panel.LINE-2)+1);      if(!frame.panel.snake.isEmpty())      for(SnakeBody s : frame.panel.snake)        if(sb.equals(s))          overlap =true;    }         return sb;  }      void eat(SnakeBody sb){    frame.panel.snake.addFirst(sb);  }  boolean goStraight(){         boolean result = false;         SnakeBody sb =new SnakeBody(frame.panel.snake.getFirst());    frame.panel.snake.removeLast();    if(frame.direction=='w')      sb.turnUp();    if(frame.direction=='s')      sb.turnDown();    if(frame.direction=='a')      sb.turnLeft();    if(frame.direction=='d')      sb.turnRight();         for(SnakeBody s : frame.panel.snake){      if(sb.equals(s)) result = true;    }         frame.panel.snake.addFirst(sb);    if(sb.equals(frame.panel.food)){      if(frame.direction=='w')        frame.panel.food.turnUp();      if(frame.direction=='s')        frame.panel.food.turnDown();      if(frame.direction=='a')        frame.panel.food.turnLeft();      if(frame.direction=='d')        frame.panel.food.turnRight();      eat(frame.panel.food);      frame.panel.food = newBody();    }         return result;  }         public static void main(String[] args){    // TODO Auto-generated method stub     Launch timertask = new Launch();     Timer timer = new Timer();          timer.schedule(timertask,0,500);  } }

Panel.java

package snake; import java.awt.Color;import java.awt.Graphics;import java.util.LinkedList; import javax.swing.JPanel;  public class Panel extends JPanel {     /**   *    */  private static final long serialVersionUID = 1L;  public LinkedList<SnakeBody> snake = new LinkedList<SnakeBody>();  static final int LINE = 10;  SnakeBody food = new SnakeBody(-99,-99);      public Panel() {    // TODO Auto-generated constructor stub  }     public void reset(){    snake.clear();    }     public void paint(Graphics g){    g.setColor(Color.white);    g.fillRect(0, 0, getWidth(), getHeight());       for(SnakeBody sb : snake){      g.setColor(Color.black);      g.drawRect(sb.x*getWidth()/LINE,sb.y*getHeight()/LINE,getWidth()/LINE,getHeight()/LINE);      g.setColor(Color.orange);      g.fillRect(sb.x*getWidth()/LINE,sb.y*getHeight()/LINE,getWidth()/LINE,getHeight()/LINE);    }    g.setColor(Color.red);    g.fillRect(food.x*getWidth()/LINE,food.y*getHeight()/LINE,getWidth()/LINE,getHeight()/LINE);       }}

SnakeBody.java

package snake;  class SnakeBody {     int x;  int y;     public SnakeBody() {    // TODO Auto-generated constructor stub    x = 0;    y = 0;  }     public SnakeBody(int a,int b){    x = a;    y = b;  }  public SnakeBody(SnakeBody sb){    this(sb.x,sb.y);  }     public void turnUp(){    y--;  }  public void turnDown(){    y++;  }  public void turnLeft(){    x--;  }  public void turnRight(){    x++;  }     boolean equals(SnakeBody s){    if((x==s.x)&&(y==s.y)) return true;    else          return false;  } }

以上所述就是本文給大家分享的貪吃蛇的全部代碼了,希望能夠?qū)Υ蠹沂炀氄莆誮ava有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 铜山县| 武安市| 分宜县| 庄河市| 象州县| 怀集县| 许昌市| 山西省| 沾化县| 天津市| 凤冈县| 门源| 福鼎市| 长寿区| 安平县| 门头沟区| 多伦县| 白城市| 高安市| 德化县| 阳朔县| 恩施市| 绩溪县| 清苑县| 渝中区| 沂源县| 崇左市| 弥渡县| 巴马| 江油市| 甘谷县| 固安县| 东光县| 黔东| 上栗县| 辽阳县| 定结县| 黄梅县| 丰都县| 巴林右旗| 驻马店市|