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

📄 mygame.java

📁 这是一个游戏是用java开发的一个网页小应用程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.applet.AudioClip;
import java.io.File;

import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;

public class MyGame
	extends Applet
	implements Runnable, MouseListener, KeyListener {
	 static String he = new String();
         
   // These are for the star field
	 int starsX[];
     int starsY[];
	 Color starsC[];
	 int numStars = 30;
	 int speed = 6, xSize = 350, ySize = 500;

	//some setting of the game 
         
     int meteorNumber = 5;
	 int score = 0;
	 double mx = 0;
	 double my = 0;
	 

//	 create SkyMaster and meteor
	   SkyMaster skymaster = new SkyMaster();

	   meteor meteor[] = new meteor[10];
	   meteor meteor0 = new meteor();
	   meteor meteor1 = new meteor();
	   meteor meteor2 = new meteor();
	   meteor meteor3 = new meteor();
	   meteor meteor4 = new meteor();
	   meteor meteor5 = new meteor();
	   meteor meteor6 = new meteor();
	   meteor meteor7 = new meteor();
	   meteor meteor8 = new meteor();
	   meteor meteor9 = new meteor();
	   meteor meteor10 = new meteor();
	   
	   public int buildTime = 0;
	   public double top;
	
	// Sound resource
	AudioClip blast, crash, kill;
	Sequence sequence;
	Sequencer sequencer;
 
	//the resource of the game
	//Image resource
	
	//change the image to the comfortable size
	int MySize=40;
	int BulletSize=10;
	int NucealSizeX=350;
	int NucealSizeY=10;
	Image loading;
	Image offImage;
	Image playerImage;
	Image fire;
	Image bomb1;
	Image bomb2;
	Image bomb3;
	Image meteorImage;
	Image bulletImage; 
	Image nucealImage;
	Image meteorBulletImage;
	Image backGndImage;
	Image cover;
	Graphics offGraphics;

	Font gameOverFont = new Font("Braggadocio", Font.BOLD, 30);
	Font gameStartFont = new Font("TimesRoman", Font.BOLD + Font.ITALIC, 50);
	Font introFont = new Font("TimesRoman", Font.BOLD + Font.ITALIC, 20);
	Font scoreFont = new Font("Arial", Font.BOLD + Font.ITALIC, 15);

         int godTime = 0;
	 int fireTimer = 0;
	 int playerStatus = 0; 	

	Thread mainThread;

	public void init() {
		mainThread = new Thread(this);
		mainThread.start();
 
       
			try {
				PlayMusic();
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		
		//initial the starfield
		initStars();

		meteor[0] = meteor0;
		meteor[1] = meteor1;
		meteor[2] = meteor2;
		meteor[3] = meteor3;
		meteor[4] = meteor4;
		meteor[5] = meteor5;
		meteor[6] = meteor6;

		//initial the SkyMaster
		skymaster.setBombTimer(0);
		skymaster.setBulletNumber(4);
		for (int i = 0; i < meteorNumber; i++) {
			meteor[i].setBombTimer(0);
			for (int j = 0; j < meteor[i].getBulletNumber(); j++) {
				meteor[i].setBulletStatus(j, 0);
				meteor[i].setBulletSpeed(3);
			}
		}
		for (int i = 0; i < skymaster.getBulletNumber(); i++) {
			skymaster.setBulletStatus(i, 0);
		}

		addMouseListener(this);
		addKeyListener(this);

		//Image and Sound
		offImage = createImage(getSize().width, getSize().height);
		playerImage = getImage(getCodeBase(), "image/player.gif");
		fire = getImage(getCodeBase(), "image/fire.gif");
		meteorImage = getImage(getCodeBase(), "image/meteor.gif");
		bulletImage = getImage(getCodeBase(), "image/BulletImage.gif");
		nucealImage = getImage(getCodeBase(), "image/NucealImage.gif");
		meteorBulletImage = getImage(getCodeBase(), "image/samllMeteor.gif");
		backGndImage = getImage(getCodeBase(), "image/backGndImage.gif");
		cover = getImage(getCodeBase(), "image/cover.gif");
		bomb1 = getImage(getCodeBase(), "image/bomb1.gif");
		bomb2 = getImage(getCodeBase(), "image/bomb2.gif");
		bomb3 = getImage(getCodeBase(), "image/bomb3.gif");
		loading = getImage(getCodeBase(), "image/loading2.jpg");

		try {
			blast = getAudioClip(getCodeBase(), "music/blast.au");
			crash = getAudioClip(getCodeBase(), "music/collisn.au");
			kill = getAudioClip(getCodeBase(), "music/mdestr.au");
		} catch (Exception e) {
		}
       
		blast.play();
		blast.stop();
		crash.play();
		crash.stop();
		kill.play();
		kill.stop();
	}
	// This creates the starfield in the background
	public void initStars() {
		starsX = new int[numStars];
		starsY = new int[numStars];
		starsC = new Color[numStars];
		for (int i = 0; i < numStars; i++) {
			starsX[i] = (int) ((Math.random() * xSize - 1) + 1);
			starsY[i] = (int) ((Math.random() * ySize - 1) + 1);
			starsC[i] = NewColor();
		}
	}
	public void DrawPlayField(Graphics g) {

		// Show stars
		moveStars();
		for (int a = 0; a < numStars; a++) {
			g.setColor(starsC[a]);
			g.drawRect(starsX[a], starsY[a], 1, 1);
		}

	}
	// If a star in the background reaches the bottome then it will go back to the top
	public void moveStars() {
		for (int i = 0; i < numStars; i++) {
			if (starsY[i] + 1 > ySize - (speed * 2)) {
				starsY[i] = 0;
				starsX[i] = (int) ((Math.random() * xSize - 1) + 1);
				starsC[i] = NewColor();
			} else {
				starsY[i] += speed;
			}
		}
	}
	public Color NewColor() {
		int[] rgb;
		int t;
		rgb = new int[3];
		for (int i = 0; i < 3; i++)
			rgb[i] = 0;
		t = (int) (Math.random() * 3);
		rgb[t] = (int) (Math.random() * 128 + 1) + 127;
		return new Color(rgb[0], rgb[1], rgb[2]);
	}
	public void restart() {
		skymaster.setLife(5);
		skymaster.setNucealNumber(3);
		skymaster.setStatus(1); //regenerate
		skymaster.setX(175);
		skymaster.setY(400);
		skymaster.setBombTimer(0);

		for (int i = 0; i < meteorNumber; i++) {
			meteor[i].setBombTimer(0);
			meteor[i].setStatus(0); //dead

			for (int j = 0; j < meteor[i].getBulletNumber(); j++) {
				meteor[i].setBulletStatus(j, 0); //no bullets
			}
		}

		playerStatus = 1;
	}
	
	public void PlayMusic() throws Exception {
				sequence = MidiSystem.getSequence(new File("music/background.mid"));
				sequencer = MidiSystem.getSequencer();
				sequencer.open();
				sequencer.setSequence(sequence);
				sequencer.start();

			}

	public void mousePressed(MouseEvent event) {

	}

	public void mouseReleased(MouseEvent event) {

	}

	public void mouseClicked(MouseEvent event) {
		playerStatus = 1;
	}

	public void mouseEntered(MouseEvent event) {

	}

	public void mouseExited(MouseEvent event) {

	}

	public void keyTyped(KeyEvent event) {

	}

	public void keyPressed(KeyEvent event) 
	{
      try{
      
		if (playerStatus == 1) {

			switch ((int) event.getKeyCode()) {
				case 38 :
					skymaster.setUp(true);
					break;

				case 40 :
					skymaster.setDown(true);
					break;

				case 37 :
					skymaster.setLeft(true);
					break;

				case 39 :
					skymaster.setRight(true);
					break; 

				case 32 :
					blast.play();
					for (int i = 0; i < skymaster.getBulletNumber(); i++) {
						if (skymaster.getBulletStatus(i)
							== 0 ) {
							skymaster.setBulletStatus(i, 1); //fire
							skymaster.setBulletX(i,skymaster.getX()+10);
							skymaster.setBulletY(i,skymaster.getY());
							break;
						}
					}
					
					break;
				case 10 :
				  if(skymaster.nucealNumber>0)
				   { blast.play();
				   
				    if(skymaster.getNucealStatus()==false)
					{
					 skymaster.setNucealStatus(true);
					 skymaster.setNucealX(1);
					 skymaster.setNucealY(skymaster.getY());
					for(int i=0;i<meteorNumber;i++)
					 for(int j=0;j<10;j++)
					   {  
					   	if(meteor[i].getBulletStatus(j)==1)
					   	{ meteor[i].setBulletStatus(j,0);  
					   	  meteor[i].nowBullet--;
					   }
					   	 } 
					 skymaster.nucealNumber--;
					}
				   }
					break;
			}
		}
		if ((playerStatus == 0 | playerStatus == 2) & event.getKeyCode()
			== Event.ENTER) {
			restart();
		}
      }
      catch(Exception e)
      {
      }
	}

	public void keyReleased(KeyEvent event) {
		switch ((int) event.getKeyCode()) {
			case 38 :
				skymaster.setUp(false);
				break;

			case 40 :
				skymaster.setDown(false);
				break;

			case 37 :
				skymaster.setLeft(false);
				break;

			case 39 :
				skymaster.setRight(false);
				break;
		}
	}

	public void buildmeteor() {
		if (buildTime > 30) {
			for (int i = 0; i < meteorNumber; i++) {
				if (meteor[i].getStatus() == 0 & meteor[i].getBombTimer() == 0)
					//dead and bombed
					{
					meteor[i].setStatus(1); //regenerate
					meteor[i].setY(0);
					meteor[i].setX((double) chooseRandom(300));
					buildTime = 0;
					break;
				}
			}
		}
	}

	public static final int chooseRandom(int x) {
		return (int) (Math.random() * x);
	}

	public void drawBackGnd(Graphics g) {
		g.setColor(Color.black);
		g.fillRect(0, 0, getSize().width, getSize().height);

		DrawPlayField(g);

		g.setFont(scoreFont);
		g.setColor(Color.white);
		g.drawString("score   " + score, 30, 30);
		g.drawString("life  " + skymaster.life, 30, 50);
		g.drawString("nuceal weapon  "+skymaster.nucealNumber,30,70);
	}

	public void drawFace(Graphics g) {

		g.drawImage(loading, 0, 0, this);
    }

	public void paint(Graphics g) {
		switch (playerStatus) {
			case 0 : //start
				drawFace(g);
				g.setFont(gameStartFont);
				g.setColor(Color.blue);
				g.drawString("Sky Master", 50, 200);
				g.setColor(Color.red);
				g.drawString("Sky Master", 53, 203);
				g.setColor(Color.white);
				g.setFont(scoreFont);
				// g.drawString("SHILEI 2004  All Rights Reserved",50,getSize().height-30);
				g.drawString(
					"Please press MOUSE LEFT BUTTON down",
					20,
					getSize().height - 80);
				break;

			case 1 : //playing
				drawBackGnd(g); //draw black

				DrawPlayField(g);
				skymaster.drawBullet(g);
			    skymaster.drawNuceal(g);
				skymaster.draw(g);

				for (int i = 0; i < meteorNumber; i++) {
					meteor[i].draw(g);
					meteor[i].drawBullet(g);
				}
				break;

			case 2 : //dead
				drawBackGnd(g);

				skymaster.drawBullet(g);
			    skymaster.drawNuceal(g);
				skymaster.draw(g);

				for (int i = 0; i < meteorNumber; i++) {
					meteor[i].draw(g);
					meteor[i].drawBullet(g);
				}

				g.setFont(gameOverFont);
				g.setColor(Color.white);
				g.drawString("You Lose", 90, 150);
				g.setColor(Color.red);
				g.drawString("You Lose", 92, 152);
				break;
		}
	}

	public void update(Graphics g) 
	//double-buffering
	{
		offGraphics = offImage.getGraphics();
		offGraphics.setColor(getBackground());
		offGraphics.fillRect(0, 0, getSize().width, getSize().height);
		//draw in another floor
		offGraphics.setColor(g.getColor());
		paint(offGraphics); //draw once in offGraphics will not echo
		g.drawImage(offImage, 0, 0, this);
	}

	public void run() {
		while (true) {
			try {
				if (playerStatus == 1) {

					buildmeteor(); //build meteor
					buildTime++;

					if (godTime> 0) {
						godTime -= 1;
					} //undeadTime decreases
					top = (top + 0.5) % 56;

					if (skymaster.getStatus() == 1) //SkyMaster is alive
						{
						skymaster.action();
					}
					skymaster.moveBullet();
                    
					skymaster.revive();

					if (skymaster.getBombTimer() > 0) //bombing
						{
						skymaster.setBombTimer(skymaster.bombTimer - 1);
					}

					for (int i = 0; i < meteorNumber; i++) {
						if (meteor[i].getStatus() == 1) //alive
							{
							meteor[i].action();
						}
						meteor[i].moveBullet();
						meteor[i].revive();

						if (meteor[i].getBombTimer() > 0) //bombing
							{
							meteor[i].setBombTimer(meteor[i].bombTimer - 1);
						}
					}

				}

				repaint();
				mainThread.sleep(20);
			} catch (Exception e) {

			}
		}
	}

	public void stop() {
		mainThread = null;
	}

	public void destroy() {
		try{
		mainThread.destroy();
		offGraphics.dispose();
		removeMouseListener(this);
		removeKeyListener(this);
		}
		catch(Exception e){}
	}

	public static void main(String[] args) {
		try{MyGame go = new MyGame();

⌨️ 快捷键说明

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