温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Java实现贪吃蛇游戏

发布时间:2021-09-26 18:07:27 来源:亿速云 阅读:151 作者:小新 栏目:开发技术

这篇文章主要介绍如何使用Java实现贪吃蛇游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

具体内容如下

这是一个比较简洁的小游戏,主要有三个类,一个主类,一个食物类,一个贪吃蛇类。

1、首先定义主类,主类中主要用来创建窗口

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、其次是定义食物类,食物有长和宽,还有在窗口中的位置

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、最后是蛇类

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("欢迎来到贪吃蛇大战", 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();
  } 
 }
}

以上是“如何使用Java实现贪吃蛇游戏”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI