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

📄 mygame.java

📁 这是一个游戏是用java开发的一个网页小应用程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		}
		catch(Exception e){}
		
	}
 
        //the meteor extends the class Unit 

	public class meteor extends Unit {
		int maxBullet;
		int nowBullet;
        public meteor()
        {
			maxBullet=1;
			nowBullet=0;
			sizeX=40;
			sizeY=40;
        }
        
		public double bulletCos[] = new double[bulletNumber];

		public void moveBullet() {
			for (int i = 0; i < bulletNumber; i++) {
				if (bulletStatus[i] == 1) //true bullets
					{
					if (bulletX[i]
						> 0 & bulletX[i]
						< xSize & bulletY[i]
						> 0 & bulletY[i]
						< ySize)
						//in
						{
						bulletX[i] =
							bulletX[i]
								- bulletSpeed
									* Math.sqrt(1 - Math.pow(bulletCos[i], 2));
						bulletY[i] = bulletY[i] - bulletSpeed * bulletCos[i];
						//move
					} else //out
						{
						bulletStatus[i] = 0; //dispear
						nowBullet--;
					}
				}
			}
		}

		public void fire() {
			for (int i = 0; i < bulletNumber; i++) {
				if (Math.random() > 0.95&nowBullet<=maxBullet) {
					if (bulletStatus[i] == 0)
						//meteor is alive and this bullet is not true
						{
						bulletX[i] = x + sizeX/2;
						bulletY[i] = y + sizeY;
						bulletStatus[i] = 1;
						nowBullet++;
						              
						double yLength = y - skymaster.getY();
						double zLine =
							Math.sqrt(
								(y - skymaster.getY()) * (y - skymaster.getY())
									+ (x - skymaster.getX()) * (x - skymaster.getX()));
						bulletCos[i] = yLength / zLine;

						break;
					}
				}
			}

		}


		public void revive() {

		}

		public void draw(Graphics g) {
		if (bombTimer < 1) {
							if(status==1)
							g.drawImage(meteorImage, (int) x, (int) y, MySize,MySize,applet);
							//can draw to applet
						} else {
							g.drawImage(meteorImage, (int) x, (int) y, MySize, MySize, applet);
							if (bombTimer < 6) {
								g.drawImage(bomb1, (int) x, (int) y, MySize, MySize, applet);
							} else {
								if (bombTimer < 12) {
									g.drawImage(bomb2, (int) x, (int) y,  MySize, MySize,applet);
								} else {
									g.drawImage(bomb3, (int) x, (int) y, MySize, MySize, applet);
								}
							}
						}
		}

		public void kill() {
			for (int i = 0; i < skymaster.getBulletNumber(); i++) {
				if (skymaster.getBulletStatus(i)==1&Math.abs((x +sizeX/2) - (skymaster.bulletX[i]+7))
					< sizeX/2 & Math.abs((y + sizeY/2) - (skymaster.bulletY[i]+BulletSize/2))
					< sizeY/2) //meteor dead
					{
					status = 0;
					score += 100;
					skymaster.setBulletStatus(i, 0);
					bombTimer = 6 * 3;
					kill.play();
					break; //only kill one
				}

				if (x < 0 | x > getSize().width | y > getSize().height) {
					status = 0;
				} //judge the death(fly out equals death)
			}
			if(skymaster.getNucealStatus()==true&Math.abs(y-skymaster.nucealY)<NucealSizeY)
			{
				status = 0;
				score += 100;
				bombTimer = 6 * 3;
				kill.play();
			}

		}

		public void drawBullet(Graphics g) {
			for (int i = 0; i < bulletNumber; i++) {
				if (bulletStatus[i] == 1) {
					g.drawImage(
						meteorBulletImage,
						(int) bulletX[i],
						(int) bulletY[i],
						BulletSize,
						BulletSize,
						applet);
				}
			}
		}

		public void move() {
			if (bombTimer < 1) //not bombing
				{
				y += this.speed;

			}
		}
	} //inner class

        //SkyMaster extends the class Unit

	public class SkyMaster extends Unit {
		
		public SkyMaster()
		{
		    sizeX=40;
			sizeY=40;
			x=155;
			y=420;
		}

		public void move() {
			if (bombTimer < 1) //not bombing
				{
				oldX = x;
				oldY = y;
				if (up == true) //in
					{
					y -= this.speed;
				}
				if (down == true) {
					y += this.speed;
				}
				if (left == true) {
					x -= this.speed;
				}
				if (right == true) {
					x += this.speed;
				}

				if (y < 0 | y > getSize().height - MySize) {
					y = oldY;
				}
				if (x < 0 | x > getSize().width - MySize) {
					x = oldX;
				} //return original values
			}
		}

		public void revive() {
			if (bombTimer < 1 & status == 0) {
				x = 135;
				y = 420;
				life -= 1;
				status = 1; //regenerate
				godTime = 0 * 5;  //40*5 maybe OK
			}
		}

		public void draw(Graphics g) {
			switch (status) {
				case 0 : //dead
					if (bombTimer > 0) //bombing
						{
						g.drawImage(playerImage, (int) x, (int) y,  MySize, MySize,applet);
						if (bombTimer < 6) {
							g.drawImage(bomb1, (int) x, (int) y, MySize, MySize, applet);
						} else {
							if (bombTimer < 12) {
								g.drawImage(bomb2, (int) x, (int) y, MySize, MySize, applet);
							} else {
								g.drawImage(bomb3, (int) x, (int) y, MySize, MySize, applet);
							}
						}
					}
					break;

				case 1 : //normal flying

						g.drawImage(playerImage, (int) (x), (int) (y), MySize, MySize, applet);
                    //draw couver
					if (godTime > 0)
						g.drawImage(cover, (int) (x), (int) (y),  MySize, MySize,applet);
					break;
			}
		}

		public void moveBullet() {
			for (int i = 0; i < bulletNumber; i++) {
				if (bulletStatus[i] == 1) {
					if (bulletX[i]
						< getSize().width & bulletX[i]
						> 0 & bulletY[i]
						< getSize().height & bulletY[i]
						> 0) //in
						{
						bulletY[i] -= bulletSpeed;
					} //move
					else //out
						{
							bulletStatus[i]=0;
					}
				} 
			}
			if (nucealStatus == true) {
								if (nucealX
									< getSize().width & nucealX
									> 0 &nucealY
									< getSize().height & nucealY
									> 0) //in
									{
										nucealY -= nucealSpeed;
								} //move
								else //out
									{
										nucealStatus=false;
								}
							}
		} //move bullet

		public void drawBullet(Graphics g) {
			for (int i = 0; i < bulletNumber; i++) {
				g.setColor(Color.yellow);
				if (bulletStatus[i] == 1) {
					g.drawImage(
						bulletImage,
						(int) bulletX[i],
						(int) bulletY[i],
						BulletSize,
						BulletSize,
						applet);
				}
			}
		}
		
		public void drawNuceal(Graphics g) {
					
						g.setColor(Color.yellow);
						if (nucealStatus == true) {
							g.drawImage(
								nucealImage,
								(int) nucealX,
								(int) nucealY,
								NucealSizeX,
								NucealSizeY,
								applet);
						}
					
				}

		public void fire() {

		}

		public void kill() {
                        setCenterX();  
                        setCenterY();
			for (int i = 0; i < meteorNumber; i++) {
				meteor[i].setCenterX();
				meteor[i].setCenterY();
				if (godTime == 0) //no undead cover and no lives
					{
					if (meteor[i].getStatus()
						== 1 
						& Math.abs(meteor[i].getCenterX() - skymaster.getCenterX())
						 <(meteor[i].sizeX/2+skymaster.sizeX/2)
						& Math.abs(meteor[i].getCenterY() - skymaster.getCenterY())
						 <(meteor[i].sizeY/2+skymaster.sizeY/2)
						)	
						{
						status = 0; //kill player
						crash.play();
						if (life == 0) {
							restart();
							playerStatus = 2;
						} else {
							bombTimer = 6 * 3;
							skymaster.revive();
						}
						break;
					} //meet meteor
					for (int j = 0; j < bulletNumber; j++) {
						if (meteor[i].getBulletStatus(j)
							== 1 
					   & Math.abs(meteor[i].getBulletCenterX(j) - skymaster.getCenterX())
						<(BulletSize/2+skymaster.sizeX/2)
					   & Math.abs(meteor[i].getBulletCenterY(j) - skymaster.getCenterY())
						<(BulletSize/2+skymaster.sizeY/2)
						    ) 
						 {
							status = 0;
							meteor[i].setBulletStatus(j,0);
							crash.play();
							if (life == 0) {
								restart();
								playerStatus = 2;
							} //gameover
							else {
								bombTimer = 6 * 3;
								skymaster.revive();
							} //repair
							break;
						}
					}
				} //when undeadTime dispear, SkyMaster would be hurted
			}

		}
	} //inner class
}

abstract class Unit {
	Applet applet;

	 String name = "noname";
         //this is for find the center of the unit
    // double range=40;
	 int sizeX;
	 int sizeY;
	 double x;
	 double y;
	 double oldX;
	 double oldY;
         //be uesd to identify the center of the unit so that we can judge wether the unit is hunted
     double centerX;  
     double centerY;
	 double speed = 5;
	 int nucealNumber=3;
	 int life = 5;
	 int power;
	 int width;
	 int height;
	 boolean up = false;
	 boolean down = false;
	 boolean left = false;
	 boolean right = false;
	 int status = 1;
	 int alive = 1;
	 int bombTimer = 0;
	 int fireStatusTimer = 0; //Unit

	 int bulletNumber = 10;
	//make this array big enough for every sub classes
	 double bulletSpeed = 8; //line move ratio
	 double bulletX[] = new double[bulletNumber];
	 double bulletY[] = new double[bulletNumber];
	 int bulletStatus[] = new int[bulletNumber];
	 
	 double nucealSpeed=10;
	 double nucealX;
	 double nucealY;
	 boolean nucealStatus;

        public double getCenterX() {
                return centerX;
        }	
        public void setCenterX() {
                centerX=x+sizeX/2;
        }
        public double getCenterY(){
                return centerY;
        }
        public void setCenterY() {
                centerY=y+sizeY/2;
        }

