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 nulljava实现贪吃蛇游戏代码示例