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

📄 tankclient.java

📁 坦克游戏的源码,绝对震撼.大家快来呀,一切都是真的,绝对不骗人
💻 JAVA
字号:
package tank;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;
import java.util.Random;

import javax.swing.JOptionPane;

import tank.Tank.Direction;



public class TankClient extends Frame {
	Image tp=null;
	Zid zid=null;
	Tank myTank=new Tank(520,550,Tank.Direction.STOP,this,true);
	ArrayList bullets=new ArrayList();
	ArrayList   enemy=new ArrayList();
	ArrayList   explodes=new ArrayList();
	ArrayList   walls=new ArrayList();
	ArrayList    dj=new ArrayList();
    ArrayList ditulist=new ArrayList();
    PainThread t;
    Thread thread;
    int huanlife=0;
    int zidsudux=10;
    int zidsuduy=10;
    int zidsuducount=0;
    int husheng=0;
    int hushengcount=0;
    int superZid=3;
    int fenshu=0;
   
    
	 
	boolean flaga=true;
	 int q=0;
     int gai=0;
     int gai1=0;
     int open=0; 
	
	int count=0; int ppt=50;
	int clera=0;
	int tanjieshu=0;

    public void guan(){
    	
      thread.suspend();	
    }
    public void kai(){
    	thread.resume();
    	
    }
	
  public void frame(){
	 
	  myTank.setDir(Direction.STOP);
	  myTank.l=false;myTank.u=false;myTank.r=false;myTank.d=false;
	  myTank.gunDir=Direction.U;
	  JOptionPane.showMessageDialog(this,"游戏已结束!");
	  gai1=0;
	  huanlife=0;
	  tanjieshu=0;
	  zidsuducount=0;
	  fenshu=0;
	  flaga=false;
	  gb=0;
	  myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life.gif"));
	  myTank.life=true;
	  myTank.x=520;myTank.y=550;
	  myTank.img=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/tankU1.gif"));
	  this.superZid=3;
	  myTank.superZid=3;
	  count=0;
	  bullets.clear();
	  clera=1;
	  enemy.clear();
	  explodes.clear();
	  walls.clear();
	  dj.clear();
	  lopad();
	  flaga=true;
	 
	  
	 
	  }
    
    public void TestFram(){
    	
    	this.setTitle("坦克大战");
    	this.setSize(750,600);
    	this.setLocation(200,60);
    	this.setVisible(true);
        t=new PainThread();
        thread=new Thread(t);
    	thread.start();
    	
    	Cunditu Cdt=new Cunditu(this);
    	
    	lopad();
        this.addWindowListener
        (
           new WindowAdapter()
           {
			public void windowClosing(WindowEvent e) 
			{
			   System.exit(0);
			}
           }
       );
           this.addKeyListener(new KeyMoniter());
       
        
         explodes.add(new Explode(1000,1000));//先放一炮加载
        
     } 
	
	int gb=0;
	boolean bla=true;
	public void del(int i,Zid zid)
	{   this.zid=zid;
		int wallshu=((Wall)walls.get(i)).shu;
		if(wallshu==2)
	  { myTank.setDir(Direction.STOP);
	    myTank.setGunDir(Direction.U);
		 walls.remove(i);	
		 bla=false;
	  }else{
		     bla=true;
		    }
	    if(bla)
	 {
		if(flaga)
	   {       if(wallshu==1||wallshu==8) 
			   walls.remove(i);	
	          if(zid.good)
	          {
	        	  if(gb==1){
	        		  if(wallshu==6)
	       			   walls.remove(i);	
	        	  }
	          }	   
       }else{
    	   if((wallshu!=8)&&(wallshu!=3)&&(wallshu!=7)&&(wallshu!=6))
    	   {   
    		   walls.remove(i);	
    	   }
       }
	 }
	}
	
	public void goujimiaoshan(int open)
	{
		this.open=open;
	}
	
	public void paset()
	{ 
		
		  myTank.setDir(Direction.STOP);
		  myTank.l=false;myTank.u=false;myTank.r=false;myTank.d=false;
		  myTank.gunDir=Direction.U;
		  JOptionPane.showMessageDialog(this,"恭喜你已过关");
         myTank.life=true;
		 myTank.x=520;myTank.y=550;
		  myTank.img=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/tankU1.gif"));
		j1++;
		if(j1==6){
		j1=0;	
		}
		 bullets.clear();
		  enemy.clear();
		  explodes.clear();
		  walls.clear();
		  dj.clear();
		 count=0;  q=0;  gai1=0;
		 gai=0;
		lopad();
		flaga=true;

	 
	}

	public void paint(Graphics g) {

		drawMaps(g);
		g.drawString("大保险:"+superZid, 670, 50);
		g.drawString("分数:"+fenshu, 590, 50);
		
		myTank.draw(g);
		 for(int i=0;i<bullets.size();i++)
		   {  
	           Zid b=(Zid)bullets.get(i);
	           if(b.good)
	           {
	        	   zidsuducount();
	           }else{
	        	   zidsudux=10;
	        	   zidsuduy=10;
	           }
			   b.draw(g,zidsudux,zidsuduy);
		   }
		 for(int i=0;i<enemy.size();i++){
          	   Tank tank=(Tank)enemy.get(i);
          	   for(int j=0;j<enemy.size();j++)
          	   { 
          	       if(tank.zhangtk((Tank)enemy.get(j)))
          	       {
          	    	   tank.stop();
          	    	   ((Tank)enemy.get(j)).stop();
          	       }  
          	   
          	   }
          	   if(tank.zhangtk(myTank))
          	   {
          		     tank.stop();
          		     myTank.stop();
          	   }
          		   tank.draw(g);
	        	
	        }
		 for(int i=0;i<explodes.size();i++)
		   {   
			   Explode e=(Explode)explodes.get(i);
			  
			   if(e!=null && e.life)
		       {  
			     e.draw(g);
		       }
			   if(!e.life)
			   {
				   explodes.remove(e);
				   
			   }
		   }
		    
		 if((enemy.size()==0&&count<2))
		 {   
			 for(int i=0;i<10;i++)
	 	 	 {
			    enemy.add(new Tank(50+55*i,50,this,false,i));	 
			 }
			  count++;
			
		 }
		 
		 
		  
		 if((count==2)&&(enemy.size()==0)&&q==0){
			  q=1; 
			 paset();
		 }
		 for(int i=0;i<dj.size();i++)
		 {
			      Csqj qj=(Csqj)dj.get(i);
			      qj.draw(g);
			    
		     
			 	    
		 }

		
	}
	
	boolean kk=true;
   public void ox(int i){
	   if(kk)
		walls.remove(i);
   }
  
	public void update(Graphics g) {
		if(tp == null) {
			tp = this.createImage(800, 600);
		}
		Graphics gOffScreen = tp.getGraphics();
		Color c = gOffScreen.getColor();
		gOffScreen.setColor(Color.green);
		gOffScreen.fillRect(0, 0, 800, 600);
		gOffScreen.setColor(c);
		paint(gOffScreen);
		g.drawImage(tp, 0, 0, null);
		if(husheng==1){
			 if(hushengcount==600)
			 {
				 husheng=0;
				 hushengcount=0;
			 } 
			  hushengcount++;
		}
	}

	int j1=0;
    public void lopad()
    {   
    
         
    	   for(int i=0;i<12;i++)
    	   {
    		   for(int j=0;j<15;j++)
    		   {
    			   if(((int[][])ditulist.get(j1))[i][j]==1)
    			   {   if(gai1==0){
    				  if(gai!=1){ 
    				     walls.add(new Wall(j*50,i*50,1,gai,this));
    				  }
    			   }
    			   }
    			   else if(((int[][])ditulist.get(j1))[i][j]==2)
    			   {   if(gai1==0){
    				     if(gai!=1){  
    				    walls.add(new Wall(j*50,i*50,2,gai,this));
    				     }
    				     }
    			   }
    			   else if(((int[][])ditulist.get(j1))[i][j]==3)
    			   {   if(gai1==0){    
    				   if(gai!=1)
    				   walls.add(new Wall(j*50,i*50,3,gai,this));
    			        
    			       }
    			   }
    			   else if(((int[][])ditulist.get(j1))[i][j]==8)
    			   {   
    				   walls.add(new Wall(j*50,i*50,8,gai,this));
    			
    			   }
    			   else if(((int[][])ditulist.get(j1))[i][j]==6)
    			   {   if(gai1==0){    
    				   if(gai!=1)
    				   walls.add(new Wall(j*50,i*50,6,gai,this));
    			        
    			       }
    			   }
    			   else if(((int[][])ditulist.get(j1))[i][j]==7)
    			   {   if(gai1==0){    
    				   if(gai!=1)
    				   walls.add(new Wall(j*50,i*50,7,gai,this));
    			        
    			       }
    			   }
    			}
    		 } 
    	
    	
    
    
    }
    public void gaiditu(int gai)
    {
    	this.gai=gai;
    	
    }
    public void drawMaps(Graphics g)
    {
    	  for(int i=0;i<walls.size();i++){
    		            Wall wals=(Wall)walls.get(i);  
    		             wals.draw(g);
    		  
    	  }
    	
    }
    




	public static void main(String[] args) {
    	 TankClient frame=new TankClient();
    	 frame.TestFram();
 
    
	}

   public static void zddeldj(TankClient frame){
	   for(int j=0;j<frame.dj.size();j++)
	    {    	 for(int i=0;i<4;i++)
	    	 {
	    		
	    		  try
	    		  {
					Thread.sleep(1000);
			      } catch (InterruptedException e) 
			      {
		          e.printStackTrace();
				   }
	    	 } 
	    	 frame.dj.remove(j);
		
	    }
	   
   }
  
	public void zidsuducount()
	{  if(zidsuducount==1)
	   {  
	   
		  this.zidsudux=20;
		  this.zidsuduy=20;
		 
	    }
	
	}
	public class PainThread implements Runnable{

	public void run() {
	while(true){
	  repaint();
	  try {
		Thread.sleep(50);
	} catch (InterruptedException e) {
		// TODO 自动生成 catch 块
		e.printStackTrace();
	}
		
		
		
	}
		
	}
	  
	  
	  
  }






   class KeyMoniter extends KeyAdapter{


	public void keyPressed(KeyEvent e) {
	           myTank.keyPressed(e);
		   
    }


	public void keyReleased(KeyEvent e) {
	
		     myTank.keyReleased(e);
	}
	   
	   
	   
   }





public boolean isFlaga() {
	return flaga;
}

public void setFlaga(boolean flaga) {
	this.flaga = flaga;
}

public void huanlife()
{ 
   if(husheng==0)
   {	   
	if(huanlife==0)
 {
   myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life1.gif"));
   huanlife=1;
 }
  else if(huanlife==1)
  {
	  myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life2.gif"));
	  huanlife=2;
  }
  else if(huanlife==2)
  { 
	  myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life3.gif"));
	  huanlife=3;
  }
  else if(huanlife==3&&tanjieshu==0)
  { 
	myTank.life=false; 
	tanjieshu=1;
	this.gai=0;
	this.gai1=0;
	frame();
	
  }
   }
}

public void addlife()
{
	
	if(huanlife==0)
	 {  
	   myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life.gif"));
	  huanlife=0;
	 }
	  else if(huanlife==1)
	  { 
		  myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life.gif"));
		  huanlife=0;
	  }
	  else if(huanlife==2)
	  { 
		  myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life1.gif"));
		  huanlife=1;
	  }
	  else if(huanlife==3)
	  { 
		 
		  myTank.lfimg=myTank.tk.getImage(TankClient.class.getClassLoader().getResource("images/life2.gif"));
		  huanlife=2;
	  }
}



}

⌨️ 快捷键说明

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