java植物大战僵尸小游戏

用java玩经典游戏

  • 前言
  • 一、使用步骤
    • 1.直接运行
    • 2.截图
  • 总结


前言

自己为什么想学程序呢?那肯定是小时候玩那么多游戏就想着自己也能做出一款自己的游戏啊,后来到了大学,忘记了初衷,沉迷于世俗之中无法自拔,渐渐忘记了自己的梦想。后面也没想起有这么一回事,前几天得到一份资料,里面就有这么一份源码。当时把这个运行起来的时候就在想要是大一就因为这个认真学,现在会不会不一样。
现在我把这份源码分享给你们,希望你们因此对程序有兴趣而去努力认真的学


注意:此源码我是从别处得到的,仅供学习使用

一、使用步骤

1.直接运行

部分代码如下

	/**点击添加植物*/
	public void addPlant(MouseEvent e){
		//循环矩形框,判断点中的为哪一个
		for (int i = 0; i < 9; i++) {
			for (int j = 0; j < 5; j++) {
				if(recMap[i+j*9].contains(e.getPoint())&&!recMap[i+j*9].isPlanted()){
					//判断种植了向日葵
					if(flag == Util.FLAGNUM_SUNFLOWER){
						drawImg(i+j*9,50,Util.FLAGNUM_SUNFLOWER,Util.TYPENUM_FLOWER);
						flowerTime = 0;
						//是否种植了豌豆
					}else if(flag == Util.FLAGNUM_PEASHOOTER){
						drawImg(i+j*9,100,Util.FLAGNUM_PEASHOOTER,Util.TYPENUM_PEA);
						peaTime = 0;
						//仙人掌
					}else if(flag == Util.FLAGNUM_WALLNUT){
						drawImg(i+j*9,150,Util.FLAGNUM_WALLNUT,Util.TYPENUM_CACTUS);
						cactusTime = 0;
					}
				}
			}
		}
	}
/**添加僵尸的方法*/
	public void addZombie(){
		//种植了1种植物的时候,开始出僵尸
		if(plantList.size() >=1 && zomList.size() < 1){
			//控制僵尸每次出现多少个
			for (int i = 0; i < count; i++) {
				//控制画那种僵尸
				int type= getRandom(3)+1;
				zomList.add(new Zombie(Util.infos.get("Zombie_"+type+".png")
						,new Point(1000+getRandom(10), 80+getRandom(5)*97)
						,Util.zombieMap.get(type),type,type*2));
			}
			if(count < 5){
				count ++;
			}
		}
	}
	/**画植物*/
	public void drawPlant(Graphics g){
		for (int q = 0;q<plantList.size() ;q++) {
			Plant plant = plantList.get(q);
			//给向日葵添加阳关
			addSun(plant);
			//如果不是向日葵 添加子弹
			plant.setGun();
			//画植物的图片
			differImg(plant.getImage(), plant.getPoint(),80,100, plant.getTypeNum(), plant.getNum(), g);
			
			//画完植物  画植物的子弹
			for (int i = 0; plant.getGunList()!=null&& i<plant.getGunList().size(); i++) {
				Gun gun = plant.getGunList().get(i);
				//画子弹的图片
				differImg(gun.getImg(), gun.getPoint(),30,30, gun.getTypeNum(), gun.getNum(), g);
				//子弹移动
				gun.gunMove();
				for (int x = 0; x < zomList.size(); x++) {
					Zombie zom = zomList.get(x);
					//子弹是否遇到僵尸
					if(gun.getGunRec().intersects(zom.getZombieRec())){
						//子弹消失
						plant.getGunList().remove(gun);
						//僵尸的血量减少
						zom.setZombieHP(zom.getZombieHP() - 1);
						//判断僵尸血量是否为0
						if(zom.getZombieHP() == 0){
							zomList.remove(zom);
							//击败了多少个僵尸
							zombieAmount ++;
							//如果僵尸在吃植物的过程中被打死,那么植物的被吃状态改变
							if(plant.isEat()){
								plant.setEat(false);
							}
						}
						mp = new MusicPlayer("sound/shieldhit2.wav");
						mp.loop(0);
					}
				}
				//g.drawRect(plant.getPlantRec().x, plant.getPlantRec().y, plant.getPlantRec().width, plant.getPlantRec().height);
				for (int j = 0; j < zomList.size(); j++) {
					Zombie zom = zomList.get(j);
				//	g.drawRect(zom.getZombieRec().x, zom.getZombieRec().y, zom.getZombieRec().width, zom.getZombieRec().height);
					//僵尸是否遇到植物
					if(plant.getPlantRec().intersects(zom.getZombieRec())){
						if(!zom.isStop()){
							setZomStatus(zom);
							plant.setEat(true);
						}
					}
					//判断植物被吃掉了
					if(zom.isStop() && plant.getPlantHP() == 0){
						plantList.remove(plant);
						setZomStatus(zom);
					}
				}
					
				//判断子弹是否死亡
				if(gun.isHit()){
					plant.getGunList().remove(gun);
				}
			}
			//判断僵尸是否吃植物
		}
	}

```c
/**画背景图片,以及相关小组件*/
	public void drawBack(Graphics g){
		g.drawImage(Util.infos.get("background1.jpg"), 0, 0,1200,600, this);
		//画阳光储存框
		g.drawImage(Util.infos.get("sunAmount.gif"), 50,0, 120, 30, this);
		//击败僵尸数目
		g.drawImage(Util.infos.get("IMG00000.bmp"), 200, 0, 120, 30, this);
		
		//设置字体颜色 ,内容 大小
		g.setColor(Color.RED);
		g.setFont(new Font("Serif",Font.BOLD,32));
		//画太阳的初始值
		g.drawString(sunAmount.toString(), 90,25);
		//画击败僵尸数
		g.drawString(zombieAmount.toString(), 240, 25);
		
		//画铁锹
		g.drawImage(Util.infos.get("Shovel.png"), 1100, 500, this);
		
	}
	
别人是用eclipse写的,我用idea打开的,因为那个比较简单,所以 直接启动运行就好。

2.截图


总结

我觉得敲代码是个枯燥的过程,如果没有兴趣,很难坚持下去,我想,如果我一开始就有目标,对此有兴趣,那么就不会轻易放弃。这个小项目还有很多不足的地方,那希望你们能激发出兴趣,完善好这个游戏,也能提升技术

植物大战僵尸源码

你可能感兴趣的:(培训学习心得,apache,html,java,eclipse,intellij-idea)