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

📄 splashscreen.java

📁 本代码为java编写的泡泡龙游戏
💻 JAVA
字号:
       
import java.awt.*;
import java.util.Random;

//游戏初始屏幕
public class SplashScreen extends GameScreen
{
	//保存模式切换信息
    private final static String[] MODE_DESC = {"normal mode", "colorblind mode"};
    //保存声音切换信息
    private final static String[] SOUND_DESC = {"sound enabled", "sound disabled"};
    //切换信息显示初始值
    private final int MODE_TIMING = 200;
    
    //切换信息文字精灵
    private TextSprite modeMessage;
    //切换信息显示延时时间
    private int modeTiming;
    
    //开始游戏信息精灵
	private TextSprite[] flashingMessage;
	//开始游戏信息精灵闪烁的计数器
	private int flashDelay;
	
	//企鹅眼睛图片精灵
	private ImageSprite penguinEyes;
	//企鹅眼睛图片精灵显示延时时间
	private int eyesClosed;
	//产生随机数对象
	private Random rand;
	
	//保存整个游戏屏幕图片
	private Image fullBackground;
	//保存游戏开始图片
	private Image splashBackground;
	
	//保存模式切换和声音切换信息
    private boolean modeKeyPressed, soundKeyPressed;
    //保存游戏是否已初始化
    private boolean gameInitialized;
    //保存游戏字体对象
    private GameFont font;
    //构造函数
	public SplashScreen(GameApplet gameApplet)
	{
		super(gameApplet);
		//得到游戏媒体加载器对象
		GameMedia media = gameApplet.getGameMedia();
		
		//加载背景图片
		fullBackground = media.loadImage("background.jpg");
		splashBackground = media.loadImage("splash.jpg");
		
		//得到游戏字体对象
		font = (GameFont)gameApplet.getGameContext().getObject("bubbleFont");
		
		//初始化开始游戏信息精灵
		flashingMessage = new TextSprite[3];
		flashingMessage[0] = new TextSprite(new Rectangle(289, 383, 100, 22), font, "PRESS");
		flashingMessage[1] = new TextSprite(new Rectangle(300, 407, 100, 22), font, "FIRE");
		flashingMessage[2] = new TextSprite(new Rectangle(276, 430, 100, 22), font, "TO START");
		for (int i=0 ; i<3 ; i++)
		{
			this.addSprite(flashingMessage[i]);
		}
		
		//初始化企鹅眼睛图片精灵
		penguinEyes = new ImageSprite(new Rectangle(370, 280, 19, 9), media.loadImage("close_eyes.gif"));
		
		//初始化滚动文字信息精灵
		String message = "| FROZEN BUBBLE 1UP V 0.9.5 - JAVA RELEASE 2  {  DESIGN & PROGRAMMING - Guillaume Cottenceau";
		message += "  }  GRAPHICS - Alexis Younes (AYO73)  [  GRAPHICS (BUBBLES) - Amaury Amblard-Ladurantie";
		message += "  ]  SOUND & MUSIC - Matthias Le Bidan (Matths) ? JAVA 1.1+ VERSION - Glenn sanson ";
		message += "  \\ SPECIAL THANKS to Benoit dien for his help & to my wife for her patience";
		message += "  ? PLEASE VISIT THE FROZEN BUBBLE OFFICIAL WEB SITE AT HTTP://WWW.FROZEN-BUBBLE.ORG ?";
		ScrollingTextSprite scrollingMessage = new ScrollingTextSprite(new Rectangle(168, 9, 300, 22), font, message, 1);
		this.addSprite(scrollingMessage);
		
		//初始化产生随机数对象
		rand = new Random(System.currentTimeMillis());
                
		//重置高分管理器对象
        ((HighscoreManager)this.getGameApplet().getGameContext().getObject("highscoreManager")).reset();
		//重置游戏生命周期管理器
		((LifeManager)gameApplet.getGameContext().getObject("lifeManager")).restart();
                
        modeTiming = -1;
	}
	//初始化背景图片
	public void initBackground()
	{
		addToBackground(fullBackground, new Point(0, 0));
		addToBackground(splashBackground, new Point(116, 0));	
	}
	//处理事件
	public void play(int[] keyCodes, Point mouseCoord, boolean leftButton, boolean rightButton) 
	{
   		boolean newModeKeyState = false;
        boolean newSoundKeyState = false;
        
        //游戏初始化已完成
        if (gameInitialized) 
        {   
            //解析用户的按键事件
            for (int i=0 ; i<keyCodes.length ; i++) 
            {
                int current = keyCodes[i];
                
                if (current == FrozenGame.KEY_M) //有模式切换事件
                {
                    newModeKeyState = true;
                }

                if (current == FrozenGame.KEY_S) //有声音切换事件
                {
                    newSoundKeyState = true;
                }                       
                
                //当有向上键或shift键时,开始进入游戏
                if (current == FrozenGame.KEY_UP || current == FrozenGame.KEY_SHIFT) 
                {
                	//设置游戏为初级
                    ((LevelManager)getGameApplet().getGameContext().getObject("levelManager")).goToFirstLevel();
                    gameInitialized = false;
                    //切换游戏屏幕
                    getGameApplet().setCurrentScreen(new FrozenGame(getGameApplet()));
                }
            }
        }
        else 
        {
        	//当无用户按键时,标志游戏已作好准备
            if (keyCodes.length == 0) 
            {
                gameInitialized = true;
            }
        }
		
        //当用户按下模式切换键时,显示模式信息
        if (newModeKeyState != modeKeyPressed) 
        {
            if (newModeKeyState) 
            {
                FrozenBubble.switchMode();
                
                //删除原有的切换信息
                if (modeTiming != -1) 
                {
                    this.removeSprite(modeMessage);
                }
                //增加新的切换信息
                modeMessage = new TextSprite(new Rectangle((640-getTextSize(MODE_DESC[FrozenBubble.getMode()], font)>>1), 80, 400, 100), font, MODE_DESC[FrozenBubble.getMode()]);
                this.addSprite(modeMessage);
                modeTiming = MODE_TIMING;
            }
            
            modeKeyPressed = newModeKeyState;
        }
        
        //当用户按下声音切换键时,显示声音信息
        if (newSoundKeyState != soundKeyPressed) 
        {
            if (newSoundKeyState) 
            {
              	SoundManager sm = (SoundManager)this.getGameApplet().getGameContext().getObject("soundManager");                        

                sm.setSoundState(!sm.getSoundState());
                
                //删除原有的切换信息
                if (modeTiming != -1) 
                {
                    this.removeSprite(modeMessage);
                }
                //增加新的切换信息
	            if (sm.getSoundState()) 
	            {
                    modeMessage = new TextSprite(new Rectangle((640-getTextSize(SOUND_DESC[0], font)>>1), 80, 400, 100), font, SOUND_DESC[0]);
                }
                else 
                {
                    modeMessage = new TextSprite(new Rectangle((640-getTextSize(SOUND_DESC[1], font)>>1), 80, 400, 100), font, SOUND_DESC[1]);
                }
                
                this.addSprite(modeMessage);
                modeTiming = MODE_TIMING;                        
            }
            
            soundKeyPressed = newSoundKeyState;
        }                                
        
        //处理切换信息 
        if (modeTiming != -1) 
        {
            //当切换信息计数器为0时,删除切换信息
            if (modeTiming == 0) 
            {
                this.removeSprite(modeMessage);
                modeMessage = null;
            }
            
            modeTiming--;                    
        }
                
        //实现开始信息的闪动  
		flashDelay++;
		if (flashDelay == 30)
		{
			for (int i=0 ; i<3 ; i++)
			{
				this.removeSprite(flashingMessage[i]);
			}
		}
		else if (flashDelay == 50)
		{
			for (int i=0 ; i<3 ; i++)
			{
				this.addSprite(flashingMessage[i]);
			}
			
			flashDelay = 0;
		}
		
		if (rand.nextInt() % 100 == 0 && eyesClosed == 0)
		{
			eyesClosed = 20;
			this.addSprite(penguinEyes);
		}
		else if (eyesClosed != 0)
		{
			eyesClosed--;
			
			if (eyesClosed == 10)
			{
				this.removeSprite(penguinEyes);
			}
		}
	}	
        
	private int getTextSize(String text, GameFont font) 
	{
		int size = 0;
		
		for (int i=0 ; i<text.length() ; i++) 
		{
			size += font.charSize(text.charAt(i));
			size += font.SEPARATOR_WIDTH;
		}
		
		return size - font.SEPARATOR_WIDTH;
	}        
}

⌨️ 快捷键说明

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