⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 greed.java

📁 JAVA贪食蛇(java).比较老些
💻 JAVA
字号:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class greed extends Applet implements Runnable {
    JButton b1,b2;
    int initf=1,kong=1;
    int speed=500;
    int len=2,len1=3;
    int sameflag=0;
    int NEW=1,nposx,nposy,rp=0;
    int posx,posy,rposx,rposy;
    int radius;
    Thread thread;
    private Image bgImage;
    private Graphics bg;
    int l,w;
    int flag,rflag,fr=1,ffr=1;
    Random ran=new Random();
    int[] posX;
    int[] posY;
    int[] tx;
    int[] ty;
    int[] tx1;
    int[] ty1;
    JComboBox speedcombobox;
    String[] choices={"1","2","3","4","5","6","7","8","9"};
    Label scorelabel;
    boolean can=false;
    
    public void init(){
        speed=500;
        rp=0;
        NEW=1;
        len=2;
        len1=3;
        posx=150; posy=150;
        radius=10;
        l=300; w=300;
        flag=1;
        thread=new Thread(this);
        b1=new JButton("开始");
        b2=new JButton("暂停");
        b1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(ffr==1)
                { speedcombobox.setEnabled(false);
                  thread.start();
                  can=true;
                  initf+=1;
                  ffr=(ffr+1)%2;
                  b1.setLabel("重新");
                }else{
                    b1.setLabel("开始");
                    stop();
                    can=false;
                    posx=150;
                    posy=150;
                    repaint();
                    speedcombobox.setEnabled(true);
                    scorelabel.setText("0");
                    repaint();
                    init();
                    ffr=(ffr+1)%2;
                }
            }}
        );
        b2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(fr==1)
                { suspend();
                  can=false;
                  fr=(fr+1)%2;
                  b2.setLabel("继续");}
                else
                {thread.resume();
                 fr=(fr+1)%2;
                 can=true;
                 b2.setLabel("暂停");}
            }}
        );
        
        this.setLayout(null);
        b1.setBounds(310,185,80,20);
        b2.setBounds(310,220,80,20);
        add(b1);
        add(b2);
        if(initf==1)
        {speedcombobox=new JComboBox(choices);
         speedcombobox.addItemListener(new SpeedListener());
         speedcombobox.setEditable(false);
         speedcombobox.setBounds(310,50,80,20);
         add(speedcombobox);
         scorelabel=new Label("0");
         scorelabel.setBounds(310,120,80,20);
         add(scorelabel);
        }
        addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if(can)
                    judgement(e);
                
            }
        });
        
        b1.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if(can)
                    judgement(e);
                
            }
        });
        b2.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if(can)
                    judgement(e);
                
            }
        });
        posX=new int[len];
        posY=new int[len];
        tx1=new int[len];
        ty1=new int[len];
        tx=new int[len1];
        ty=new int[len1];
        posX[0]=posx;
        posY[0]=posy;
        posX[1]=posx;
        posY[1]=posy-10;
        
        
    }
    public void suspend(){
        if(thread!=null)
            thread.suspend();
    }
/*public void start(){
if(thread==null)
{thread=new Thread(this);
thread.start();
}}
 */public void stop(){
     thread.stop();
 }
 public void run(){
     int i;
     
     while(true){
         
         if(posX[0]==nposx&&posY[0]==nposy)
             
         {len=len+1;
          len1=len1+1;
          tx1=new int[len];
          ty1=new int[len];
          for(int m=0;m<posX.length;m++)
          {tx1[m]=posX[m];
           ty1[m]=posY[m];}
          
          posX=new int[len];
          posY=new int[len];
          for (int m=0;m<posX.length ;m++)
          {posX[m]=tx1[m]; posY[m]=ty1[m];
          }
          tx=new int[len1];
          ty=new int[len1];
          rp=0;
          NEW=1;
          kong=0;
          if(posX[len-2]-posX[len-3]==0&&posY[len-2]-posY[len-3]==10)
          {posX[len-1]=posX[len-2];
           posY[len-1]=posY[len-2]+10;
          }
          if(posX[len-2]-posX[len-3]==0&&posY[len-2]-posY[len-3]==-10)
          {posX[len-1]=posX[len-2];
           posY[len-1]=posY[len-2]-10;
          }
          if(posX[len-2]-posX[len-3]==10&&posY[len-2]-posY[len-3]==0)
          {posX[len-1]=posX[len-2]+10;
           posY[len-1]=posY[len-2];
          }
          if(posX[len-2]-posX[len-3]==-10&&posY[len-2]-posY[len-3]==0)
          {posX[len-1]=posX[len-2]-10;
           posY[len-1]=posY[len-2];
          }
          
          
         }
         
         rposx=posX[0];
         rposy=posY[0];
         if(rflag==1&&flag==4)
             flag=1;
         if(rflag==2&&flag==3)
             flag=2;
         if(rflag==3&&flag==2)
             flag=3;
         if(rflag==4&&flag==1)
             flag=4;
         if (flag==1)
         {rposx=rposx+0;
          rposy=rposy+10;
          for(i=0;i<posX.length-1;i++)
          {tx[i+1]=posX[i];
           ty[i+1]=posY[i];
          }
          tx[0]=rposx;
          ty[0]=rposy;
          for(i=0;i<posX.length;i++)
          {posX[i]=tx[i];
           posY[i]=ty[i];
          }
          rflag=flag;
         }
         if(flag==2)
         {rposx-=10;
          rposy=rposy+0;
          for(i=0;i<posX.length-1;i++)
          {tx[i+1]=posX[i];
           ty[i+1]=posY[i];
          }
          tx[0]=rposx;
          ty[0]=rposy;
          for(i=0;i<posX.length;i++)
          {posX[i]=tx[i];
           posY[i]=ty[i];
          }
          
          
          rflag=flag;}
         if(flag==3)
         {rposx+=10;
          rposy+=0;
          for(i=0;i<posX.length-1;i++)
          {tx[i+1]=posX[i];
           ty[i+1]=posY[i];
          }
          tx[0]=rposx;
          ty[0]=rposy;
          for(i=0;i<posX.length;i++)
          {posX[i]=tx[i];
           posY[i]=ty[i];
          }
          rflag=flag;
         }
         if(flag==4)
         {rposx+=0;
          rposy-=10;
          for(i=0;i<posX.length-1;i++)
          {tx[i+1]=posX[i];
           ty[i+1]=posY[i];
          }
          tx[0]=rposx;
          ty[0]=rposy;
          for(i=0;i<posX.length;i++)
          {posX[i]=tx[i];
           posY[i]=ty[i];
          }
          rflag=flag;}
         if(NEW==1) {
             do{
                 nposx=10*((ran.nextInt() >>> 1)%27+1);
                 nposy=10*((ran.nextInt()>>>1)%27+1);
                 for(int n=0;n<posX.length;n++)
                     if(nposx==posX[n]&&nposy==posY[n])
                         sameflag=1;
                 
             }
             while(sameflag==1);
             NEW=0;
             rp=1;}
         if(posX[0]>=290||posX[0]<=3)
             ex();
         if(posY[0]>=290||posY[0]<=3)
             ex();
         for(int x=0;x<posX.length-1;x++)
             if(posX[0]==posX[x+1]&&posY[0]==posY[x+1])
                 ex();
         this.repaint();
         try{Thread.sleep(speed);
         }catch(InterruptedException e){e.printStackTrace();}
     }
 }
 
 public void paint(Graphics g){
     g.setColor(Color.red);
     for(int i=0;i<5;i++)
         g.drawRect(5+i,5+i,290-i*2,290-i*2);
     g.setColor(Color.green);
     for(int e=0;e<5;e++)
         g.drawRect(300+e,5+e,100-e*2,290-e*2);
     g.setColor(Color.blue);
     
     if(rp==1)
         g.fillRect(nposx,nposy,radius,radius);
     
     for(int i=0;i<posX.length;i++)
         g.fillRect(posX[i], posY[i], radius, radius);
     b1.repaint();
     b2.repaint();
     speedcombobox.repaint();
     g.drawString("Speed(1..9)",320,40);
     g.drawString("Score:",320,100);
     scorelabel.setText(Integer.toString((posX.length-2)*10));
     scorelabel.setBackground(new Color(191,186,220));
     scorelabel.repaint();
     g.setColor(Color.magenta);
     g.drawString("iqcutewizard",318,260);
     g.drawString("2004.2.20",323,280);
     if(((posX.length-2)*10)%200==0&&kong==0)
     {kong=1;
      speed=speed-40;
     }
     if(speed<=100)
         speed=100;
 }
 
 public void update(Graphics g) {
     
     
     if (bgImage == null) {
         bgImage = createImage(this.getSize().width,this.getSize().height);
         bg = bgImage.getGraphics();
     }
     bg.setColor(getBackground());
     bg.fillRect(0, 0, this.getSize().width,this.getSize().height);
     bg.setColor(getForeground());
     paint(bg);
     g.drawImage(bgImage, 0, 0, this);
 }
 
 public void judgement(KeyEvent e) {
     switch(e.getKeyCode()) {
         case KeyEvent.VK_DOWN:flag=1;repaint();break;
         case KeyEvent.VK_LEFT:flag=2;repaint();break;
         case KeyEvent.VK_RIGHT:flag=3;repaint();break;
         case KeyEvent.VK_UP:flag=4;repaint();break;
         default:break;
     }
 }
 public void ex(){
     
     JOptionPane anOptionPane=new JOptionPane();
     anOptionPane.showMessageDialog(this,"Game Over! Thank You!","HHr",JOptionPane.WARNING_MESSAGE);
     thread.stop();
 }
 public class SpeedListener implements ItemListener {
     public void itemStateChanged(ItemEvent e) {
         speed=500-(new Integer(speedcombobox.getSelectedItem().toString()).intValue())*40;
         
     }
 }
 
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -