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

📄 trivialapplet.java

📁 a Pong applet by zimardi
💻 JAVA
字号:
/*
	Trivial applet that displays a string
*/

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
import java.util.*;
import java.applet.AudioClip;

public class Pong extends Applet implements MouseListener, KeyListener, MouseMotionListener
{

	Image OSC ;
	Graphics OSG;
	
	AudioClip hit;
	AudioClip buzz;
	AudioClip gameover;
	AudioClip tetris;
	int lives = 5;
	int h = getHeight();
	int w = getWidth();
	final int paddW = 5;
	int paddH;
	int paddleX; 
	int paddleY;
	int paddle2X;
	int paddle3X;
	int paddle3Y;
	int paddle4Y;
	int padd3H = paddW;
	int padd3W;
	boolean start = false;
	Image background;
	Image mini;
	//make more paddle variables
	
	Vector balls;
	public void init() {
		addMouseMotionListener(this);
		addMouseListener(this);
		addKeyListener(this);
		buzz = getAudioClip(getCodeBase(), "buzz.wav"); 
		hit = getAudioClip(getCodeBase(), "tennis2.wav");
		gameover = getAudioClip(getCodeBase(), "gameover.mid");
		background = getImage(getCodeBase(),"pong.jpg");
		mini = getImage(getCodeBase(),"mini.jpg");
		tetris = getAudioClip(getCodeBase(), "tetris.mid");
		h = getHeight();
		w = getWidth();
		OSC = createImage(w,h);
		OSG = OSC.getGraphics();
		paddH = w/5;
		paddle2X = 3;
		paddleX = w-paddW-3;
		paddleY = h/2-paddH/2;
		paddle3X = w/2;
		paddle3Y = 3;
		paddle4Y = h-3-padd3H;
		padd3W = w/5;
		balls = new Vector();
		repaint();
		
	}
	public void update(Graphics g)
	{	
		//OSG.setColor(Color.black);
		//OSG.fillRect(0,0,w,h);
		OSG.drawImage(background,0,0,null);
		OSG.setColor(Color.white);
		
		paint(OSG);	
		g.drawImage(OSC,0,0,null);
	}
	public void paint(Graphics g) {
		if(!start){
		g.setColor(Color.black);
		g.fillRect(0,0,w,h);
		g.setColor(Color.red);
		g.setFont(new Font("Westminster" , 1, 18));
		g.drawString("THANKS FOR PLAYING ZIMARDI PONG!" ,w/2-140, h/2+5); 
		g.setFont(new Font("Westminster" , 1, 18));
		g.drawString("             CLICK WHEN READY" , w/2-140, h/2+60);
		} else 
		if(lives>0){
			Ball tempBall;
			for(int i = 0; i < balls.size(); i++){
				tempBall = (Ball)(balls.elementAt(i));
				tempBall.updatePosition(h);
				
				//this if fires when the ball goes where the paddle should be
				if(tempBall.posX > w-3-paddW-tempBall.ballSize || tempBall.posX < paddW+3){ 
					if(!hitPaddleX(tempBall.posY,tempBall.ballSize)){
						if(balls.size() == 1)
							lives--;
						
						if(lives == 0){
							tetris.stop();
							gameover.play();
						}else
							buzz.play();
						balls.removeElementAt(i);
						
					} else {
						tempBall.dirX = tempBall.dirX*-1;
						//g.fillOval((int)tempBall.posX,(int)tempBall.posY,(int)tempBall.ballSize,(int)tempBall.ballSize);
						//g.setColor(Color.white);
						//g.drawOval((int)tempBall.posX,(int)tempBall.posY,(int)tempBall.ballSize,(int)tempBall.ballSize);
					
					
					}	
					
				
				} else if(tempBall.posY > h-3-padd3H-tempBall.ballSize || tempBall.posY < padd3H+3){
					if(!hitPaddleY(tempBall.posX,tempBall.ballSize)){
						if(balls.size() == 1)
							lives--;
						if(lives == 0){
							tetris.stop();
							gameover.play();
						}else
							buzz.play();
						balls.removeElementAt(i);
						
					} else {
						tempBall.dirY = tempBall.dirY*-1;
						//g.fillOval((int)tempBall.posX,(int)tempBall.posY,(int)tempBall.ballSize,(int)tempBall.ballSize);
						//g.setColor(Color.white);
						//g.drawOval((int)tempBall.posX,(int)tempBall.posY,(int)tempBall.ballSize,(int)tempBall.ballSize);
					
					
					}	
				
				
				
				
				
				}else 
				g.setColor(tempBall.ballColor);
				g.fillOval((int)tempBall.posX,(int)tempBall.posY,(int)tempBall.ballSize,(int)tempBall.ballSize);
				g.setColor(Color.white);
				g.drawOval((int)tempBall.posX,(int)tempBall.posY,(int)tempBall.ballSize,(int)tempBall.ballSize);
				
			}
			
			
			try{
		       Thread.sleep(15);	
			}
			catch(Exception e){}
			g.setColor(Color.red);
			g.fillRect(paddleX,paddleY, paddW, paddH);
			g.setColor(Color.blue);
			g.drawRect(paddleX,paddleY, paddW, paddH);
			g.fillRect(paddle2X, paddleY, paddW, paddH);
			g.setColor(Color.red);
			g.drawRect(paddle2X, paddleY, paddW, paddH);
			g.setColor(Color.green);
			g.fillRect(paddle3X, paddle3Y, padd3W, padd3H);
			g.setColor(Color.red);
			g.drawRect(paddle3X, paddle3Y, padd3W, padd3H);
			g.setColor(Color.green);
			g.fillRect(paddle3X, paddle4Y, padd3W, padd3H);
			g.setColor(Color.red);
			g.drawRect(paddle3X, paddle4Y, padd3W, padd3H);
			g.setFont(new Font("Matisse ITC",1,32));
			g.setColor(Color.red);
			g.drawString("LIVES:"+lives,1,30);
			repaint();
		}
		else{
			balls = null;
			balls = new Vector();
			g.drawImage(mini,0,0,null);
			g.setColor(new Color((int)(Math.random()*255+1),(int)(Math.random()*255+1),(int)(Math.random()*255+1)));
			g.setFont(new Font("Westminster",1,48));
			g.drawString("GAME OVER", w/2-110, h/2+20);
			g.setFont(new Font("Westminster",1,24));
			g.drawString("PRESS ENTER TO CONTINUE",w/2-140, h/2+40);
			try{Thread.sleep(25);}catch(Exception e){};
			repaint();
		}
			
	}
	
