java实现贪吃蛇游戏代码示例

  

java实现贪吃蛇游戏代码示例?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1,编写主方法实现启动类

进口javax.swing。*;//主启动类
  公开课StartGame {
  公共静态void main (String [] args) {
  JFrame JFrame=new JFrame(“贪吃蛇小游戏“);
  jFrame.setBounds (10900720);
  jFrame.setResizable(假);//设置窗口大小不可变
  jFrame.setDefaultCloseOperation (WindowConstants.EXIT_ON_CLOSE);//面板
  jFrame。添加(新GamePanel ());
  jFrame.setVisible(真正的);
  }
  }

2,准备好素材图片,编写数据类

进口javax.swing。*;
  进口java.net.URL;
  
  
  公共类数据{//头部图片
  公共静态URL headerURL=Data.class.getResource(“静力学/header.png");
  公共静态ImageIcon头=new ImageIcon (headerURL);//头部上下左右
  公共静态URL upURL=Data.class.getResource(“静力学/up.png");
  公共静态URL downURL=Data.class.getResource(“静力学/down.png");
  公共静态URL leftURL=Data.class.getResource(“静力学/left.png");
  公共静态URL rightURL=Data.class.getResource(“静力学/right.png");
  公共静态ImageIcon=新ImageIcon (upURL);
  公共静态ImageIcon下来=new ImageIcon (downURL);
  公共静态ImageIcon左=new ImageIcon (leftURL);
  公共静态ImageIcon右=new ImageIcon (rightURL);//身体
  公共静态URL bodyURL=Data.class.getResource(“静力学/body.png");
  公共静态ImageIcon身体=new ImageIcon (bodyURL);//食物
  公共静态URL foodURL=Data.class.getResource(“静力学/food.png");
  公共静态ImageIcon食品=new ImageIcon (foodURL);
  
  }

3代码主体部分:在小组面板上实现游戏初始化,键盘和事件的监听等功能

包com.abc.snake;
  
  进口javax.swing。*;
  进口java.awt。*;
  进口java.awt.event.ActionEvent;
  进口java.awt.event.ActionListener;
  进口java.awt.event.KeyEvent;
  进口java.awt.event.KeyListener;
  进口java.util.Random;//游戏的面板
  公共类GamePanel JPanel延伸实现KeyListener ActionListener {//定义蛇的数据结构
  int长度;//蛇的长度
  int [] snakeX=new int [600];//蛇的x坐标25 * 25
  int[]阴险的=new int [500];//蛇的y坐标25 * 25
  字符串外汇;//食物
  int foodx;
  int香;
  随机随机=new随机();
  int分数;//游戏分数//游戏当前的状态
  布尔isStart=false;
  布尔isFail=false;//定时器
  计时器计时=new计时器(100年);//100毫秒刷新一次//构造方法
  公共GamePanel () {
  init();//初始化
  this.setFocusable(真正的);//获得焦点事件
  this.addKeyListener(这个);//获得键盘监听事件
  timer.start ();//游戏一开始定时器就启动
  }//初始化方法
  公共空间init () {
  长度=3;//初始化开始的蛇,给蛇定位
  snakeX[0]=100;阴险的[0]=100;
  snakeX[1]=75;阴险的[1]=100;
  snakeX[2]=50,阴险的[2]=100;
  fx=癛";//初始方向向右//初始化食物数据
  foodx=25 + 25 * random.nextInt (34);
  foody=75 + 25 * random.nextInt (24);//初始化游戏分数
  分数=0;
  }//绘制面板
  @Override
  保护无效paintComponent(图形g) {
  super.paintComponent (g);//清屏
  this.setBackground (Color.white);//设置面板背景色
  Data.header.paintIcon (g,这25日11);//头部
  g.fillRect(75850600);//默认的黑色游戏区域//绘制小蛇
  如果(fx.equals (“R")) {
  Data.right.paintIcon (g, snakeX[0],阴险的[0]);//蛇头初始化向右
  }else if (fx.equals (“L")) {
  Data.left.paintIcon (g, snakeX[0],阴险的[0]);//蛇头初始化向左
  }else if (fx.equals (“U")) {
  Data.up.paintIcon (g, snakeX[0],阴险的[0]);//蛇头初始化向上
  }else if (fx.equals (“D")) {
  Data.down.paintIcon (g, snakeX[0],阴险的[0]);//蛇头初始化向下
  }
  for (int i=1;我& lt;长度;我+ +){
  Data.body.paintIcon (g, snakeX[我],阴险的[我]);
  }//食物
  Data.food.paintIcon (g,这foodx香);//积分
  g.setColor (Color.white);
  g。setFont(新字体(“微软雅黑“,Font.BOLD, 18));
  g.drawString(“长度“+长度,750,35);
  g.drawString(“分数“+得分,750年,50);//游戏状态
  如果(isStart==false) {
  g.setColor (Color.white);
  g。setFont(新字体(“微软雅黑“,Font.BOLD, 40));//设置字体
  g.drawString(“按下空格开始游戏“,300300);
  }//失败判断
  如果(isFail) {
  g.setColor (Color.red);
  g。setFont(新字体(“微软雅黑“,Font.BOLD, 40));//设置字体
  g.drawString(“游戏失败,按下空格重新开始“,300300);
  }
  }//键盘监听事件
  @Override
  公共空间keyPressed (KeyEvent e) {
  int键码=e.getKeyCode ();//获取按键
  如果(键码==KeyEvent.VK_SPACE) {
  如果(isFail) {//重新开始
  isFail=false;
  init ();
  其他}{
  isStart=!isStart;
  }
  重画();
  }//键盘控制小蛇移动
  如果(键码==KeyEvent.VK_UP) {
  fx=癠";
  }else if(键码==KeyEvent.VK_DOWN) {
  fx=癉";
  }else if(键码==KeyEvent.VK_LEFT) {
  fx=癓";
  }else if(键码==KeyEvent.VK_RIGHT) {
  fx=癛";
  }
  }//事件监听
  @Override
  公共空间actionPerformed (ActionEvent e) {
  如果(isStart,,isFail==false){//如果游戏是开始状态,就让小蛇动起来//移动
  for (int i=长度是1;我在;0;我(){
  snakeX[我]=snakeX(张);
  阴险的[我]=阴险的(张);
  }//走向
  如果(fx.equals (“R")) {
  snakeX [0]=snakeX [0] + 25;//边界判断
  如果(snakeX[0]在850年){
  snakeX [0]=25;
  }
  }else if (fx.equals (“L")) {
  snakeX [0]=snakeX [0] -25;
  如果(snakeX [0] & lt; 25) {
  snakeX [0]=850;
  }
  }else if (fx.equals (“U")) {
  阴险的[0]=阴险的[0]-25;
  如果(阴险的[0]& lt; 75) {
  阴险的[0]=650;
  }
  }else if (fx.equals (“D")) {
  阴险的[0]=阴险的[0]+ 25;
  如果(阴险的[0]在650年){
  阴险的[0]=75;
  }
  }//吃食物
  如果(snakeX [0]==foodx,,foody阴险的[0]==){
  长度+ +;
  分数=得分+ 10;//再次随机食物
  foodx=25 + 25 * random.nextInt (34);
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

java实现贪吃蛇游戏代码示例