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

📄 launchbubblesprite.java

📁 本代码为java编写的泡泡龙游戏
💻 JAVA
字号:

//此类实现的是泡泡发射器对象
import java.awt.*;

public class LaunchBubbleSprite extends Sprite
{
   public final static String LAUNCHER_BACK_CONTEXT_KEY = "back_launcher";
   public final static String LAUNCHER_BUBBLES_CONTEXT_KEY = "sprites_launcher";
   public final static String LAUNCHER_BUBBLES_BLIND_CONTEXT_KEY = "sprites_blind_launcher";

   public final static String LAUNCHER_IMG = "launcher.gif";
   public final static String LAUNCHER_ALPHA_IMG = "launcher_alpha.gif";
        
	private int currentColor;//保存当前的颜色
	private int currentDirection;//保存当前的旋转方向
	
	private Point currentImageArea;
	
    private Image backgroundImage;
	private Image spritesImage;
    private Image spritesBlindImage;
        
    public LaunchBubbleSprite(GameApplet applet, int initialColor, int initialDirection) 
    {
            
            super(new Rectangle(276, 362, 86, 76));
            
            currentColor = initialColor;
            currentDirection = initialDirection;
            
            GameContext context = applet.getGameContext();
            
            backgroundImage = (Image)context.getObject(LAUNCHER_BACK_CONTEXT_KEY);
            spritesImage = (Image)context.getObject(LAUNCHER_BUBBLES_CONTEXT_KEY);
            spritesBlindImage = (Image)context.getObject(LAUNCHER_BUBBLES_BLIND_CONTEXT_KEY);
            
            // Create image
            if (backgroundImage == null || spritesImage == null) 
            {
                backgroundImage = applet.createImage(86, 3116);
                spritesImage = applet.createImage(256, 1312);
                spritesBlindImage = applet.createImage(256, 1312);
                
                createLauncherImages(applet);
                
                context.addObject(LAUNCHER_BACK_CONTEXT_KEY, backgroundImage);
                context.addObject(LAUNCHER_BUBBLES_CONTEXT_KEY, spritesImage);
                context.addObject(LAUNCHER_BUBBLES_BLIND_CONTEXT_KEY, spritesBlindImage);
            }
        }
        
        private void createLauncherImages(GameApplet applet) 
        {

            Graphics gb = backgroundImage.getGraphics();
            Graphics gs = spritesImage.getGraphics();
            Graphics gsb = spritesBlindImage.getGraphics();
            
            GameMedia media = applet.getGameMedia();
            
            // Gets game empty background
            Image imgGame = media.loadImage("background.jpg");

            // prepare background
            for (int i=0 ; i<41 ; i++) 
            {
                gb.setClip(0, i*76, 86, 76);
                gb.drawImage(imgGame, -276, i*76-362, applet);
            }
            
            // prepare sprites
            
            // Retrieve bubbles
            Image[] bubbles = new Image[8];
            for (int i=0 ; i<8 ; i++) 
            {
		         bubbles[i] = media.loadImage("bubble-"+Integer.toString(i+1)+".gif");
            }
            
            // Retrieve -colorblind- bubbles
            Image[] colorblindBubbles = new Image[8];
            for (int i=0 ; i<8 ; i++) 
            {
		         colorblindBubbles[i] = media.loadImage("bubble-colourblind-"+Integer.toString(i+1)+".gif");
            }

            for (int j=0 ; j<41 ; j++) 
            {
                for (int i=0 ; i<8 ; i++) 
                {
                    // Clip area
                    gs.setClip(i*32, j*32, 32, 32);
                    gsb.setClip(i*32, j*32, 32, 32);
                    // Draw background
                    gs.drawImage(imgGame, i*32-302, j*32-390, applet);
                    gsb.drawImage(imgGame, i*32-302, j*32-390, applet);
                    // Draw bubbles
                    gs.drawImage(bubbles[i], i*32, j*32, applet);
                    gsb.drawImage(colorblindBubbles[i], i*32, j*32, applet);
                }
            }
            
            // Gets launcher image
            EffectImage launcher = new EffectImage(applet, LAUNCHER_IMG, LAUNCHER_ALPHA_IMG);
            
            double rotateAngle = 0.025 * Math.PI;
            
            Image result = null;
            for (int i=0 ; i<41 ; i++) 
            {
                result = launcher.getRotate(rotateAngle*(i-20), 50, 50);
                
                // background
                gb.setClip(0, i*76, 86, 76);
                gb.drawImage(result, -8, i*76-6, applet);
                
                for (int j=0 ; j<8 ; j++) 
                {
                    // Clip area
                    gs.setClip(j*32, i*32, 32, 32);
                    gsb.setClip(j*32, i*32, 32, 32);
                    // draw launcher
                    gs.drawImage(result, j*32-34, i*32-34, applet);
                    gsb.drawImage(result, j*32-34, i*32-34, applet);
                }
            }
        }
        		
	public void changeColor(int newColor) 
	{
		currentColor = newColor;
	}
	
	public void changeDirection(int newDirection) {
            currentDirection = newDirection;
   	}
	
	public void paint(Graphics g, GameApplet applet) 
	{
		Rectangle r = this.getSpriteArea();
		
		g.setClip(r);
		g.drawImage(backgroundImage, 276, 362-currentDirection*76, applet);
        g.setClip(302, 390, 32, 32);
        if (FrozenBubble.getMode() == FrozenBubble.GAME_NORMAL) 
        {
            g.drawImage(spritesImage, 302-currentColor*32, 390-currentDirection*32, applet);
        }
        else 
        {
            g.drawImage(spritesBlindImage, 302-currentColor*32, 390-currentDirection*32, applet);
        }
	}
}

⌨️ 快捷键说明

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