	public void keyPressed(KeyEvent evt){
		
		int code = evt.getKeyCode();
		/*
		if(code == 38 && paddleY>0)
			paddleY = paddleY -10;
		else if(code == 40 && paddleY<h-paddH)
			paddleY = paddleY + 10;
		*/
		if(code == 10 && lives == 0)
			{
				lives = 5;
				tetris.loop();
			}	
			
		repaint();
	}
	public void keyReleased(KeyEvent evt){}
	public void keyTyped(KeyEvent evt){}
	
	public void mousePressed(MouseEvent evt){
		if(!start){
			start = true;
			tetris.loop();
		}
		balls.addElement(new Ball(evt.getX(), evt.getY()));
	
		
		repaint();
	
	}
	public void mouseReleased(MouseEvent evt){}
	public void mouseClicked(MouseEvent evt){}
	public void mouseEntered(MouseEvent evt){}
	public void mouseExited(MouseEvent evt){
	
	
	}
	public void mouseMoved(MouseEvent evt){
		//change paddle 2 postion also
		
		int y = evt.getY();
		int x = evt.getX();
		
		if(y < h-paddH/2 && y > paddH/2)
			paddleY = y-paddH/2;
		if(x < w-padd3W/2 && x > padd3W/2)
			paddle3X = x - padd3W/2;
		if(y > h-paddH/2)
			paddleY = h-paddH;
		if( y < paddH/2)
			paddleY = 0;
		if(x > w-padd3W/2)
			x = w-padd3W;
		if(x < padd3W/2)
			x = 0;
			
		
	
	}
	public void mouseDragged(MouseEvent evt){}
	
	private boolean hitPaddleX(double y,double ballH){
		if(y>paddleY-ballH/2 && y <paddleY+paddH-ballH/2){
			hit.play();
		
			return true;
		}
		return false;
	}
	
	private boolean hitPaddleY(double x, double ballW){
		if(x+ballW/2>paddle3X && x + ballW/2 < paddle3X+padd3W){
			hit.play();
		
			return true;
		}
		return false;
	}
	
	
}

⌨️ 快捷键说明

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