        public double getX() {
		return x;
	}
	public void setX(double v) {
		x = v;
	}
	public double getY() {
		return y;
	}
	public void setY(double v) {
		y = v;
	} //x,y

	public void setUp(boolean v) {
		up = v;
	}
	public void setDown(boolean v) {
		down = v;
	}
	public void setLeft(boolean v) {
		left = v;
	}
	public void setRight(boolean v) {
		right = v;
	} //up,down,left,right

	public int getBulletStatus(int no) {
		return bulletStatus[no];
	}
	public int getFireStatusTimer() {
		return fireStatusTimer;
	}
	public int getBulletNumber() {
		return bulletNumber;
	}
	public double getBulletCenterX(int no) {
		return bulletX[no]+7;
	}
	public double getBulletCenterY(int no) {
		return bulletY[no]+7;
	}
	public void setBulletStatus(int i, int v) {
		bulletStatus[i] = v;
	}
	public double getNucealX() {
			return nucealX;
		}
		public double getNucealY() {
			return nucealY;
		}
	public boolean getNucealStatus() {
			return nucealStatus;
		}
		public void setNucealStatus(boolean v) {
			nucealStatus = v;
		}
	public void setNucealX(double v) {
			nucealX = v;
		}
		public void setNucealY(double v) {
			nucealY = v;
		} //nuceal weapons
	public void setBulletSpeed(int v) {
		bulletSpeed = v;
	}
	public void setBulletNumber(int v) {
		bulletNumber = v;
	}
	public void setBulletX(int i, double v) {
		bulletX[i] = v;
	}
	public void setBulletY(int i, double v) {
		bulletY[i] = v;
	} //bullet

	public void setLife(int v) {
		life = v;
	}
   public void setNucealNumber(int v){
   	   nucealNumber=v;
   }
	public void setBombTimer(int v) {
		bombTimer = v;
	}

	public int getBombTimer() {
		return bombTimer;
	} //bomb

	public int getStatus() {
		return status;
	}
	public void setStatus(int v) {
		status = v;
	}
	public void action() {
		kill();
		move();
		fire();
	}

	public abstract void kill();
	public abstract void moveBullet();
	public abstract void move();
	public abstract void fire();
	public abstract void revive();
}

⌨️ 快捷键说明

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