📄 cgameframe.java
字号:
package chiidanceapp;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Font;
import java.awt.Color;
import java.awt.Image;
import java.awt.Container;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.util.ResourceBundle;
public class CGameFrame extends JFrame {
//////////////////////////////////////////////////////////////////////////////////////////////////////////
private byte GameState = 1;
private int Key;
private int xMouse;
private int yMouse;
private int ScreenWidth;
private int ScreenHeight;
private static int Act;
private static int Score ;
private static int NameIndex ;
private Image OffScreen ;
private Graphics DrawOffScreen ;
private Dimension dimension;
private Toolkit kit;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
CGamePanel GamePanel;
configdata datRe;
CLoad Load = new CLoad();
CSave Save = new CSave();
/////////////////////////////////////////////////////////////////////////////////////////////////////////
public CGameFrame() {
datRe = ( configdata )Load.loadGame();
kit = Toolkit.getDefaultToolkit();
dimension = kit.getScreenSize();
ScreenWidth = dimension.width;
ScreenHeight = dimension.height;
GamePanel = new CGamePanel();
addKeyListener( new GameKeyHandler() );
addMouseListener( new GameMouseHandler() );
addMouseMotionListener( new GameMouseHandler() );
getContentPane().add( GamePanel );
setTitle( "ChiiDance1.1" );
setIconImage( kit.getImage( "Resource/images/chii[1].gif" ) );
if( ScreenWidth <= 800 )
{
setSize( 800, 600 );
setLocation( 0,0 );
}
else
{
setSize( 800, 600 );
setLocation( ScreenWidth/2 - this.getWidth()/2,
ScreenHeight/2 - this.getHeight()/2 );
}
if( datRe.getIsFullScreen() == 1 )
{
CDisplayMode DisplayMode = new CDisplayMode( this );
}
else
{
setUndecorated( true );
}
show();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
private class GameKeyHandler implements KeyListener
{
public void keyTyped( KeyEvent e ) {
if( Key == KeyEvent.VK_ESCAPE )
{
if( GamePanel.SceneInfo.getGameState() == 0 )
{
GamePanel.StartUI.MidiThread.stopMidiThread();
CMusicPlayer sayByeBye = new CMusicPlayer();
sayByeBye.initMusic( 6 );
sayByeBye.play();
System.exit(0);
}
else if( GamePanel.SceneInfo.getGameState() == 3 )
{
GamePanel.SceneInfo.setGameState( 0 );
}
}
}
public void keyPressed( KeyEvent e ) {
Key = e.getKeyCode();
switch( GamePanel.SceneInfo.getGameState() )
{
case 0:
selectTitle();
break;
case 1:
selectRole();
break;
case 2:
selectDanceMenu();
handleDanceState();
handleFinish();
break;
case 4:
if( Key == KeyEvent.VK_ENTER )
{
if( GamePanel.StartUI == null )
{
GamePanel.StartUI = new CStartUI();
GamePanel.SceneInfo.setGameState( 0 );
}
else
{
GamePanel.DanceUI.destruct();
GamePanel.DanceUI = null;
GamePanel.StartUI.Load();
GamePanel.StartUI.restartThread();
GamePanel.StartUI.MidiThread.restartMidiThread();
GamePanel.SceneInfo.setGameState( 0 );
}
}
}
}
//########################################################################################
public void selectTitle()
{
if( !GamePanel.StartUI.isMenuVisible()
&& Key == KeyEvent.VK_ENTER )
{
GamePanel.StartUI.setMenuVisible( true );
}
else if( GamePanel.StartUI.isMenuVisible()
&& Key == KeyEvent.VK_UP )
{
GamePanel.StartUI.subMenuIndex();
}
else if( GamePanel.StartUI.isMenuVisible()
&& Key == KeyEvent.VK_DOWN
&& GamePanel.StartUI.getMenuIndex() != 1 )
{
GamePanel.StartUI.addMenuIndex();
}
else if( GamePanel.StartUI.isMenuVisible()
&& Key == KeyEvent.VK_DOWN
&& GamePanel.StartUI.getMenuIndex() == 1 )
{
Score = Load.loadScore();
GamePanel.StartUI.addMenuIndex();
GamePanel.StartUI.setScore( Score );
}
else if( GamePanel.StartUI.isMenuVisible()
&& GamePanel.StartUI.getMenuIndex() == 0
&& Key == KeyEvent.VK_ENTER )
{
GamePanel.StartUI.MidiThread.MidiPlayer.close();
if( GamePanel.SelectionUI == null )
{
GamePanel.SelectionUI = new CSelectionUI();
}
else
{
GamePanel.SelectionUI.restartThread();
GamePanel.SelectionUI.MidiThread.restartMidiThread();
GamePanel.SelectionUI.setNameIndex();
}
GamePanel.StartUI.destruct();
GamePanel.SceneInfo.setGameState( 1 );
System.gc();
}
else if( GamePanel.StartUI.isMenuVisible()
&& GamePanel.StartUI.getMenuIndex() == 1
&& Key == KeyEvent.VK_ENTER )
{
GamePanel.StartUI.MidiThread.closeMidiThread();
CMusicPlayer sayByeBye = new CMusicPlayer();
sayByeBye.initMusic( 6 );
sayByeBye.play();
System.exit( 0 );
}
else if( GamePanel.StartUI.isMenuVisible()
&& GamePanel.StartUI.getMenuIndex() == 2
&& Key == KeyEvent.VK_ENTER )
{
if( GamePanel.ScoreUI == null )
{
GamePanel.ScoreUI = new CScoreUI();
GamePanel.SceneInfo.setGameState( 3 );
}
else
{
GamePanel.ScoreUI.setScore( Score );
GamePanel.SceneInfo.setGameState( 3 );
}
}
}
//########################################################################################
public void selectRole()
{
if( Key == KeyEvent.VK_UP
&& GamePanel.SelectionUI.isLoaded()
&& GamePanel.SelectionUI.getNameIndex() != 0 )
{
GamePanel.SelectionUI.subNameIndex();
}
else if( Key == KeyEvent.VK_DOWN
&& GamePanel.SelectionUI.isLoaded()
&& GamePanel.SelectionUI.getNameIndex() != 3 )
{
GamePanel.SelectionUI.addNameIndex();
}
else if( Key == KeyEvent.VK_ENTER
&& GamePanel.SelectionUI.isLoaded()
&& GamePanel.SelectionUI.getNameIndex() != 3 )
{
GamePanel.SelectionUI.MidiThread.closeMidiThread();
NameIndex = GamePanel.SelectionUI.getNameIndex();
GamePanel.DanceUI = new CDanceUI( 1,GamePanel.SelectionUI.getNameIndex(),0 );
GamePanel.SceneInfo.setGameState( 2 );
}
else if( Key == KeyEvent.VK_ENTER
&& GamePanel.SelectionUI.isLoaded()
&& GamePanel.SelectionUI.getNameIndex() == 3 )
{
GamePanel.SelectionUI.MidiThread.MidiPlayer.close();
if( GamePanel.StartUI == null )
{
GamePanel.StartUI = new CStartUI();
}
else
{
GamePanel.StartUI.Load();
GamePanel.StartUI.restartThread();
GamePanel.StartUI.MidiThread.restartMidiThread();
}
GamePanel.SelectionUI.destruct();
GamePanel.SceneInfo.setGameState( 0 );
System.gc();
}
};
//########################################################################################
public void selectDanceMenu()
{
if( GamePanel.DanceUI.isLoaded() && !GamePanel.DanceUI.isShowReadyMessage() )
{
if( !GamePanel.DanceUI.getIsMenuVisible()
&& Key == KeyEvent.VK_ESCAPE )
{
GamePanel.DanceUI.stopMusic();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -