📄 seafox.java
字号:
m_nMouseX = i;
m_nMouseY = j;
m_bButtonDown = false;
return true;
}
public void run() {
if(!m_bInitialized)
Initialization();
do {
if(m_bGameOver && m_bButtonDown)
StartNewGame();
UpdateGameObjects();
DrawPlayfield();
boolean flag = UpdateScorebar();
if(m_bSoundEffectsOn && !m_bGameOver)
PlaySoundEffects();
Graphics g = getGraphics();
g.drawImage(m_bufferPlayfield, 0, 0, null);
if(flag)
g.drawImage(m_bufferScorebar, 0, m_nPlayfieldHeight, null);
g.dispose();
} while(true);
}
private void DrawProgressBar(int i, int j, int k, int l, double d) {
Graphics g = m_imageLoading.getGraphics();
g.setColor(Color.blue);
g.fillRect(i, j, (int)((double)k * d), l);
g.dispose();
Graphics g1 = getGraphics();
g1.drawImage(m_imageLoading, 0, 0, null);
g1.dispose();
}
private void DrawPlayfield() { //重画游戏画面
Graphics g = m_bufferPlayfield.getGraphics();
g.drawImage(m_bufferSurface, 0, 0, null);
g.setColor(UNDERWATER_COLOR);
g.fillRect(0, 60, m_nPlayfieldWidth, m_nPlayfieldHeight - 60);
m_verticalTorpedo.Draw(g);
m_horizontalTorpedo.Draw(g);
m_player.Draw(g);
m_killerFish.Draw(g);
int i = 0;
do
m_capitalShip[i].Draw(g);
while(++i < 10);
i = 0;
do
m_hospitalShip[i].Draw(g);
while(++i < 3);
i = 0;
do
m_destroyer[i].Draw(g);
while(++i < 3);
i = 0;
do
m_depthCharge[i].Draw(g);
while(++i < 3);
i = 0;
do
m_enemySub[i].Draw(g);
while(++i < 3);
i = 0;
do
m_enemyTorpedo[i].Draw(g);
while(++i < 3);
i = 0;
do
m_magneticMine[i].Draw(g);
while(++i < 3);
m_dolphin.Draw(g);
m_package.Draw(g);
m_supplySub.Draw(g);
if(Player.m_nStatus == 4) {
g.setFont(m_fontMessage);
g.setColor(m_colorMessage);
g.drawString(m_stringSubsLeft[m_nSubsLeft - 1], m_nXsubsLeft[m_nSubsLeft - 1], m_nYsubsLeft);
}
if(m_bDisplayMissionTitle) {
g.setFont(m_fontMessage);
g.setColor(m_colorMessage);
g.drawString(m_stringMissionTitle, m_nXmissionTitle, m_nYmissionTitle);
}
if(Player.m_nStatus == 3 && !m_bGameOver) {
g.setFont(m_fontMessage);
g.setColor(m_colorMessage);
g.drawString(m_stringMissionComplete, m_nXmissionComplete, m_nYmissionComplete);
}
if(Player.m_nStatus == 0 && Player.m_dFuel <= 0.0D) {
g.setFont(m_fontMessage);
g.setColor(m_colorMessage);
g.drawString(m_stringOutOfFuel, m_nXoutOfFuel, m_nYoutOfFuel);
}
if(m_bGameOver) {
g.setFont(m_fontMessage);
g.setColor(m_colorMessage);
if(m_nTimesPlayed > 0)
g.drawString(m_stringGameOver, m_nXgameOver, m_nYgameOver);
g.drawString(m_stringStart, m_nXstartString, m_nYstartString);
}
}
private void UpdateGameObjects() {
m_lLatestTime = System.currentTimeMillis();
int i = m_nFrameNumber % 10;
if(m_nFrameNumber > 10) {
int j = (int)(m_lLatestTime - m_lTime[i]);
m_dSecondsPerFrame = (double)j / 10D / 1000D;
} else {
m_dSecondsPerFrame = 0.10000000000000001D;
}
m_lTime[i] = m_lLatestTime;
m_nFrameNumber++;
if(m_player.m_lRestartTime != 0L && m_player.m_lRestartTime < m_lLatestTime)
if(m_nSubsLeft > 0) {
if(m_nMission >= 5 && m_bMissionComplete) {
m_bMissionComplete = false;
m_bGameOver = true;
m_nSubsLeft = 0;
} else {
if(m_bMissionComplete) { //发射数<5,发射完成
m_nMission++;
MissionInit();
m_bMissionComplete = false;
}
SubInit();
}
} else {
m_bGameOver = true;
m_bMissionComplete = false;
}
m_player.Update();
m_killerFish.Update();
CapitalShip.m_dXoriginNow = CapitalShip.m_dXoriginStart + (20D * (double)(m_lLatestTime - CapitalShip.m_lStartTime)) / 1000D;
HospitalShip.m_dXoriginNow = HospitalShip.m_dXoriginStart + (24D * (double)(m_lLatestTime - HospitalShip.m_lStartTime)) / 1000D;
int k = 0;
do
m_destroyer[k].Update();
while(++k < 3);
k = 0;
do
m_depthCharge[k].Update();
while(++k < 3);
k = 0;
do
m_enemySub[k].Update();
while(++k < 3);
k = 0;
do
m_enemyTorpedo[k].Update();
while(++k < 3);
k = 0;
do
m_magneticMine[k].Update();
while(++k < 3);
m_supplySub.Update();
m_dolphin.Update();
m_package.Update();
m_verticalTorpedo.Update();
m_horizontalTorpedo.Update();
}
public void paint(Graphics g) {
if(!m_bInitialized) {
return;
} else {
g.drawImage(m_bufferScorebar, 0, m_nPlayfieldHeight, null);
return;
}
}
private void Initialization() { //调用图片.声音.构造装载框
Player.m_imageSub = getImage(getDocumentBase(), "plr_sub.gif");
m_mediaTracker.addImage(Player.m_imageSub, 0);
CapitalShip.m_imageShip[0] = getImage(getDocumentBase(), "capship0.gif");
m_mediaTracker.addImage(CapitalShip.m_imageShip[0], 1);
CapitalShip.m_imageShip[1] = getImage(getDocumentBase(), "capship1.gif");
m_mediaTracker.addImage(CapitalShip.m_imageShip[1], 2);
CapitalShip.m_imageShip[2] = getImage(getDocumentBase(), "capship2.gif");
m_mediaTracker.addImage(CapitalShip.m_imageShip[2], 3);
CapitalShip.m_imageShip[3] = getImage(getDocumentBase(), "capship3.gif");
m_mediaTracker.addImage(CapitalShip.m_imageShip[3], 4);
CapitalShip.m_imageWake[0] = getImage(getDocumentBase(), "lt_wake0.gif");
m_mediaTracker.addImage(CapitalShip.m_imageWake[0], 5);
CapitalShip.m_imageWake[1] = getImage(getDocumentBase(), "lt_wake1.gif");
m_mediaTracker.addImage(CapitalShip.m_imageWake[1], 6);
CapitalShip.m_imageWake[2] = getImage(getDocumentBase(), "lt_wake2.gif");
m_mediaTracker.addImage(CapitalShip.m_imageWake[2], 7);
CapitalShip.m_imageWake[3] = getImage(getDocumentBase(), "lt_wake3.gif");
m_mediaTracker.addImage(CapitalShip.m_imageWake[3], 8);
HospitalShip.m_imageShip = getImage(getDocumentBase(), "hospship.gif");
m_mediaTracker.addImage(HospitalShip.m_imageShip, 9);
VerticalTorpedo.m_imageUp = getImage(getDocumentBase(), "utorpedo.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageUp, 10);
VerticalTorpedo.m_imageDown = getImage(getDocumentBase(), "dtorpedo.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageDown, 11);
VerticalTorpedo.m_imageUpWake[0] = getImage(getDocumentBase(), "up_wake0.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageUpWake[0], 12);
VerticalTorpedo.m_imageUpWake[1] = getImage(getDocumentBase(), "up_wake1.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageUpWake[1], 13);
VerticalTorpedo.m_imageUpWake[2] = getImage(getDocumentBase(), "up_wake2.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageUpWake[2], 14);
VerticalTorpedo.m_imageUpWake[3] = getImage(getDocumentBase(), "up_wake3.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageUpWake[3], 15);
VerticalTorpedo.m_imageDownWake[0] = getImage(getDocumentBase(), "dn_wake0.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageDownWake[0], 16);
VerticalTorpedo.m_imageDownWake[1] = getImage(getDocumentBase(), "dn_wake1.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageDownWake[1], 17);
VerticalTorpedo.m_imageDownWake[2] = getImage(getDocumentBase(), "dn_wake2.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageDownWake[2], 18);
VerticalTorpedo.m_imageDownWake[3] = getImage(getDocumentBase(), "dn_wake3.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageDownWake[3], 19);
CapitalShip.m_imageBlast[0] = getImage(getDocumentBase(), "csblast0.gif");
m_mediaTracker.addImage(CapitalShip.m_imageBlast[0], 20);
CapitalShip.m_imageBlast[1] = getImage(getDocumentBase(), "csblast1.gif");
m_mediaTracker.addImage(CapitalShip.m_imageBlast[1], 21);
CapitalShip.m_imageBlast[2] = getImage(getDocumentBase(), "csblast2.gif");
m_mediaTracker.addImage(CapitalShip.m_imageBlast[2], 22);
CapitalShip.m_imageBlast[3] = getImage(getDocumentBase(), "csblast3.gif");
m_mediaTracker.addImage(CapitalShip.m_imageBlast[3], 23);
CapitalShip.m_imageSink[0] = getImage(getDocumentBase(), "cs_sink0.gif");
m_mediaTracker.addImage(CapitalShip.m_imageSink[0], 24);
CapitalShip.m_imageSink[1] = getImage(getDocumentBase(), "cs_sink1.gif");
m_mediaTracker.addImage(CapitalShip.m_imageSink[1], 25);
CapitalShip.m_imageSink[2] = getImage(getDocumentBase(), "cs_sink2.gif");
m_mediaTracker.addImage(CapitalShip.m_imageSink[2], 26);
CapitalShip.m_imageSink[3] = getImage(getDocumentBase(), "cs_sink3.gif");
m_mediaTracker.addImage(CapitalShip.m_imageSink[3], 27);
SupplySub.m_imageSub = getImage(getDocumentBase(), "sply_sub.gif");
m_mediaTracker.addImage(SupplySub.m_imageSub, 28);
Dolphin.m_imageDolphin[0] = getImage(getDocumentBase(), "dolphin0.gif");
m_mediaTracker.addImage(Dolphin.m_imageDolphin[0], 29);
Dolphin.m_imageDolphin[1] = getImage(getDocumentBase(), "dolphin1.gif");
m_mediaTracker.addImage(Dolphin.m_imageDolphin[1], 30);
Dolphin.m_imageDolphin[2] = getImage(getDocumentBase(), "dolphin2.gif");
m_mediaTracker.addImage(Dolphin.m_imageDolphin[2], 31);
Dolphin.m_imageDolphin[3] = getImage(getDocumentBase(), "dolphin3.gif");
m_mediaTracker.addImage(Dolphin.m_imageDolphin[3], 32);
Package.m_imagePackage = getImage(getDocumentBase(), "package.gif");
m_mediaTracker.addImage(Package.m_imagePackage, 33);
VerticalTorpedo.m_imageBlast[0] = getImage(getDocumentBase(), "vtblast0.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageBlast[0], 34);
VerticalTorpedo.m_imageBlast[1] = getImage(getDocumentBase(), "vtblast1.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageBlast[1], 35);
VerticalTorpedo.m_imageBlast[2] = getImage(getDocumentBase(), "vtblast2.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageBlast[2], 36);
VerticalTorpedo.m_imageBlast[3] = getImage(getDocumentBase(), "vtblast3.gif");
m_mediaTracker.addImage(VerticalTorpedo.m_imageBlast[3], 37);
KillerFish.m_imageFish = getImage(getDocumentBase(), "klr_fsh0.gif");
m_mediaTracker.addImage(KillerFish.m_imageFish, 38);
m_imageWater = getImage(getDocumentBase(), "water.gif");
m_mediaTracker.addImage(m_imageWater, 39);
Destroyer.m_imageShip = getImage(getDocumentBase(), "destroyr.gif");
m_mediaTracker.addImage(Destroyer.m_imageShip, 40);
Destroyer.m_imageWake[0] = getImage(getDocumentBase(), "rt_wake0.gif");
m_mediaTracker.addImage(Destroyer.m_imageWake[0], 41);
Destroyer.m_imageWake[1] = getImage(getDocumentBase(), "rt_wake1.gif");
m_mediaTracker.addImage(Destroyer.m_imageWake[1], 42);
Destroyer.m_imageWake[2] = getImage(getDocumentBase(), "rt_wake2.gif");
m_mediaTracker.addImage(Destroyer.m_imageWake[2], 43);
Destroyer.m_imageWake[3] = getImage(getDocumentBase(), "rt_wake3.gif");
m_mediaTracker.addImage(Destroyer.m_imageWake[3], 44);
DepthCharge.m_imageBlast[0] = getImage(getDocumentBase(), "dcblast0.gif");
m_mediaTracker.addImage(DepthCharge.m_imageBlast[0], 45);
DepthCharge.m_imageBlast[1] = getImage(getDocumentBase(), "dcblast1.gif");
m_mediaTracker.addImage(DepthCharge.m_imageBlast[1], 46);
DepthCharge.m_imageBlast[2] = getImage(getDocumentBase(), "dcblast2.gif");
m_mediaTracker.addImage(DepthCharge.m_imageBlast[2], 47);
DepthCharge.m_imageBlast[3] = getImage(getDocumentBase(), "dcblast3.gif");
m_mediaTracker.addImage(DepthCharge.m_imageBlast[3], 48);
DepthCharge.m_imageSplash[0] = getImage(getDocumentBase(), "splash0.gif");
m_mediaTracker.addImage(DepthCharge.m_imageSplash[0], 49);
DepthCharge.m_imageSplash[1] = getImage(getDocumentBase(), "splash1.gif");
m_mediaTracker.addImage(DepthCharge.m_imageSplash[1], 50);
DepthCharge.m_imageSplash[2] = getImage(getDocumentBase(), "splash2.gif");
m_mediaTracker.addImage(DepthCharge.m_imageSplash[2], 51);
DepthCharge.m_imageSplash[3] = getImage(getDocumentBase(), "splash3.gif");
m_mediaTracker.addImage(DepthCharge.m_imageSplash[3], 52);
EnemySub.m_imageSub = getImage(getDocumentBase(), "enemysub.gif");
m_mediaTracker.addImage(EnemySub.m_imageSub, 53);
EnemyTorpedo.m_imageTorpedo = getImage(getDocumentBase(), "enemytor.gif");
m_mediaTracker.addImage(EnemyTorpedo.m_imageTorpedo, 54);
EnemyTorpedo.m_imageWake[0] = getImage(getDocumentBase(), "et_wake0.gif");
m_mediaTracker.addImage(EnemyTorpedo.m_imageWake[0], 55);
EnemyTorpedo.m_imageWake[1] = getImage(getDocumentBase(), "et_wake1.gif");
m_mediaTracker.addImage(EnemyTorpedo.m_imageWake[1], 56);
EnemyTorpedo.m_imageWake[2] = getImage(getDocumentBase(), "et_wake2.gif");
m_mediaTracker.addImage(EnemyTorpedo.m_imageWake[2], 57);
EnemyTorpedo.m_imageWake[3] = getImage(getDocumentBase(), "et_wake3.gif");
m_mediaTracker.addImage(EnemyTorpedo.m_imageWake[3], 58);
HorizontalTorpedo.m_imageTorpedo = getImage(getDocumentBase(), "htorpedo.gif");
m_mediaTracker.addImage(HorizontalTorpedo.m_imageTorpedo, 59);
MagneticMine.m_imageMine = getImage(getDocumentBase(), "mag_mine.gif");
m_mediaTracker.addImage(MagneticMine.m_imageMine, 60);
Dimension dimension = size();
m_nWindowWidth = dimension.width;
m_nWindowHeight = dimension.height;
m_imageLoading = createImage(dimension.width, dimension.height);
Graphics g = m_imageLoading.getGraphics();
char c = '\310';
byte byte0 = 30;
byte byte1 = 2;
int i = (dimension.width - c) / 2;
int j = (dimension.height * 2) / 3 - byte0 / 2;
int k = i + byte1;
int l = j + byte1;
int i1 = c - 2 * byte1;
int j1 = byte0 - 2 * byte1;
int k1 = 61;
int l1 = -1;
g.setColor(Color.white);
g.fillRect(0, 0, dimension.width, dimension.height);
g.setColor(Color.black);
g.setFont(new Font("Helvetica", 1, 24));
FontMetrics fontmetrics = g.getFontMetrics();
String s = "Torpedo Alley";
int j2 = (dimension.width - fontmetrics.stringWidth(s)) / 2;
int k2 = dimension.height / 3;
g.drawString(s, j2, k2);
k2 += fontmetrics.getDescent();
g.setFont(new Font("Helvetica", 0, 14));
fontmetrics = g.getFontMetrics();
k2 += fontmetrics.getAscent() + fontmetrics.getLeading();
String s1 = "loading now...";
j2 = (dimension.width - fontmetrics.stringWidth(s1)) / 2;
g.drawString(s1, j2, k2);
int l2 = k2 + fontmetrics.getDescent();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -