国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

如何使用Java實(shí)現貪吃蛇游戲

發(fā)布時(shí)間:2021-09-27 17:50 來(lái)源:億速云 閱讀:0 作者:小新 欄目: 開(kāi)發(fā)技術(shù)

這篇文章主要介紹如何使用Java實(shí)現貪吃蛇游戲,文中介紹的非常詳細,具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

具體內容如下

這是一個(gè)比較簡(jiǎn)潔的小游戲,主要有三個(gè)類(lèi),一個(gè)主類(lèi),一個(gè)食物類(lèi),一個(gè)貪吃蛇類(lèi)。

1、首先定義主類(lèi),主類(lèi)中主要用來(lái)創(chuàng )建窗口

public class Main {
 
 public static final int WIDTH=600;
 public static final int HEIGHT=600;
 public static void main(String[] args) {
  JFrame win =new JFrame();
  win.setVisible(true);
  win.setSize(WIDTH, HEIGHT);
  win.setDefaultCloseOperation(3);
  win.setLocationRelativeTo(null);
  
  SnakePanel panle =new SnakePanel();
  win.add(panle);
  SnakePanel.Key l = panle.new Key();
  win.addKeyListener(l);
  panle.addKeyListener(l);
  panle.run();
 }

}

2、其次是定義食物類(lèi),食物有長(cháng)和寬,還有在窗口中的位置

import java.util.Random;
public class Cell {
 protected int x;
 protected int y;
 protected int width;
 protected int height;
 Random ran=new Random();
 public Cell(){
  Random ran=new Random();
  this.x=ran.nextInt(25)*15+60;
  this.y=ran.nextInt(25)*15+50;
  this.width=15;
  this.height=15;
 }
 public Cell(int x,int y){
  this();
  this.x=x;
  this.y=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;
 }
 public int getWidth() {
  return width;
 }
 public void setWidth(int width) {
  this.width = width;
 }
 public int getHeight() {
  return height;
 }
 public void setHeight(int height) {
  this.height = height;
 }
}

3、最后是蛇類(lèi)

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Arrays;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JPanel;
public class SnakePanel extends JPanel {
 final int RIGHT=1;
 final int LEFT=2;
 final int UP=3;
 final int DOWN=4;
 int moved=1;
 Cell food;
 Cell[] snake;
 public SnakePanel(){
  food=new Cell();
  snake=new Cell[5];
  for(int i=0;i<snake.length;i++){
   snake[i]=new Cell(210+i*15,50);
  }
 }
 class Key extends KeyAdapter{
  @Override
  public void keyPressed(KeyEvent e){
   int code=e.getKeyCode();
   //System.out.println(code);
   if(code==37&&moved!=RIGHT){
    moved=LEFT;
   }
   if(code==39&&moved!=LEFT){
    moved=RIGHT;
   }
   if(code==38&&moved!=DOWN){
    moved=UP;
   }
   if(code==40&&moved!=UP){
    moved=DOWN;
   }
  }
 }
 public void paint(Graphics g){
  super.paint(g);
  g.setFont(new Font(Font.SERIF,Font.BOLD,28));
  g.drawRect(60, 50, 450, 450);
  for(int i=15;i<=450;i+=15){
   g.drawLine(60+i, 50, 60+i, 500);
  }
  for(int i=15;i<=450;i+=15){
   g.drawLine(60, 50+i, 510, 50+i);
  }
  g.setColor(Color.BLUE);
  g.drawString("歡迎來(lái)到貪吃蛇大戰", 140, 40);
  g.fillRect(food.x, food.y, food.width, food.height);
  for(int i=0;i<snake.length;i++){
   g.fillRect(snake[i].x, snake[i].y, snake[i].width, snake[i].height);
  }
 }
 int speed = 250;
 public void run(){
  Timer timer=new Timer();
  TimerTask task=new TimerTask(){
   @Override
   public void run() {
    step();
    repaint();
   }
  }; 
  if(snake.length>=10){
   speed=125;
  }else if(snake.length>=20){
   speed=60;
  }else if(snake.length>=30){
   speed=30;
  }else if(snake.length>=40){
   speed=15;                                             
  }
  timer.schedule(task, 1000, speed);
 }
 public void step(){
  for(int i=1;i<snake.length;i++){
   snake[i-1] = snake[i]; 
  }
  Cell c = new Cell(snake[snake.length-1].getX(),snake[snake.length-1].getY());
  if(moved == RIGHT){
   c.setX(c.getX()+15);
  }
  if(moved == UP){
   c.setY(c.getY()-15);
  }
  if(moved == DOWN){
   c.setY(c.getY()+15);
  }
  if(moved == LEFT){
   c.setX(c.getX()-15);
  }
  snake[snake.length-1] = c;
  //System.out.println(c.getX()+","+c.getY());
  if(snake[snake.length-1].getX()>510||
    snake[snake.length-1].getX()<60||
    snake[snake.length-1].getY()>500||
    snake[snake.length-1].getY()<50){
     System.exit(0);
    }
  if(snake[snake.length-1].x==food.x &&snake[snake.length-1].y==food.y){
   snake=Arrays.copyOf(snake,snake.length+1);
   snake[snake.length-1]=food;
   food=new Cell();
  } 
 }
}

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

亚洲色无码专线精品观看| 国产小受呻吟GV视频在线观看| 中国老太婆BB无套内射| 日韩亚洲欧美中文高清在线| 亚洲AV成人一区二区三区观看| 全球中文成人在线|