Java实现贪吃蛇游戏源码
本文实例为大家分享了Java实现贪吃蛇游戏源码的具体代码,供大家参考,具体内容如下
1.StartGame
packagecom.qiang.snake; importjavax.swing.*; //游戏的主启动类 publicclassStartGame{ publicstaticvoidmain(String[]args){ JFrameframe=newJFrame(); frame.setResizable(false);//窗口大小不可变 frame.setBounds(10,10,900,720); frame.add(newGamePanel()); frame.setVisible(true); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
2.Data
packagecom.qiang.snake; importjavax.swing.*; importjava.net.URL; //数据中心 publicclassData{ publicstaticURLheaderURL=Data.class.getResource("/statics/header.png"); publicstaticURLupURL=Data.class.getResource("/statics/up.png"); publicstaticURLdownURL=Data.class.getResource("/statics/down.png"); publicstaticURLleftURL=Data.class.getResource("/statics/left.png"); publicstaticURLrightURL=Data.class.getResource("/statics/right.png"); publicstaticURLbodyURL=Data.class.getResource("/statics/body.png"); publicstaticURLfoodURL=Data.class.getResource("/statics/food.png"); publicstaticImageIconheader=newImageIcon(headerURL); publicstaticImageIconup=newImageIcon(upURL); publicstaticImageIcondown=newImageIcon(downURL); publicstaticImageIconleft=newImageIcon(leftURL); publicstaticImageIconright=newImageIcon(rightURL); publicstaticImageIconbody=newImageIcon(bodyURL); publicstaticImageIconfood=newImageIcon(foodURL); }
3.GamePanel
packagecom.qiang.snake; importjavax.swing.*; importjava.awt.*; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjava.awt.event.KeyEvent; importjava.awt.event.KeyListener; importjava.util.Random; publicclassGamePanelextendsJPanelimplementsKeyListener,ActionListener{ intlenth;//蛇的长度 int[]snakeX=newint[600];//蛇的坐标x int[]snakeY=newint[500];//蛇的坐标y Stringfx="R";//蛇的方向:R:右L:左U:上D:下 booleanisStart=false;//游戏是否开始 Timertimer=newTimer(100,this);//定时器:第一个参数,就是定时执行时间 //食物 intfoodx; intfoody; Randomrandom=newRandom(); booleanisFail=false;//游戏是否结束 intscore;//游戏分数! //构造方法 publicGamePanel(){ init();//初始化 this.setFocusable(true);//获取焦点事件 this.addKeyListener(this);//键盘监听事件 timer.start(); } //初始化方法 publicvoidinit(){ lenth=3;//初始小蛇有三节,包括小脑袋 //初始化开始的蛇,给蛇定位, snakeX[0]=100;snakeY[0]=100; snakeX[1]=75;snakeY[1]=100; snakeX[2]=50;snakeY[2]=100; //初始化食物数据 foodx=25+25*random.nextInt(34); foody=75+25*random.nextInt(24); score=0;//初始化游戏分数 } //画组件 @Override publicvoidpaintComponent(Graphicsg){ 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]); }elseif(fx.equals("L")){ Data.left.paintIcon(this,g,snakeX[0],snakeY[0]); }elseif(fx.equals("U")){ Data.up.paintIcon(this,g,snakeX[0],snakeY[0]); }elseif(fx.equals("D")){ Data.down.paintIcon(this,g,snakeX[0],snakeY[0]); } for(inti=1;i0;i--){//除了脑袋都往前移:身体移动 snakeX[i]=snakeX[i-1];//即第i节(后一节)的位置变为(i-1:前一节)节的位置! snakeY[i]=snakeY[i-1]; } //通过方向控制,头部移动 if(fx.equals("R")){ snakeX[0]=snakeX[0]+25; if(snakeX[0]>850)snakeX[0]=25; }elseif(fx.equals("L")){ snakeX[0]=snakeX[0]-25; if(snakeX[0]<25)snakeX[0]=850; }elseif(fx.equals("U")){ snakeY[0]=snakeY[0]-25; if(snakeY[0]<75)snakeY[0]=650; }elseif(fx.equals("D")){ snakeY[0]=snakeY[0]+25; if(snakeY[0]>650)snakeY[0]=75; } //吃食物:当蛇的头和食物一样时,算吃到食物! if(snakeX[0]==foodx&&snakeY[0]==foody){ //1.长度加一 lenth++; //每吃一个食物,增加积分 score=score+10; //2.重新生成食物 foodx=25+25*random.nextInt(34); foody=75+25*random.nextInt(24); } //结束判断,头和身体撞到了 for(inti=1;i 更多有趣的经典小游戏实现专题,分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
JavaScript经典游戏玩不停
java经典小游戏汇总
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。