微信小程序 > 微信公开课 > java贪吃蛇代码注释求解
微信小程序,微信公开课,java贪吃蛇代码注释求解

java贪吃蛇代码注释求解

2019-03-12 17:02:19

微信公开课小程序热门讨论「java贪吃蛇代码注释求解」最新回复-importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.Rectangle;importjava.awt.event.KeyAdapter;importjava.awt.event.KeyEvent;importjava.awt.image.BufferedImage;importjava.util.ArrayList;importjava.util.List;importjavax.swing.JFrame;publicclassInterFaceextendsJFrame{/***WIDTH:宽*HEIGHT:高*SLEEPTIME:可以看作蛇运动的速度*L=1,R=2,U=3,D=4左右上下代码*/publicstaticfinalintWIDTH=800,HEIGHT=600,SLEEPTIME=200,L=1,R=2,U=3,D=4;BufferedImageoffersetImage=newBufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_3BYTE_BGR);;Rectanglerect=newRectangle(20,40,15*50,15*35);Snakesnake;Nodenode;publicInterFace(){//创建蛇对象snake=newSnake(this);//创建食物对象createNode();this.setBounds(100,100,WIDTH,HEIGHT);//添加键盘监听器this.addKeyListener(newKeyAdapter(){publicvoidkeyPressed(KeyEventarg0){System.out.println(arg0.getKeyCode());switch(arg0.getKeyCode()){//映射上下左右4个键位caseKeyEvent.VK_LEFT:snake.dir=L;break;caseKeyEvent.VK_RIGHT:snake.dir=R;break;caseKeyEvent.VK_UP:snake.dir=U;break;caseKeyEvent.VK_DOWN:snake.dir=D;}}});this.setTitle(贪吃蛇0.1By:Easy);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);//启动线程,开始执行newThread(newThreadUpadte()).start();}publicvoidpaint(Graphicsg){Graphics2Dg2d=(Graphics2D)offersetImage.getGraphics();g2d.setColor(Color.white);g2d.fillRect(0,0,WIDTH,HEIGHT);g2d.setColor(Color.black);g2d.drawRect(rect.x,rect.y,rect.width,rect.height);//如果蛇碰撞(吃)到食物,则创建新食物if(snake.hit(node)){createNode();}snake.draw(g2d);node.draw(g2d);g.drawImage(offersetImage,0,0,null);}classThreadUpadteimplementsRunnable{publicvoidrun(){//无限重绘画面while(true){try{Thread.sleep(SLEEPTIME);repaint();//}catch(InterruptedExceptione){e.printStackTrace();}}}}/***创建食物*/publicvoidcreateNode(){//随机食物的出现位置intx=(int)(Math.random()*650)+50,y=(int)(Math.random()*500)+50;Colorcolor=Color.blue;node=newNode(x,y,color);}publicstaticvoidmain(Stringargs[]){newInterFace();}}/***节点类(包括食物和蛇的身躯组成节点)*/classNode{intx,y,width=15,height=15;Colorcolor;publicNode(intx,inty,Colorcolor){this(x,y);this.color=color;}publicNode(intx,inty){this.x=x;this.y=y;this.color=color.black;}publicvoiddraw(Graphics2Dg2d){g2d.setColor(color);g2d.drawRect(x,y,width,height);}publicRectanglegetRect(){returnnewRectangle(x,y,width,height);}}/***蛇*/classSnake{publicListNodenodes=newArrayListNode();InterFaceinterFace;intdir=InterFace.R;publicSnake(InterFaceinterFace){this.interFace=interFace;nodes.add(newNode(20+150,40+150));addNode();}/***是否碰撞到食物*@returntrue是false否*/publicbooleanhit(Nodenode){//遍历整个蛇体是否与食物碰撞for(inti=0;inodes.size();i++){if(nodes.get(i).getRect().intersects(node.getRect())){addNode();returntrue;}}returnfalse;}publicvoiddraw(Graphics2Dg2d){for(inti=0;inodes.size();i++){nodes.get(i).draw(g2d);}move();}publicvoidmove(){nodes.remove((nodes.size()1));addNode();}publicsynchronizedvoidaddNode(){NodenodeTempNode=nodes.get(0);//如果方向switch(dir){caseInterFace.L://判断是否会撞墙if(nodeTempNode.x=20){nodeTempNode=newNode(20+15*50,nodeTempNode.y);}nodes.add(0,newNode(nodeTempNode.xnodeTempNode.width,nodeTempNode.y));break;caseInterFace.R://判断是否会撞墙if(nodeTempNode.x=20+15*50nodeTempNode.width){nodeTempNode=newNode(20nodeTempNode.width,nodeTempNode.y);}nodes.add(0,newNode(nodeTempNode.x+nodeTempNode.width,nodeTempNode.y));break;caseInterFace.U://判断是否会撞墙if(nodeTempNode.y=40){nodeTempNode=newNode(nodeTempNode.x,40+15*35);}nodes.add(0,newNode(nodeTempNode.x,nodeTempNode.ynodeTempNode.height));break;caseInterFace.D://判断是否会撞墙if(nodeTempNode.y=40+15*35nodeTempNode.height){nodeTempNode=newNode(nodeTempNode.x,40nodeTempNode.height);}nodes.add(0,newNode(nodeTempNode.x,nodeTempNode.y+nodeTempNode.height));break;}}}
importjava.awt.Color; importjava.awt.Graphics; importjava.awt.Graphics2D; importjava.awt.Rectangle; importjava.awt.event.KeyAdapter; importjava.awt.event.KeyEvent; importjava.awt.image.BufferedImage; importjava.util.ArrayList; importjava.util.List; importjavax.swing.JFrame; publicclassInterFaceextendsJFrame{  publicstaticfinalintWIDTH=800,HEIGHT=600,SLEEPTIME=100,L=1,R=2,U=3,D=4; //widthandheightisforwindowssetup//sleeptimeistheintervalforscreentobeupdatedorrespondtoouroperationBufferedImageoffersetImage=newBufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_3BYTE_BGR);; //generatetheemptypicturefortheoperationRectanglerect=newRectangle(20,40,15*50,15*35); //setupRectanglewithx=20,y=40andheight=525width=750Snakesnake;  Nodenode;  publicInterFace(){  snake=newSnake(this); //generatethesnakecreateNode();//generatethefirsttargetnodethis.setBounds(100,100,WIDTH,HEIGHT); //settheplaceofthisprograminthescreen//addkeylistenerfunctionfortheprogramthis.addKeyListener(newKeyAdapter(){publicvoidkeyPressed(KeyEventarg0){System.out.println(arg0.getKeyCode()); //getthekeypresseventandcheckwhichsidetobechange switch(arg0.getKeyCode()){caseKeyEvent.VK_LEFT:snake.dir=L;break;caseKeyEvent.VK_RIGHT:snake.dir=R;break;caseKeyEvent.VK_UP:snake.dir=U;break;caseKeyEvent.VK_DOWN:snake.dir=D;}}  });  this.setTitle(Snack0.1By:Easy);  this.setDefaultCloseOperation(EXIT_ON_CLOSE);  this.setVisible(true);  newThread(newThreadUpadte()).start(); //calltheendlesslooptoruntheprogram}  publicvoidpaint(Graphicsg){  Graphics2Dg2d=(Graphics2D)offersetImage.getGraphics();  g2d.setColor(Color.white);  g2d.fillRect(0,0,WIDTH,HEIGHT); //fillthewholepicturewithwhiteg2d.setColor(Color.black); //changetouseblackg2d.drawRect(rect.x,rect.y,rect.width,rect.height); //drawtherectforrelatedoperationnowif(snake.hit(node)){createNode(); //generatethenewnodeaftersnakeeattheformerone}  snake.draw(g2d); //drawthesnakenode.draw(g2d);  //drawthenodeg.drawImage(offersetImage,0,0,null); //showthewholepicturetopeoplenow}//theendlesslooptoexecutedtheprogramwithmultithreadoperationsclassThreadUpadteimplementsRunnable{  publicvoidrun(){while(true){try{Thread.sleep(SLEEPTIME);repaint(); //userepainttore-drawthepictureagain,systemwillcallthepaintfunctionabovetodothat }catch(InterruptedExceptione){e.printStackTrace();}}  }  } //generateanodewithrandomaddressforsnacktoeatpublicvoidcreateNode(){  intx=(int)(Math.random()*650)+50,y=(int)(Math.random()*500)+50;  Colorcolor=Color.blue;  node=newNode(x,y,color);  } //themainfunctionforthewholeprogrampublicstaticvoidmain(Stringargs[]){  newInterFace();  } } classNode{ //theclassforthesmallnodetobeeatedbysnackintx,y,width=15,height=15;  Colorcolor;  publicNode(intx,inty,Colorcolor){  this(x,y);  this.color=color;  }  publicNode(intx,inty){  this.x=x;  this.y=y;  this.color=color.black;  }  publicvoiddraw(Graphics2Dg2d){  g2d.setColor(color);  g2d.drawRect(x,y,width,height);  }  publicRectanglegetRect(){  returnnewRectangle(x,y,width,height);  } } classSnake{  publicListNodenodes=newArrayListNode(); //snackisformedbyseveralnodestogetherInterFaceinterFace;  intdir=InterFace.R;  publicSnake(InterFaceinterFace){  this.interFace=interFace;  nodes.add(newNode(20+150,40+150)); //thestartplaceforthesnackisx=170,y=190addNode(); //movethesnacknow}  publicbooleanhit(Nodenode){  for(inti=0;inodes.size();i++){if(nodes.get(i).getRect().intersects(node.getRect())){addNode();returntrue;}  }  returnfalse;  }  publicvoiddraw(Graphics2Dg2d){  for(inti=0;inodes.size();i++){nodes.get(i).draw(g2d);  }  move();  } //movetoanewplacepublicvoidmove(){  nodes.remove((nodes.size()-1));  addNode();  } //thebelowfunctionareusedeachtimestampofSLEEPTIMEtoupdatethecurrentpicturepublicsynchronizedvoidaddNode(){  NodenodeTempNode=nodes.get(0);  switch(dir){  caseInterFace.L:  if(nodeTempNode.x=20){ //thisisjusttoshowthecasetheheadofsnackhittheleftsideandswitchtoshowitontherightside nodeTempNode=newNode(20+15*50,nodeTempNode.y); System.out.println(hittheleftsideofwindowsnow.); }nodes.add(0,newNode(nodeTempNode.x-nodeTempNode.width,nodeTempNode.y));break;  caseInterFace.R:  if(nodeTempNode.x=20+15*50-nodeTempNode.width){ //thisisjusttoshowthecasetheheadofsnackhittherightsideandswitchtoshowitontheleftside nodeTempNode=newNode(20-nodeTempNode.width,nodeTempNode.y); System.out.println(hittherightsideofwindowsnow.); }nodes.add(0,newNode(nodeTempNode.x+nodeTempNode.width,nodeTempNode.y));break;  caseInterFace.U:  if(nodeTempNode.y=40){ //thisisjusttoshowthecasetheheadofsnackhittheuppersideandswitchtoshowitonthedownside nodeTempNode=newNode(nodeTempNode.x,40+15*35); System.out.println(hittheuppersideofwindowsnow.); }nodes.add(0,newNode(nodeTempNode.x,nodeTempNode.y-nodeTempNode.height));break;  caseInterFace.D:  if(nodeTempNode.y=40+15*35-nodeTempNode.height){ //thisisjusttoshowthecasetheheadofsnackhittheDownsideandswitchtoshowitontheupperside nodeTempNode=newNode(nodeTempNode.x,40-nodeTempNode.height); System.out.println(hittheDownsideofwindowsnow.); }nodes.add(0,newNode(nodeTempNode.x,nodeTempNode.y+nodeTempNode.height));break;  }  } } 更多有关「java贪吃蛇代码注释求解」的疑问请扫码关注微信公开课+小程序!
标签:微信公开课,小程序
微信小程序,微信公开课,java贪吃蛇代码注释求解

「java贪吃蛇代码注释求解」热议话题订阅

方法1:微信扫描微信公开课小程序码即可订阅热议话题「java贪吃蛇代码注释求解」

方法2:微信搜索微信公开课小程序名称进入,即可订阅热议话题「java贪吃蛇代码注释求解」

方法3:微信网页访问即速商店,长按识别微信公开课小程序码即可订阅热议话题「java贪吃蛇代码注释求解」

微信公开课小程序热议话题「java贪吃蛇代码注释求解」由微信公开课原创摘录于微信小程序商店shop.jisuapp.cn,转载请注明出处。

微信公开课热议话题「java贪吃蛇代码注释求解」由微信公开课开发者向微信用户提供,并对本服务内容、数据资料及其运营行为等真实性、合法性及有效性承担全部责任。