AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > JAVA编程

JAVA版贪吃蛇

51自学网 2015-09-02 http://www.wanshiok.com

原帖及讨论:http://bbs.bccn.net/thread-100035-1-1.html

//做的不太好 有点白痴 没有什么扩展功能  请多多批评
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class TestSneak extends JPanel implements KeyListener,Runnable{
  
  final int width=30;
  final int height=20;
  int x=0,y=0;
  int a[][]=new int[21][31];
  int direction=4;
  final int up=1;
  final int down=3;
  final int left=2;
  final int right=4;
  final int length=8;//初始化长度
  final int initx=8;
  final int inity=5;
  Node node;
  Thread thread;
  Food food=new Food();
  LinkedList linklist;
  SpecialThread st;
  int count;
  
  boolean pause=true;
  public TestSneak(){
      this.setBackground(Color.black);
  //this.setSize(400,320);
     this.addKeyListener(this);
    this.setLayout(new BorderLayout());
    this.setOpaque(true);

  }
  
  public void init()
  {
       arrayIni();
       direction=4;
       count=0;
       linklist=new LinkedList();
      
       for(int i=10;i>=inity;i--)
       {
           node=new Node(initx,i);
           a[initx][i]=1;
           linklist.add(node);
          
       }
       for(int j=0;j<=30;j++){
           a[0][j]=3;
           a[20][j]=3;
       }
       for(int i=0;i<=20;i++){
           a[i][0]=3;
           a[i][30]=3;
       }
      

      
       this.creatFood();
  }
  public void arrayIni()
  {
      for(int i=0;i<20;i++)
      {
          for(int j=0;j<30;j++)
          {
              a[i][j]=0;
          }
      }
  }
  public void creatFood()
  {
      do
       food.creatFood();
       while(a[food.randomx][food.randomy]==1||a[food.randomx][food.randomy]==3);
       a[food.randomx][food.randomy]=2;
       count++;
       ///label.setText(String.valueOf(count));
  }
  

  
  
  public void changeDirection(int i)
  {
      if((i%2)!=(direction%2))
      {
          direction=i;
      }
  }
  
  public boolean go()
  {
      Node node1=(Node)linklist.getFirst();
    
    x=node1.x;
    y=node1.y;
  
      switch(direction)
      {
      
          case up:
                  //x=node1.x;
                  x--;break;
          case down:
                  //x=node1.x;
                  x++;break;
          case right:
                  //y=node1.y;
                  y++;break;
          case left:
                  //y=node1.y;
                  y--;break;
                  
      }
      
      if((x>=20)||(y>=30)||(x<0)||(y<0)||(a[x][y]==1)||(a[x][y]==3))
      {
              
             //System.out.println(x+"         "+y);
             JOptionPane.showMessageDialog(null,"a 啊 不行了 ");
             init();
              return false;
      }
  
      else
      {
          
          if(a[x][y]==2)
          {
              linklist.addFirst(new Node(x,y));
              a[x][y]=1;
              creatFood();
              
              
          }
          
        else    if(a[x][y]==0)
          {
          //    System.out.println("asdf");
              linklist.addFirst(new Node(x,y));
              a[x][y]=1;
              Node node=(Node)linklist.removeLast();
              a[node.x][node.y]=0;
              //System.out.println(node.x+"ok"+node.y+"  "+a[node.x][node.y]);
          
          }
          
          
          repaint();
          return true;
      }
      
  }
  
      public void  keyPressed(KeyEvent e)
    {
             //System.out.println("change");
          if(e.getKeyCode()==KeyEvent.VK_UP)
          {
          
              changeDirection(up);
          }
          if(e.getKeyCode()==KeyEvent.VK_DOWN)
          {
              changeDirection(down);
          }
          if(e.getKeyCode()==KeyEvent.VK_LEFT)
          {
              changeDirection(left);
          }
          if(e.getKeyCode()==KeyEvent.VK_RIGHT)
          {
              changeDirection(right);
          }
      }
      public void keyReleased(KeyEvent e){}
      public void keyTyped(KeyEvent e){}
      public void run()
      {
          init();
          
          while(true)
          {
              try
              {
                  if(pause)
                  {
                      
                      Thread.sleep(100);
                       go();
                      
                           //System.out.println("is go");
                   }
                  
              }catch(Exception e){System.out.println(e.getMessage());}
          
          }
          
          
      }
      
      public void creatSpecial()
      {
      
          
      }
      
      public void paint(Graphics g)
      {
      //    g.setColor(Color.white);
      //    g.fillRect(0,0,150,100);
  //    System.out.println(direction);
        super.paint(g);
        g.setColor(Color.BLUE);
        g.drawRect(0,0,300,200);
          for(int i=0;i<=20;i++)
          {
              for(int j=0;j<=30;j++)
              {
                  if(a[i][j]==1)
                  {
                      g.setColor(Color.red);
                      g.fillRect(10*j,10*i,9,9);
                  }
                  if(a[i][j]==2)
                  {
                      g.setColor(Color.yellow);
                      g.fillOval(10*j,10*i,10,10);
                  }
                  
                  if(a[i][j]==3)
                  {
                      g.setColor(Color.magenta);
                      g.fillRect(10*j,10*i,9,9);
                  }
                  
                   if(a[i][j]==4)
                  {
                      g.setColor(Color.green);
                      g.fillRect(10*j,10*i,9,9);
                  }
              }
          }
      }
      
     public static void main(String[] arg){
      
          TestSneak sm=new TestSneak();
          JFrame frame=new JFrame();
          frame.add(sm,"Center");
          frame.setUndecorated(true);
      
          frame.setBounds(300,300,310,210);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setVisible(true);
        sm.setFocusable(true);
          try
          {
              Thread thread =new Thread(sm);
              thread.start();
          }catch(Exception e){}
          
          
          
      }
      
      
  
  
}

 

 

 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
 
上一篇:JAVA写的打字游戏  下一篇:JAVA版彩票随机生成系统