📄 jcgamewindow.java
字号:
/* * JCollapse - Java Collapse Game * Copyright (C) 2005 Erico Gon鏰lves Rimoli * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */package sourceforge.net.projects.jcollapse.game;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Dimension;import java.awt.Font;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JApplet;import javax.swing.JEditorPane;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JSeparator;import javax.swing.WindowConstants;import sourceforge.net.projects.jcollapse.engine.block.Block;import sourceforge.net.projects.jcollapse.engine.block.BombBlock;import sourceforge.net.projects.jcollapse.engine.block.SimpleBlock;import sourceforge.net.projects.jcollapse.engine.JCListener;import sourceforge.net.projects.jcollapse.engine.JCModel;import sourceforge.net.projects.jcollapse.engine.sound.Midi;import sourceforge.net.projects.jcollapse.engine.sound.Wave;import sourceforge.net.projects.jcollapse.game.components.DLHelper;import sourceforge.net.projects.jcollapse.game.components.GameControl;import sourceforge.net.projects.jcollapse.game.components.GameControlListener;import sourceforge.net.projects.jcollapse.game.components.JCButton;import sourceforge.net.projects.jcollapse.game.components.JCComponent;import sourceforge.net.projects.jcollapse.game.components.JCComponentListener;import sourceforge.net.projects.jcollapse.game.components.JCPanel;import sourceforge.net.projects.jcollapse.game.components.SoundControl;import sourceforge.net.projects.jcollapse.game.components.SoundControlListener;import sourceforge.net.projects.jcollapse.game.components.SoundControl.SoundEvent;import sourceforge.net.projects.jcollapse.game.effects.FadeImageEffect;import sourceforge.net.projects.jcollapse.game.effects.TextEffect;import sourceforge.net.projects.jcollapse.game.effects.FadeImageEffect.Fade;import sourceforge.net.projects.jcollapse.game.levels.Level;import sourceforge.net.projects.jcollapse.game.levels.LevelList;/** * The JCGameWindow class * @author erico */public class JCGameWindow extends JApplet { /** * The game version */ public static final String APPLICATION_VERSION = "0.2.0"; /** * Last build date */ public static final String APPLICATION_DATE = "200602192249"; /** * The application name */ public static final String APPLICATION_NAME = "JCollapse Game"; /** * The command line to disable sound */ private static final String CMDLINE_SOUND_DISABLED = "-noSound"; private static String[] m_CommandLineParameters; //game components private JCComponent m_JCComponent; private LevelList m_LevelList; private SoundControl m_SoundControl; private GameControl m_GameControl; //game effects private TextEffect m_GameOverEffect; private TextEffect m_PauseEffect; private TextEffect m_LevelStartedEffect; private FadeImageEffect m_IntroEffect; //game window or null if is applet private static JFrame m_JFrame; //if components are initialized, value is true private boolean m_IsComponentsInitialized = false; //basic UI private JCPanel m_MainPanel; private JCPanel m_StatusPanel; private JCButton m_ButtonQuit; private JCButton m_ButtonPause; private JCButton m_ButtonNewGame; private JCButton m_ButtonOptions; private JLabel m_LabelGameStatus; private JLabel m_LabelLevelName; private JSeparator m_SeparatorGameStatus; private JLabel m_LabelScore; private JLabel m_LabelScorePoints; private JLabel m_LabelHighScore; private JLabel m_LabelHighScorePoints; private JLabel m_LabelLevel; private JLabel m_LabelLevelCount; private JLabel m_LabelRecord; private JSeparator m_SeparatorRecord; private JLabel m_LabelHighLevel; private JLabel m_LabelHighLevelCount; private JLabel m_LabelLines; private JLabel m_LabelLinesRemains; private JEditorPane m_TextAreaNotes; //style private final Font m_NormalFont = new Font( "Dialog", Font.PLAIN, 10 ); private final Font m_BoldFont = new Font( "Dialog", Font.BOLD, 10 ); //other windows private OptionsWindow m_OptionsWindow; /** * The application entry in Window mode * @param args the arguments<br><br> * You can use -noSound to disable sounds */ public static void main( String[] args ) { m_CommandLineParameters = args; System.out.println( APPLICATION_NAME ); System.out.println( " Interface version " + APPLICATION_VERSION ); System.out.println( " Engine version " + JCModel.getVersion() ); System.out.println( " Build in " + APPLICATION_DATE ); System.out.println(); System.out.println( "Command line arguments: " ); System.out.println( " " + CMDLINE_SOUND_DISABLED + ": to disable sound;" ); System.out.println(); System.out.println(); m_JFrame = new JFrame(); new JCGameWindow( args ); } /** * Create new form JCGameWindow without parameters (used in applets) */ public JCGameWindow() { } /** * Create new form JCGameWindow with parameters * @param args the command line arguments */ public JCGameWindow( String[] args ) { initialize( args ); } /* (non-Javadoc) * @see java.applet.Applet#init() */ public void init() { //show wait message to browser (if is applet) showStatus( "Wait a moment, the game is loading..." ); } /* (non-Javadoc) * @see java.applet.Applet#stop() */ public void stop() { exitGame(); } /* (non-Javadoc) * @see java.applet.Applet#start() */ public void start() { initialize( null ); } private void initialize( String[] args ) { //if components are not initialized if( !m_IsComponentsInitialized ) { initializeComponents(); } /* * wait for game to be loaded and * show effect in main game board/play intro music only * when game is not load yet! */ new Thread( new Runnable() { public void run() { while( !m_JCComponent.isValid() ) Thread.yield(); //if game not start (if user press new game when thread is running...) if( !m_JCComponent.isRunning() ) { m_JCComponent.drawEffect( m_IntroEffect ); m_SoundControl.doEvent( "intro", SoundEvent.PLAY ); } } }).start(); } private void initializeComponents() { //LayoutManager GridBagLayout mainLayout = new GridBagLayout(); GridBagLayout statusLayout = new GridBagLayout(); GridBagConstraints constraints = new GridBagConstraints(); //LevelList //---------------------------------------------------------------------------------------------------------------------------------------------------------------------- m_LevelList = new LevelList( DLHelper.getInstance().getURL( "/sourceforge/net/projects/jcollapse/game/resources/levels/levelList.cll" ) ); //GameControl //---------------------------------------------------------------------------------------------------------------------------------------------------------------------- m_GameControl = new GameControl(); //GameControl Listener m_GameControl.addGameControlListener( new GameControlListener() { public void scoreChanged( int newScore ) { m_LabelScorePoints.setText( Integer.toString( newScore ) ); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -