介绍
本篇文章给大家分享的是有关如何在java项目中利用swing框架实现一个贪吃蛇游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
1,编写主方法
package 游戏; import java.awt.Graphics; import javax.swing。*; public class  snakeMain extends JFrame  { ,public snakeMain (), { ,snakeWin win =, new snakeWin (); ,添加(赢得); ,setTitle(“?贪吃蛇v1.0"); ,setSize (435390); ,setLocation (200,, 200); ,setVisible(真正的); ,} ,public static  void main (String [], args), { ,new snakeMain (); ,} }
2,编写实体类
package 游戏; public class  snakeAct { ,private int x; y, private int ; ,public int  getX (), { ,return x; ,} ,public void 对于setX (int x), {=,this.x x; ,} ,public int  getY (), { ,return y; ,} ,public void 调用setY (int y), { y=, this.y ; ,} , }
3,编写主要程序
package 游戏; import javax.swing。*; import java.awt。*; import java.awt.event。*; import java.util。*; import 并不知道; public class  snakeWin extends JPanel  implements ActionListener, KeyListener Runnable { ,int fenShu=0,速度=0; ,boolean start =,假; ,int rx=0, ry=0; ,int eat1=0, eat2=0; ,JDialog dialog =, new 而且(); ,JLabel label =, new JLabel(“你挂了!你的分数“+ fenShu +““); ,JButton ok =, new JButton (“T_T"); ,Random r =, new 随机(); ,JButton newGame stopGame; ,Listlist =, new ArrayList (); ,int temp=0; ,Thread nThread; ,public snakeWin (), {=,,newGame  new JButton(“开始“);=,,stopGame  new JButton(“结束“); ,newGame.addActionListener(这个); ,stopGame.addActionListener(这个); ,this.addKeyListener(这个); ,this.setLayout (new FlowLayout (FlowLayout.LEFT)); ,this.add (newGame); ,this.add (stopGame); ,dialog.setLayout (new GridLayout (2, 1)); ,dialog.add(标签); ,dialog.add(好); ,dialog.setSize (200,, 200); ,dialog.setLocation (200,, 200); ,dialog.setVisible(假); ,ok.addActionListener(这个); ,} ,public void  paintComponent (Graphics g) { ,super.paintComponent (g); ,g.drawRect(10, 40岁,400年,300年); ,g.drawString(“分数“+ fenShu,, 150,, 15); ,g.drawString(“速度“+速度,150年,35); ,g.setColor (new 颜色(0,,255,,0)); ,如果(start) { ,g.fillRect (10 + rx * 10, 40 +一块* 10,10日,10); ,for (int 小姐:=,0;,小姐:& lt;, list.size();,我+ +),{ ,g.setColor (new 颜色(0,0,255)); ,g.fillRect (10 + list.get (i) .getX () * 10, 40 + list.get (i) .getY() * 10, 10日,10); ,} ,} ,} ,public void  actionPerformed (ActionEvent e), { ,如果(e.getSource ()==newGame) { ,newGame.setEnabled(假);=,start 真实; ,rx=r.nextInt (40); ry=r.nextInt (30); ,snakeAct tempAct =, new snakeAct (); ,tempAct.setX (20); ,tempAct.setY (15); ,list.add (tempAct); ,this.requestFocus ();=,,nThread  new 线程(这); ,nThread.start (); ,重画(); ,} ,如果(e.getSource ()==stopGame) { ,system . exit (0); ,} ,如果(e.getSource()==好){ ,list.clear (); ,开始=false; ,newGame.setEnabled(真正的); ,dialog.setVisible(假); ,fenShu=0; ,速度=0; ,重画(); ,} ,} ,private void 吃(),{ ,if (rx==list.get (0) .getX(),和ry==list.get (0) .getY ()), {=,,rx  r.nextInt (40); ry =, r.nextInt (30); ,snakeAct tempAct =, new snakeAct (); ,tempAct.setX (list.get (list.size () 1) .getX ()); ,tempAct.setY (list.get (list.size () 1) .getY ()); ,list.add (tempAct);=,,fenShu  fenShu + 100 + 10 *速度; ,eat1 + +; ,如果(eat1-eat2>=4) { ,eat2=eat1; ,速度+ +; ,} ,} ,} ,public void  otherMove () { ,snakeAct tempAct =, new snakeAct (); ,for (int 小姐:=,0;,小姐:& lt;, list.size();,我+ +),{ ,if (i==1), { ,list.get(我).setX (list.get (0) .getX ()); ,list.get(我).setY (list.get (0) .getY ()); ,}else 如果(i> 1) { ,tempAct=list.get(张); ,list.set(张,list.get(我)); ,list.set(我,tempAct); ,} , ,} ,} ,public void 移动(int  int , x, y) { null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null 如何在java项目中利用swing框架实现一个贪吃蛇游戏