Java实现简单的贪吃蛇游戏

本文实例为大家分享了Java实现简单贪吃蛇游戏的具体代码,供大家参考,具体内容如下
代码
启动类

package snake; import javax.swing.*; //游戏的主启动类public class StartGame {public static void main(String[] args) {JFrame frame = new JFrame("贪吃蛇"); frame.setBounds(10,10,900,720); frame.setResizable(false); //窗口不可调整frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //正常游戏界面都应该在面板上frame.add(new GamePanel()); frame.setVisible(true); }}

游戏画板
package snake; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Random; //游戏面板public class GamePanel extends JPanel implements KeyListener, ActionListener {int lenth; //蛇的长度int [] snakeX = new int[600]; //定义蛇的坐标Xint [] snakeY = new int[500]; //定义蛇的坐标YString fx ; //定义方向R:右 L:左 U:上 D:下boolean isStart = false; //游戏是否开始Timer timer = new Timer(120,this); //定时器//定义一个食物int foodx; int foody; Random random = new Random(); //定义死亡判断boolean isFail = false; //默认不失败//积分系统int score; //构造器public GamePanel(){init(); //获取键盘的监听事件this.setFocusable(true); this.addKeyListener(this); timer.start(); }//初始化public void init(){lenth = 3; snakeX[0] = 100; snakeY[0] = 100; //头部坐标snakeX[1] = 75; snakeY[1] = 100; //第一个身体坐标snakeX[2] = 50; snakeY[2] = 100; //第二个身体坐标fx = "R"; //蛇头初始方向//初始化食物foodx = 25 + 25 * random.nextInt(34); foody = 75 + 25 * random.nextInt(24); score = 0; }//绘制面板,游戏中的所以东西都使用这个东西来画@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g); //清屏作用//绘制静态的面板this.setBackground(Color.white); Data.header.paintIcon(this,g,25,11); //放进头部广告g.fillRect(25,75,850,600); //默认游戏界面//画一条静态的小蛇if (fx.equals("R")){Data.right.paintIcon(this,g,snakeX[0],snakeY[0]); }else if (fx.equals("L")){Data.left.paintIcon(this,g,snakeX[0],snakeY[0]); }else if (fx.equals("U")){Data.up.paintIcon(this,g,snakeX[0],snakeY[0]); }else if (fx.equals("D")){Data.down.paintIcon(this,g,snakeX[0],snakeY[0]); }//蛇的身体长度通过length来控制for (int i = 1; i < lenth; i++){Data.body.paintIcon(this,g,snakeX[i],snakeY[i]); }//画积分g.setColor(Color.white); g.setFont(new Font("微软雅黑",Font.BOLD,20)); g.drawString("长度"+lenth,700,45); g.drawString("分数"+score,780,45); //画食物Data.food.paintIcon(this,g,foodx,foody); //游戏提示:是否开始if (isStart == false){//画一个文字String来提示开始g.setColor(Color.white); //定义颜色g.setFont(new Font("微软雅黑",Font.BOLD,40)); //设置字体g.drawString("按下空格开始游戏",300,300); }//失败提醒if (isFail){//画一个文字String来提示失败g.setColor(Color.RED); //定义颜色g.setFont(new Font("微软雅黑",Font.BOLD,40)); //设置字体g.drawString("游戏失败,按下空格重新开始",200,300); }}//接收键盘的输入:监听事件@Override//键盘按下,未释放public void keyPressed(KeyEvent e) {//获取按下键盘的信息int keyCode = e.getKeyCode(); if(keyCode==KeyEvent.VK_SPACE){//如果按下空格键if (isFail){//游戏失败,重新开始isFail = false; init(); //重新初始化游戏}else {//暂停游戏isStart = !isStart; }repaint(); //刷新界面,重置}//键盘控制走向if (keyCode==KeyEvent.VK_LEFT){fx = "L"; }else if (keyCode==KeyEvent.VK_RIGHT){fx = "R"; }else if (keyCode==KeyEvent.VK_UP) {fx = "U"; }else if (keyCode==KeyEvent.VK_DOWN) {fx = "D"; }}//定时器,监听时间,帧,执行定时操作@Overridepublic void actionPerformed(ActionEvent e) {//如果游戏处于开始状态,并且游戏没有失败if (isStart && isFail == false){//右移for (int i = lenth-1 ; i > 0; i--){ //身体向前移动snakeX[i] = snakeX[i-1]; snakeY[i] = snakeY[i-1]; }//通过控制方向让头部移动if (fx.equals("R")){snakeX[0] = snakeX[0] + 25; //头部移动if (snakeX[0]>850){ snakeX[0] = 25; }//右边界判断}else if (fx.equals("L")){snakeX[0] =snakeX[0] - 25; //头部移动if (snakeX[0]<25){ snakeX[0] = 850; }//左边界判断}else if (fx.equals("U")){snakeY[0] =snakeY[0] - 25; //头部移动if (snakeY[0]<75){ snakeY[0] = 650; }//上边界判断}else if (fx.equals("D")){snakeY[0] =snakeY[0] + 25; //头部移动if (snakeY[0]>650){ snakeY[0] = 75; }//下边界判断}//如果食物和蛇头坐标重合if (snakeX[0]==foodx && snakeY[0]==foody){lenth ++; //蛇的身体长度加一score = score + 10; //重新生成食物foodx = 25 +25 * random.nextInt(34); foody = 75 +25 * random.nextInt(24); }//结束判断for (int i = 1; i
游戏数据(存放图片)
package snake; import javax.swing.*; import java.net.URL; //数据中心public class Data {//相对路径 tx.jpg 绝对路径/相当于当前的项目//头部图片URL 定位图片地址public static URL headerURL = Data.class.getResource("/statics/header.png"); public static ImageIcon header = new ImageIcon(headerURL); //上下左右移动public static URL upUrl = Data.class.getResource("/statics/up.png"); public static ImageIcon up = new ImageIcon(upUrl); public static URL downUrl = Data.class.getResource("/statics/down.png"); public static ImageIcon down = new ImageIcon(downUrl); public static URL leftUrl = Data.class.getResource("/statics/left.png"); public static ImageIcon left = new ImageIcon(leftUrl); public static URL rightUrl = Data.class.getResource("/statics/right.png"); public static ImageIcon right = new ImageIcon(rightUrl); //身体public static URL bodyUrl = Data.class.getResource("/statics/body.png"); public static ImageIcon body = new ImageIcon(bodyUrl); //食物public static URL foodUrl = Data.class.getResource("/statics/food.png"); public static ImageIcon food = new ImageIcon(foodUrl); }

【Java实现简单的贪吃蛇游戏】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读