📄 cselectionui.java
字号:
package chiidanceapp;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Font;
import java.awt.Color;
import java.util.ResourceBundle;
public class CSelectionUI implements Runnable,lyric{
//////////////////////////////////////////////////////////////////////////////////////////
static ResourceBundle res = ResourceBundle.getBundle("chiidanceapp.Res1");
private byte LoadCount;
private byte NameIndex;
private byte CurrentAnime;
private int rCloseEyes;
private int rPointer;
private int Interval;
private int rP;
private int xAnime = 800;
private int xSpeed;
private int xLoad = 0;
private boolean isCloseEye;
private boolean isPalmFront = false;
private boolean canRun = true;
private boolean isLoaded = false;
private boolean isSelected = false;
private Thread aThread;
private String Name[] = { "本须和 叽(Chii) ",//0
"芙蕾娅(Freya)",//1
"人工智能天使 " //2
};
private Image LoadingImage;
private Image TimeFrame;
private Image Stick;
private Image BackGround;
private Image Button;
private Image FaceFrame;
private Image DioFrame;
private Image SelectPanel;
private Image SelectYourCharacter;
private Image ipoiter;
private Image atashi,
chii,
kotoko,
kurochii,
minoru,
motosuwa,
shimizu,
sumomo,
yuzuki;
private Image ChiiFace[] = new Image[ 2 ];
private Image FreyaFace[] = new Image[ 2 ];
private Image AiangelFace[] = new Image[ 2 ] ;
private Image AiangelFaces;
private Image ChiiD;
private Image Freya;
private Image Aiangel;
private Image Anime[] = new Image[13];
CImage initImage;
CMidiThread MidiThread;
//////////////////////////////////////////////////////////////////////////////////////////
public CSelectionUI() {
MidiThread = new CMidiThread( 6,true );
initImage = new CImage();
LoadingImage = initImage.LoadImage( "Resource/img/g23.jpg" );
TimeFrame = initImage.LoadImage( "Resource/images/timeframe.png" );
Stick = initImage.LoadImage( "Resource/img/stick.gif" );
aThread = new Thread( this );
canRun = true;
aThread.start();
CurrentAnime = 0;
}
//////////////////////////////////////////////////////////////////////////////////////////
public void restartThread()
{
canRun = true;
aThread = new Thread( this );
aThread.start();
}
public void setNameIndex()
{
this.NameIndex = 0;
}
public void setIsSelected( boolean isSelected )
{
this.isSelected = isSelected;
}
/////////////////////////////////////////////////////////////////////////////////////
public void addNameIndex()
{
if( NameIndex < 3 )
NameIndex++;
xAnime = 800;
}
public void subNameIndex()
{
if( NameIndex > 0 )
NameIndex--;
xAnime = 800;
}
public byte getNameIndex()
{
return this.NameIndex;
}
public boolean isLoaded()
{
return this.isLoaded;
}
////////////////////////////////////////////////////////////////////////////////////
public void Load()
{
atashi = initImage.LoadImage( "Resource/images/atashi[1].gif" );xLoad += 10;
chii = initImage.LoadImage( "Resource/images/chii[1].gif" );xLoad += 10;
kotoko = initImage.LoadImage( "Resource/images/kotoko[1].gif" );xLoad += 10;
kurochii = initImage.LoadImage( "Resource/images/kurochii[1].gif" );xLoad += 10;
minoru = initImage.LoadImage( "Resource/images/minoru[1].gif" );xLoad += 10;
motosuwa = initImage.LoadImage( "Resource/images/motosuwa[1].gif" );xLoad += 10;
shimizu = initImage.LoadImage( "Resource/images/shimizu[1].gif" );xLoad += 10;
sumomo = initImage.LoadImage( "Resource/images/sumomo[1].gif" );xLoad += 10;
yuzuki = initImage.LoadImage( "Resource/images/yuzuki[1].gif" );xLoad += 10;
ChiiFace[ 0 ] = initImage.LoadImage( "Resource/images/chiiS.jpg" );xLoad += 10;
ChiiFace[ 1 ] = initImage.LoadImage( "Resource/images/chii.gif" );xLoad += 10;
ChiiD = initImage.LoadImage( "Resource/images/chiiD.gif" );xLoad += 10;
FreyaFace[ 0 ] = initImage.LoadImage( "Resource/images/freyaS.jpg" );xLoad += 10;
FreyaFace[ 1 ] = initImage.LoadImage( "Resource/images/freya.gif" );xLoad += 10;
AiangelFace[ 0 ] = initImage.LoadImage( "Resource/images/p_closeeyes.png" );xLoad += 10;
AiangelFace[ 1 ] = initImage.LoadImage( "Resource/images/p_openeyes.png" );xLoad += 10;
AiangelFaces = initImage.LoadImage( "Resource/images/AiangelS.png" );xLoad += 10;
Freya = initImage.LoadImage( "Resource/images/startfreya.jpg" );xLoad += 10;
Aiangel = initImage.LoadImage( "Resource/images/aiangel.jpg" );xLoad += 10;
BackGround = initImage.LoadImage( "Resource/images/shader.png" );xLoad += 10;
FaceFrame = initImage.LoadImage( "Resource/images/portraitframe.png" );xLoad += 10;
DioFrame = initImage.LoadImage( "Resource/images/diologframe.png" );xLoad += 10;
SelectPanel = initImage.LoadImage( "Resource/img/selectPanel.png" );xLoad += 10;
SelectYourCharacter = initImage.LoadImage( "Resource/img/selectyourcharacter.png" );xLoad += 10;
Button = initImage.LoadImage( "Resource/img/button.png" );xLoad += 10;
rP = ( int )( 9 * Math.random() )+1;
switch( rP )
{
case 0:
ipoiter = atashi;
break;
case 1:
ipoiter = chii;
break;
case 2:
ipoiter = kotoko;
break;
case 3:
ipoiter = kurochii;
break;
case 4:
ipoiter = minoru;
break;
case 5:
ipoiter = motosuwa;
break;
case 6:
ipoiter = shimizu;
break;
case 7:
ipoiter =sumomo;
break;
case 8:
ipoiter = yuzuki;
break;
case 9:
ipoiter = yuzuki;
break;
default:
ipoiter = atashi;
break;
}
xLoad += 130;
xLoad = 361;
for( int i = 0;i<13;i++ )
{
Anime[ i ] = initImage.LoadImage( "Resource/images/awake"+( i+1 )+".jpg" ); Anime[ i ] = initImage.LoadImage( "Resource/images/awake"+( i+1 )+".jpg" );
};
isLoaded = true;
}
public void destruct()
{
atashi = null;
chii = null;
kotoko = null;
kurochii = null;
minoru = null;
motosuwa = null;
shimizu = null;
sumomo = null;
yuzuki = null;
ChiiFace[ 0 ] = null;
ChiiFace[ 1 ] = null;
ChiiD = null;
FreyaFace[ 0 ] = null;
FreyaFace[ 1 ] = null;
AiangelFace[ 0 ] = null;
AiangelFace[ 1 ] = null;
AiangelFaces = null;
Freya = null;
Aiangel = null;
BackGround = null;
FaceFrame = null;
DioFrame = null;
SelectPanel = null;
SelectYourCharacter = null;
Button = null;
ipoiter = null;
Anime[0] = null;
Anime[1] = null;
Anime[2] = null;
Anime[3] = null;
Anime[4] = null;
Anime[5] = null;
Anime[6] = null;
Anime[7] = null;
Anime[8] = null;
Anime[9] = null;
Anime[10] = null;
Anime[11] = null;
Anime[12] = null;
isLoaded = false;
canRun = false;
LoadCount = 0;
xLoad = 0;
MidiThread.MidiPlayer.close();
System.gc();
}
//////////////////////////////////////////////////////////////////////////////////////////////////
public void draw( Graphics g,JPanel GamePanel )
{
//打开文本抗锯齿
if( g instanceof Graphics2D )
{
Graphics2D g2 = ( Graphics2D )g;
g2.setRenderingHint(
RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON );
}
if( isLoaded )
{
g.drawImage( BackGround,0,0,GamePanel );
g.drawImage( SelectPanel,20,20,750,430,GamePanel );
g.drawImage( DioFrame,45,470,GamePanel );
g.drawImage( ChiiD,55,480,GamePanel );
g.drawImage( SelectYourCharacter,80,50,GamePanel );
g.drawImage( Button,700,390,GamePanel );
g.setColor( Color.white );
switch( NameIndex )
{
case 0:
g.fillRect( 100,95,90,90 );
g.drawImage( ipoiter,35,110,GamePanel ) ;
g.drawImage( ChiiFace[ 1 ],105,100,GamePanel ) ;
g.drawImage( FreyaFace[ 0 ],105,200,GamePanel ) ;
g.drawImage( AiangelFaces,105,300,GamePanel ) ;
g.drawImage( FaceFrame, 100, 95, GamePanel );
g.drawImage( Anime[ CurrentAnime ], xAnime, 95,500,286, GamePanel );
g.setFont( new Font( "新宋体",Font.PLAIN,25 ) );
g.drawString( Name[0],360,420 );
break;
case 1:
g.fillRect( 100,195,90,90 );
g.drawImage( ipoiter,35,220,GamePanel ) ;
g.drawImage( ChiiFace[ 0 ],105,100,GamePanel ) ;
g.drawImage( FreyaFace[ 1 ],105,200,GamePanel ) ;
g.drawImage( AiangelFaces,105,300,GamePanel ) ;
g.drawImage( FaceFrame, 100, 195, GamePanel );
g.drawImage( Freya, xAnime, 95,500,278, GamePanel );
g.setFont( new Font( "新宋体",Font.PLAIN,25 ) );
g.drawString( Name[ 1 ],360,420 );
break;
case 2:
g.fillRect( 100,295,90,90 );
g.drawImage( ipoiter,35,320,GamePanel ) ;
g.drawImage( ChiiFace[ 0 ],105,100,GamePanel ) ;
g.drawImage( FreyaFace[ 0 ],105,200,GamePanel ) ;
if( isCloseEye )
{
g.drawImage( AiangelFace[ 0 ], 105, 300, GamePanel );
}
else
{
g.drawImage( AiangelFace[ 1 ], 105, 300, GamePanel );
}
g.drawImage( FaceFrame, 100, 295, GamePanel );
g.drawImage( Aiangel, xAnime, 95, GamePanel );
g.setFont( new Font( "新宋体",Font.PLAIN,25 ) );
g.drawString( Name[ 2 ],360,420 );
break;
case 3:
g.drawImage( AiangelFaces,105,300,GamePanel ) ;
g.drawImage( ChiiFace[ 0 ],105,100,GamePanel ) ;
g.drawImage( FreyaFace[ 0 ],105,200,GamePanel ) ;
g.drawImage( Freya, xAnime, 95,500,278, GamePanel );
g.drawImage( ipoiter,650,390,GamePanel ) ;
break;
}
g.setColor( Color.black );
g.setFont( new Font( "新宋体",Font.PLAIN,25 ) );
g.drawString( "Chii",190,500 );
g.drawString( "「按上下键选人,然后按ENTER键开始游戏」",180,530 );
}
else
{
g.drawImage( LoadingImage,0,0,GamePanel );
g.setFont( new Font( "SansSerif",Font.BOLD,20 ) );
g.drawString( "正在读取,请稍候",300,530 );
g.setFont( new Font( "SansSerif",Font.BOLD,25 ) );
g.drawString( "Loading, please wait......",250,570 );
g.drawImage( TimeFrame,200,460,400,12,GamePanel );
g.drawImage( Stick,220,461,xLoad,10,GamePanel );
}
g.dispose();
}
///////////////////////////////////////////////////////////////////////////////////////////////////
public void run() {
while ( canRun ) {
if( LoadCount < 4 )
{
LoadCount++;
}
if( LoadCount == 2 )
{
Load();
}
if( isCloseEye )
{
isCloseEye = false;
}
rCloseEyes = ( int )( 12 * Math.random() )+1;
if( rCloseEyes == 1 )
{
isCloseEye = true;
}
if( CurrentAnime < 13 )
{
CurrentAnime++;
}
if( CurrentAnime >=13 )
{
CurrentAnime = 0;
}
if( xAnime > 200 )
{
Interval = 10;
xAnime -= ( ++xSpeed );
}
if( xAnime <= 200 )
{
xAnime = 200;
Interval = 400;
}
if( xSpeed >= 60 )
{
xSpeed = 60;
}
try {
aThread.sleep( Interval );
}catch ( Exception ex ) {}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -