`
myloveiscomealone
  • 浏览: 10382 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

坦克大战

阅读更多
读书时的做的东西,今天把它贴出来,望大家不吝赐教!坦克大战的部份代码我提供下载,大家可以试着去玩一下!那时候写代码没有什么注释,以至于现在都有点看不懂了,见笑了!
package tank;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.util.List;
import java.util.Random;

public class Tank {
	int x;
	int y;
	int bdx;
	int step=0;
	int superZid=3;
	int zuanting=0;
	int zuantcount=0;
	int guancount=0;
	int zuantingkai=0;

    enum Direction{L,LU,U,UR,R,RD,D,DL,STOP};
	boolean l=false,u=false,r=false,d=false;
	Direction dir=Direction.STOP;
	Direction  gunDir=Direction.U;
    TankClient tc=null;
    public static final int XSPEED=5;
    public static final int YSPEED=5;
    Toolkit tk=Toolkit.getDefaultToolkit();
    Image  img=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankU1.gif"));
    Image  img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankU.gif"));
    Image  lfimg=tk.getImage(TankClient.class.getClassLoader().getResource("images/life.gif"));
    int Dinx=0,Diny=0;
    boolean good=false;
    boolean life=true;
    
	public Tank(){}
	
	public Tank(int x, int y,Direction dir, TankClient tc,boolean good) {
		this.x = x;
		this.y = y;
		this.dir=dir;
		this.tc=tc;
		this.good=good;
	}
	
	public Tank(int x, int y, TankClient tc,boolean good,int bdx) {
		this.x = x;
		this.y = y;
		this.tc=tc;
		this.good=good;
		this.bdx=bdx;
	}

    public void draw(Graphics g){
    	if(life){
    		if(good)
		{    g.drawImage(img, x, y, null);
    		 g.drawImage(lfimg, x, y-20, null);
    	}
    		 else
    			 g.drawImage(img1, x, y, null);	
    		
    		move();
    		
    	}
    }
    public void setDirB(){
    
        if(dir==Direction.L)
        { 	 
			gunDir=Direction.L;
			if(this.bdx==2||this.bdx==3||this.bdx==4)
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankL2.gif"));
			else
				img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankL.gif"));
			
        }
		 else if(dir==Direction.LU)
		{    		     
			gunDir=Direction.LU;
			if(this.bdx==2||this.bdx==3||this.bdx==4)
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankLU2.gif"));
			else
				img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankLU.gif"));

		}
		else if(dir==Direction.U)
		{
			gunDir=Direction.U;
			if(this.bdx==2||this.bdx==3||this.bdx==4)
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankU2.gif"));
			else
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankU.gif"));
		}
		else if(dir==Direction.UR)
		{
			gunDir=Direction.UR;
			if(this.bdx==2||this.bdx==3||this.bdx==4)
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankRU2.gif"));
			else
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankRU.gif"));
		}
		else if(dir==Direction.R) 
		{
			gunDir=Direction.R;
			if(this.bdx==2||this.bdx==3||this.bdx==4)
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankR2.gif"));
			else
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankR.gif"));
		}
		else if(dir==Direction.RD)
		{
			gunDir=Direction.RD;
			if(this.bdx==2||this.bdx==3||this.bdx==4)
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankRD2.gif"));
			else
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankRD.gif"));

		}
		else if(dir==Direction.D)
		{
			gunDir=Direction.D;
			if(this.bdx==2||this.bdx==3||this.bdx==4)
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankD2.gif"));
			else
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankD.gif"));
		}
		else if(dir==Direction.DL)
		{
			gunDir=Direction.DL;
			if(this.bdx==2||this.bdx==3||this.bdx==4)
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankLD2.gif"));
			else
			img1=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankLD.gif"));

		}
	}

    
    public void keyPressed(KeyEvent e)
	{
	   int  key=e.getKeyCode();

	    switch(key)
	    {
	      
	    
	    
	      case KeyEvent.VK_RIGHT:
                 r=true;
                 break;
	      case KeyEvent.VK_DOWN:
	    	     d=true;
	    	     break;
	      case KeyEvent.VK_LEFT:
	    	     l=true;
	    	     break;
	      case KeyEvent.VK_UP:
	    	     u=true;
	    	     break;
	    }
	    setDir();
		
	}

    public void setDir(){
		if(l&&!u&&!r&&!d) 
		{
			dir=Direction.L;
			gunDir=Direction.L;
			img=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankL1.gif"));
		}
		else if(l&&u&&!r&&!d)
		{    		     
			dir=Direction.LU;
			gunDir=Direction.LU;
			img=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankLU1.gif"));

		}
		else if(!l&&u&&!r&&!d)
		{
			dir=Direction.U;
			gunDir=Direction.U;
			img=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankU1.gif"));
		}
		else if(!l&&u&&r&&!d)
		{
			dir=Direction.UR;
			gunDir=Direction.UR;

			img=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankRU1.gif"));
		}
		else if(!l&&!u&&r&&!d) 
		{
			dir=Direction.R;
			gunDir=Direction.R;

			img=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankR1.gif"));
		}
		else if(!l&&!u&&r&&d)
		{
			dir=Direction.RD;
			gunDir=Direction.RD;

			img=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankRD1.gif"));

		}
		else if(!l&&!u&&!r&&d)
		{
			dir=Direction.D;
			gunDir=Direction.D;

			img=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankD1.gif"));
		}
		else if(l&&!u&&!r&&d)
		{
			dir=Direction.DL;
			gunDir=Direction.DL;

			img=tk.getImage(TankClient.class.getClassLoader().getResource("images/tankLD1.gif"));

		}
		else if(!l&&!u&&!r&&!d) 
		{
			dir=Direction.STOP;

		}
		}
    
public void move(){
      
       zhangq(tc.walls);
       zhuangxing(); 
	Dinx=x; Diny=y;
	
		
	  if(dir==Direction.L)
			x-=XSPEED;
		else if(dir==Direction.LU)
		{
			x-=XSPEED;
		    y-=YSPEED;
		}
		else if(dir==Direction.U)
		{   
		    y-=YSPEED;
		}
		else if(dir==Direction.UR)
		{
			x+=XSPEED;
		    y-=YSPEED;
		}
		else if(dir==Direction.R)
		{
			x+=XSPEED;
		}
		else if(dir==Direction.RD)
		{
			x+=XSPEED;
		    y+=YSPEED;
		}
		else if(dir==Direction.D)
		{
		    y+=YSPEED;
		}
		else if(dir==Direction.DL)
		{
			x-=XSPEED;
		    y+=YSPEED;
		}
		
		if(x>tc.getWidth()-50)
		{
			stop();
		}else if(x<0)
		{
			stop();
		}
		if (y>tc.getHeight()-50)
		{
			stop();
		}else if(y<20)
		{
			stop();
		}
		
		Direction[] dirs = Direction.values();
	
		
	  if(zuanting==0)
   {   
		
		if(!good)
		{    
			if(step==0)
			{
			  Random r=new Random();
			  dir=dirs[r.nextInt(9)];
			  setDirB();
			  step=10+r.nextInt(20);
			}
			step--;
		    Random k=new Random();
			if(k.nextInt(10)==0)
			{
				
			  tc.bullets.add(fire());
			} 
		
	   }  

	}
   if(zuanting==1){
		if(zuantingkai==0){
	   this.dir=dir=Direction.STOP;
		zuantingkai=1;
		}
   }	  
   if(zuanting==1)
   {
	   if(zuantcount==200)
	   {
	        for(int i=0;i<tc.enemy.size();i++)
          {
     	      ((Tank)tc.enemy.get(i)).zuanting=0; 
     	      ((Tank)tc.enemy.get(i)).zuantcount=0; 
          }  
          tc.myTank.zuanting=0;
          tc.myTank.zuantcount=0;
          
	   }
     zuantcount++;
   }

}
   public void zhuangxing()
   {
		for(int i=0;i<tc.dj.size();i++)
		{
		 if(good)
		 { 
			if(this.getRectangle().intersects(((Csqj)tc.dj.get(i)).getRectangle()))
		    { 
			
			  
			   if(((Csqj)tc.dj.get(i)).getDj()==0)
			   {
				   tc.setFlaga(false);
				   tc.gaiditu(1);
				   tc.lopad();
				   tc.goujimiaoshan(1);
			   }else if(((Csqj)tc.dj.get(i)).getDj()==1)
			   {   zuantingkai=0;
			   for(int n=0;n<tc.enemy.size();n++)
 	           {
 	        	    ((Tank)tc.enemy.get(n)).zuanting=1; 
 	        	  
               }  
 	          tc.myTank.zuanting=1;
			   }
			   else if(((Csqj)tc.dj.get(i)).getDj()==2)
			   {
				  
				  tc.zidsuducount=1;
			   }  
			   else if(((Csqj)tc.dj.get(i)).getDj()==3)
			   {  
				   tc.addlife();
				
			   }  
			   else if(((Csqj)tc.dj.get(i)).getDj()==4)
			   {  
				 this.superZid+=3;
				 tc.superZid+=3;
			   } 
			   else if(((Csqj)tc.dj.get(i)).getDj()==5)
			   {  
				tc.flaga=true;tc.gb=1;
			   }  
			   else if(((Csqj)tc.dj.get(i)).getDj()==6)
			   {  
				   
				  tc.husheng=1;
			   }  
		      tc.dj.remove(i);
	     	}
		 } 
		}
   }
    public void keyReleased(KeyEvent e) {
    	 int  key=e.getKeyCode();
      
 	    switch(key)
 	    { case KeyEvent.VK_CONTROL:
               if(life){ 	    	 
	    	  tc.bullets.add(fire());
               }   
	    	  break;
 	      case KeyEvent.VK_RIGHT:
                  r=false;
                  break;
 	      case KeyEvent.VK_DOWN:
 	    	     d=false;
 	    	     break;
 	      case KeyEvent.VK_LEFT:
 	    	     l=false;
 	    	     break;
 	
 	     case KeyEvent.VK_K:
 	    	  break;
 	      case KeyEvent.VK_UP:
 	    	     u=false;
 	    	     break;
 	    
 	     case KeyEvent.VK_F1:
 	    	if(guancount==0)
 	    	 {tc.guan();
 	        	guancount=1;
 	    	 }else
 	    	 {
 	    		tc.kai();
 	    		guancount=0;
 	    	 }
               break;    
 	     case KeyEvent.VK_C:
 	    	if(life&&superZid>0){
 	    	 superfire(); 
 	    	}
 	    	if(superZid>0)
 	    	{
 	    		superZid--;
 	 	    	tc.superZid--;
 	    	}
 	    	 break;
      }
 	    setDir();	
	}
    public void stop()
    {
    	x=Dinx; y=Diny;
    }
    public void superfire(){
    	        Direction[]	dirs=Direction.values();
    		   for(int i=0;i<8;i++)
    		   {
    			Zid b1=new Zid(x,y,dirs[i],tc,this.good);
    		    tc.bullets.add(b1);
    		   }			
    }
    
public Zid fire(){
	Zid b=new Zid(x,y,gunDir,tc,this.good);
	return b;	
	}

public boolean isGood() {
	return good;
}

public boolean isLife() {
	return life;
}

public Rectangle  getRectangle(){
	
	return new Rectangle(x,y,50,50);
	
}

public void zhangq(List<Wall> wall){
	for(int i=0;i<wall.size();i++){
	if(this.getRectangle().intersects(wall.get(i).getRectangle()))
	{  if ((int)wall.get(i).shu!=3){
		stop();
	   }
	}
	}
}
public boolean zhangtk(Tank tk)
{   boolean flag=false;
   if(this!=tk)
   flag=this.getRectangle().intersects(tk.getRectangle());
    return flag;
	
}
public void setDir(Direction dir) {
	this.dir = dir;
}

public void setGunDir(Direction gunDir) {
	this.gunDir = gunDir;
}
}


//--------------此类是tank的主类.

  • 大小: 105.1 KB
分享到:
评论
30 楼 amnotsuperior 2011-01-24  
过年回家  慢慢看
29 楼 myloveiscomealone 2010-08-19  
qqj_1979 写道
tank.Tank.Direction

这个类不存在呀?

都要.在out.product里面的有编译好的类,就那么几外你拿来运行一下就可以了!
28 楼 qqj_1979 2010-08-19  
tank.Tank.Direction

这个类不存在呀?
27 楼 liuyanginjava 2010-08-19  
很久 很久 之前写过这些东西
26 楼 shellfish 2010-08-16  
<p>运行的很好,跨平台,这是我在红帽上的截图。<img src="http://dl.iteye.com/upload/picture/pic/69570/83e51cfa-76c5-3d23-83f9-eb95e267ae5c.png" alt="java坦克大战" width="750" height="600"></p>
25 楼 joejoewei 2010-08-13  
坦克还有45度的??
24 楼 xiaoyp 2010-08-13  
已经不是特别想用JAVA用游戏的人路过~~
不过楼主~~你的地方坦克还能向45度走~~太牛了吧~~
23 楼 aitracy 2010-08-13  
ls     
22 楼 JustDoNow 2010-08-13  
为什么投隐藏呢
21 楼 myloveiscomealone 2010-08-13  
这个项目只有七个类,然后就是图片了,大伙找到product下面的就可以运行了,源代码在SRC下面,那时候是用jbuilder做的!代码的可读性很差,见笑了!
20 楼 tedeum 2010-08-13  
楼主很强,现在少搞java,膜拜一下
19 楼 myloveiscomealone 2010-08-13  
雨后阳光 写道
程序运行不了

程序完全可以运行,这个我不敢忽悠大家.要不然我怎么截图的呢?
18 楼 myloveiscomealone 2010-08-13  
zhongxinhu 写道
这不就是马士兵的视频教的那个吗?

不是.是我亲手写的!那时候很不规范!
17 楼 JavaEye4Cwy 2010-08-13  
我看到了,很好。
16 楼 zhongxinhu 2010-08-13  
这不就是马士兵的视频教的那个吗?
15 楼 雨后阳光 2010-08-13  
程序运行不了
14 楼 kingwood2005 2010-08-12  
代码goingdown!
看的眼疼啊!
13 楼 cannysqurrel 2010-08-12  
怎么我按ctrl不出子弹呢
12 楼 femto 2010-08-12  
大致查看了一下, 询问一下楼主,

public class PainThread implements Runnable{

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



}

}
也就是重画是简单的逻辑,没有算幁?
11 楼 cloud21 2010-08-12  
很不错,喜欢做游戏。

相关推荐

    C++大作业坦克大战源码.zip

    C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码。C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码C++大作业坦克大战源码C++大作业...

    Java语言编写的经典坦克大战游戏.zip

    Java语言编写的经典坦克大战游戏.zipJava语言编写的经典坦克大战游戏.zip Java语言编写的经典坦克大战游戏.zipJava语言编写的经典坦克大战游戏.zip Java语言编写的经典坦克大战游戏.zipJava语言编写的经典坦克大战...

    Python坦克大战源代码坦克大战.zip

    【Python坦克大战源代码坦克大战.zip】是一个包含Python语言实现的坦克大战小游戏的源代码集合。这个项目旨在提供一个互动的、基于文本的娱乐体验,让玩家能够享受经典的坦克战斗游戏,同时学习和理解Python编程的...

    期末作业课程设计使用java开发的坦克大战小游戏源码.zip

    期末作业课程设计使用java开发的坦克大战小游戏源码期末作业课程设计使用java开发的坦克大战小游戏源码期末作业课程设计使用java开发的坦克大战小游戏源码期末作业课程设计使用java开发的坦克大战小游戏源码期末作业...

    C++ 控制台版本坦克大战游戏

    C++ 控制台版坦克大战游戏简介 内容概要 C++ 控制台版坦克大战游戏是一款基于C++编程语言开发的经典射击游戏。 通过键盘控制坦克移动攻击,躲避敌方坦克的攻击,同时消灭它们以完成关卡任务,支持地图编辑。 适用...

    Unity3d 多人在线坦克大战源码

    Unity3d 多人在线坦克大战源码 Unity精品小游戏源码 , Unity完整项目源码 是完整项目的压缩包,可直接运行,无需其他操作。 适合二次开发和学习使用,都是经典游戏,需要其他游戏源码包可以看我主页。 直接可以运行 , ...

    vb.net 坦克大战 小游戏程序源码

    资源名:vb.net 坦克大战 小游戏程序源码 资源类型:程序源代码 源码说明: FC经典坦克大战(VB.NET)源码 源码描述: 一、源码特点 1、采用VB.NET开发的经典坦克大战(FC),仿任天堂的坦克大战。全开源代码,测试请...

    坦克大战素材及源码

    《坦克大战素材及源码解析》 坦克大战,这款经典的街机游戏,承载了许多人的童年记忆。对于JAVA初学者来说,通过分析和学习坦克大战的源码,不仅可以深入理解编程基础,还能掌握游戏开发的基本流程和技术。下面我们...

    FC红白机坦克大战素材

    【FC红白机坦克大战素材】是一套专为游戏开发者或复古游戏爱好者准备的资源集合,主要用于重现或创作与红白机(Family Computer)平台上经典游戏"坦克大战"相关的项目。红白机,又被称为FC,是80年代末至90年代初...

    坦克大战图片素材

    【坦克大战图片素材】是一个与经典游戏"90坦克大战"相关的资源集合,包含了游戏中的图像素材和可能的背景音乐。这个压缩包旨在为游戏开发者、设计师或爱好者提供参考资料,帮助他们在自己的项目中重现或创新这款深受...

    坦克大战素材包

    【坦克大战素材包】是一个专为游戏制作设计的资源集合,包含了丰富的素材,适用于开发以“坦克大战”为主题的游戏项目。这个素材包以其全面性和高质量,为开发者提供了制作游戏所需的图形、音效以及可能的逻辑元素,...

    C++坦克大战完整代码.zip

    《C++实现坦克大战游戏详解》 坦克大战是一款经典的双人对战小游戏,深受程序员和游戏爱好者的喜爱。本文将围绕使用C++编程语言实现的坦克大战游戏进行深入解析,帮助读者理解游戏背后的编程思想和技术。 首先,...

    C语言-坦克大战小游戏(纯控制台显示)

    《C语言实现的坦克大战小游戏详解》 C语言是一种基础且强大的编程语言,它以其简洁的语法和高效性被广泛应用于系统开发、嵌入式系统以及各种软件开发中。在这个项目中,我们将深入探讨如何使用C语言来创建一个坦克...

    基于C++语言开发的坦克大战游戏源代码(含exe可执行文件)

    基于C++语言开发的坦克大战游戏源代码(含exe可执行文件) 基于C++语言开发的坦克大战游戏源代码(含exe可执行文件) 基于C++语言开发的坦克大战游戏源代码(含exe可执行文件) 基于C++语言开发的坦克大战游戏源代码(含exe...

    Python游戏坦克大战.zip

    《Python游戏坦克大战》是一款利用Python编程语言开发的复古风格射击游戏,深受编程爱好者和游戏迷们的喜爱。在这个项目中,我们将深入探讨Python在游戏开发中的应用,以及如何利用Python来实现坦克大战的核心功能。...

    经典红白机坦克大战素材

    【坦克大战游戏背景与历史】 坦克大战是一款深受全球玩家喜爱的经典电子游戏,源自于1985年日本的任天堂FC(Family Computer)平台。这款游戏以其简单易上手的操作、富有挑战性的关卡设计和双人合作模式,成为了80...

    java做的坦克大战(带图片)

    《Java实现的坦克大战游戏详解》 坦克大战是一款深受玩家喜爱的经典游戏,它结合了策略、射击和竞技的元素,让玩家在紧张刺激的战斗中体验到无尽的乐趣。本项目是用Java语言开发的坦克大战游戏,下面将详细介绍其...

    FC坦克大战素材(学习参考使用)

    《FC坦克大战素材》是一个专为游戏开发爱好者和学习者准备的资源集合,主要用于了解和研究经典的FC(Family Computer,任天堂家用游戏机)坦克大战游戏。在这个压缩包中,你将找到一系列与FC坦克大战相关的素材,...

    C语言坦克大战源码

    《C语言坦克大战源码解析》 C语言作为一种基础且强大的编程语言,广泛应用于系统开发、软件工程以及游戏编程等领域。本项目“C语言坦克大战”是针对C语言初学者和爱好者的一个实战项目,旨在通过实际的游戏开发,...

    坦克大战js小游戏源码 HTML5坦克大战游戏代码(HTML+CSS+JavaScript )

    在坦克大战中,CSS使得游戏画面更加生动,坦克的移动、碰撞效果、背景的动态变化等都离不开CSS的精心设计。 JavaScript作为前端开发的核心语言,承担了游戏的主要逻辑和交互功能。它处理游戏的事件响应,如用户输入...

Global site tag (gtag.js) - Google Analytics