如何在java项目中利用swing框架实现一个贪吃蛇游戏

  介绍

本篇文章给大家分享的是有关如何在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;   ,List list =, 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框架实现一个贪吃蛇游戏