?? gamelogic.java~1~
字號:
case 21:
m_iKey = KEY_L;
break;
case 22:
m_iKey = KEY_R;
break;
case 1:
m_iKey = KEY_UP;
break;
case 6:
m_iKey = KEY_DOWN;
break;
case 2:
m_iKey = KEY_LEFT;
break;
case 5:
m_iKey = KEY_RIGHT;
break;
// Key 0..9 //
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 58:
m_iKey = KEY_NUM - 48 + iKeyCode;
break;
// Key #, * //
case 35:
ToggleSound();
m_iKey = KEY_NONE;
break;
case 42:
ToggleVibration();
m_iKey = KEY_NONE;
break;
}
if (iKeyCode == getKeyCode(FIRE))
{
m_iKey |= (KEY_NUM + 5);
} */
}
public void keyReleased(int iKeyCode) {
m_iKey = KEY_NONE;
}
//=======================//
// Toggle sound on/off //
//=======================//
private static void ToggleSound() {
m_bSoundOn = !m_bSoundOn;
if (m_bSoundOn == true)
{
m_pEffect.PlayBackgroundSound();
}
else
{
m_pEffect.StopSound();
}
}
//===========================//
// Toggle vibration on/off //
//===========================//
private static void ToggleVibration() {
m_bVibrateOn = !m_bVibrateOn;
if (m_bVibrateOn == true)
{
m_pEffect.vibrate();
}
}
//===============================//
// Save settings and quit game //
//===============================//
private static void QuitGame() {
try
{
m_pRecord.UpdateRecord(GetRecordString());
}
catch (Exception e)
{
}
try
{
m_pRecord.CloseRecord();
}
catch (Exception e)
{
}
m_pParent.QuitGame();
}
//============================//
// Init game to first level //
//============================//
private static void InitGame() {
System.gc();
m_iLevel = 0;
m_iScore = 0;
SetLevel(m_iLevel);
}
//=========================//
// Setup level variables //
//=========================//
private static void SetLevel(int iLevel) {
}
//========================//
// Add a sign to screen //
//========================//
private static void AddSign(int iX, int iY, int iSign) {
}
private void findBombpath(int i) { //////四個方向的查找爆炸點.
byte j = 0, k = 0;
byte cx = M_Bomb[i][1];
byte cy = M_Bomb[i][2]; // cx and cy is bomb position
while (M_detonation_spot[k][0] != 0)
{
k++;
}
for (j = 0; j <= M_Bomb[i][4]; j++)
{ // left
if (M_imapno[cy][cx - j] == 1)
{ //////不能炸開注意不一定是2可能你要改過下同
if (j == 0)
{
M_detonation_spot[k][0] = Bombing_c;
}
if (j >= 1 && j < M_Bomb[i][4])
{
M_detonation_spot[k][0] = Bombing_lr;
}
if (j == M_Bomb[i][4])
{
M_detonation_spot[k][0] = Bombing_lt;
}
M_detonation_spot[k][1] = (byte) (cx - j);
M_detonation_spot[k][2] = cy;
// M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
M_detonation_spot[k][3] = m_detonationtime;
k++;
}
if (M_imapno[cy][cx - j] == 2)
{
M_imapno[cy][cx - j] = Bombing_wall;
break;
}
if (M_imapno[cy][cx - j] == 3)
{
M_detonation_spot[k][0] = Bombing_c;
M_detonation_spot[k][1] = (byte) (cx - j);
M_detonation_spot[k][2] = cy;
// M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
M_detonation_spot[k][3] = (byte)(m_detonationtime-1);
M_imapno[cy][cx - j] = 1;
k++;
break;
}
if ( M_imapno[cy][cx - j] > 3 && M_imapno[cy][cx - j] < 9 )
{ M_detonation_spot[k][0] = (byte)(M_imapno[cy][cx - j] + 16);
M_detonation_spot[k][1] = (byte) (cx - j);
M_detonation_spot[k][2] = cy;
M_detonation_spot[k][3] = 120;
M_imapno[cy][cx - j] = 1;
k++;
break;
}
if (M_imapno[cy][cx - j] == 0)
{
break;
}
}
for (j = 1; j <= M_Bomb[i][4]; j++)
{ // right
if (M_imapno[cy][cx + j] == 1)
{ //////
if (j >= 1 && j < M_Bomb[i][4])
{
M_detonation_spot[k][0] = Bombing_lr;
}
if (j == M_Bomb[i][4])
{
M_detonation_spot[k][0] = Bombing_rt;
}
M_detonation_spot[k][1] = (byte) (cx + j);
M_detonation_spot[k][2] = cy;
// M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
M_detonation_spot[k][3] = m_detonationtime;
k++;
}
if (M_imapno[cy][cx + j] == 2)
{
M_imapno[cy][cx + j] = Bombing_wall;
break;
}
if (M_imapno[cy][cx + j] == 3)
{
M_detonation_spot[k][0] = Bombing_c;
M_detonation_spot[k][1] = (byte) (cx + j);
M_detonation_spot[k][2] = cy;
// M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
M_detonation_spot[k][3] = (byte)(m_detonationtime-1);
M_imapno[cy][cx + j] = 1;
k++;
break;
}
if ( M_imapno[cy][cx + j] > 3 && M_imapno[cy][cx + j] < 9 )
{ M_detonation_spot[k][0] = (byte)(M_imapno[cy][cx + j] + 16);
M_detonation_spot[k][1] = (byte) (cx + j);
M_detonation_spot[k][2] = cy;
System.out.println("" + M_detonation_spot[k][0] + " " + M_detonation_spot[k][1]);
M_detonation_spot[k][3] = 120;
M_imapno[cy][cx + j] = 1;
k++;
break;
}
if (M_imapno[cy][cx + j] == 0)
{
break;
}
}
for (j = 1; j <= M_Bomb[i][4]; j++)
{ // up
if (M_imapno[cy - j][cx] == 1)
{ //////
if (j >= 1 && j < M_Bomb[i][4])
{
M_detonation_spot[k][0] = Bombing_ud;
}
if (j == M_Bomb[i][4])
{
M_detonation_spot[k][0] = Bombing_ut;
}
M_detonation_spot[k][1] = cx;
M_detonation_spot[k][2] = (byte) (cy - j);
// M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
M_detonation_spot[k][3] = m_detonationtime;
k++;
}
if (M_imapno[cy - j][cx] == 2)
{
M_imapno[cy - j][cx] = Bombing_wall;
break;
}
if (M_imapno[cy - j][cx] == 3)
{
M_detonation_spot[k][0] = Bombing_c;
M_detonation_spot[k][1] = cx;
M_detonation_spot[k][2] = (byte)(cy - j);
// M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
M_detonation_spot[k][3] = (byte)(m_detonationtime-1);
M_imapno[cy - j][cx ] = 1;
k++;
break;
}
if ( M_imapno[cy - j][cx ] > 3 && M_imapno[cy - j][cx ] < 9 )
{ M_detonation_spot[k][0] = (byte)(M_imapno[cy-j][cx ] + 16);
System.out.println("" + M_detonation_spot[k][0] + " " + M_detonation_spot[k][1]);
M_detonation_spot[k][1] = cx;
M_detonation_spot[k][2] = (byte)(cy - j);
M_detonation_spot[k][3] = 120;
M_imapno[cy-j][cx ] = 1;
k++;
break;
}
if (M_imapno[cy - j][cx] == 0)
{
break;
}
}
for (j = 1; j <= M_Bomb[i][4]; j++)
{ // down
if (M_imapno[cy + j][cx] == 1)
{ //////
if (j >= 1 && j < M_Bomb[i][4])
{
M_detonation_spot[k][0] = Bombing_ud;
}
if (j == M_Bomb[i][4])
{
M_detonation_spot[k][0] = Bombing_dt;
}
M_detonation_spot[k][1] = cx;
M_detonation_spot[k][2] = (byte) (cy + j);
// M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
M_detonation_spot[k][3] = m_detonationtime;
k++;
}
if (M_imapno[cy + j][cx] == 2)
{
M_imapno[cy + j][cx] = Bombing_wall;
break;
}
if (M_imapno[cy + j][cx] == 3)
{
M_detonation_spot[k][0] = Bombing_c;
M_detonation_spot[k][1] = cx;
M_detonation_spot[k][2] = (byte) (cy + j);
// M_imapno[M_detonation_spot[k][1]][M_detonation_spot[k][2]]=1;
M_detonation_spot[k][3] = (byte)(m_detonationtime-1);
M_imapno[cy + j][cx ] = 1;
k++;
break;
}
if ( M_imapno[cy + j][cx ] > 3 && M_imapno[cy + j][ cx ] < 9 )
{ M_detonation_spot[k][0] = (byte)(M_imapno[cy + j][cx ] + 16);
M_detonation_spot[k][1] = cx;
M_detonation_spot[k][2] = (byte)(cy + j);
M_detonation_spot[k][3] = 120;
M_imapno[cy + j][cx ] = 1;
k++;
break;
}
if (M_imapno[cy + j][cx] == 0)
{
break;
}
}
}
private void CheckDie() {
int k = 0;
byte i = 0;
// 檢測 玩家 和怪物 碰狀
for (i = 0; i < m_iCPUPlayNo; i++) //為了測試方便,要根據怪物數子改過來
{
int temp1 = M_iCPlay[i][1] - M_iHPlay[1];
int temp2 = M_iCPlay[i][2] - M_iHPlay[2];
if ( Math.abs(temp1) < 15 && Math.abs(temp2) < 16 && M_iCPlay[i][0] > 0)
{
M_iHPlay[0] = 0;
}
}
// 怪物死亡動畫
for (i = 0; i < m_iCPUPlayNo; i++)
if ( M_iCPlay[i][0] < 0 )
M_iCPlay[i][0]++;
// 檢測 炸彈 威力 以及 玩家pick寶貝
for (; k < M_detonation_spot.length; k++)
{
if (M_detonation_spot[k][0] > 0 && M_detonation_spot[k][0] < 8)
{
for (i = 0; i < m_iCPUPlayNo; i++) //為了測試方便,要根據怪物數子改過來
{
int temp1 = M_iCPlay[i][1] - (M_detonation_spot[k][1] << 4);
int temp2 = M_iCPlay[i][2] - (M_detonation_spot[k][2] << 4);
int temp3 = M_iHPlay[1] - (M_detonation_spot[k][1] << 4);
int temp4 = M_iHPlay[2] - (M_detonation_spot[k][2] << 4);
if (M_iHPlay[0] > 0)
{
if ( (Math.abs(temp3) < 15 && Math.abs(temp4) < 3) ||
(Math.abs(temp3) < 3 && Math.abs(temp4) < 15))
{
M_iHPlay[0] = 0;
}
}
if (M_iCPlay[i][0] > 0)
{
if ( (Math.abs(temp1) < 15 && Math.abs(temp2) < 3) ||
(Math.abs(temp1) < 3 && Math.abs(temp2) < 15))
{
m_iScore +=M_iCPlay[i][0]*30;
M_iCPlay[i][0] = -30;
}
}
}
}
if (M_detonation_spot[k][0] >= 20 && M_detonation_spot[k][0] <= 24 && M_iHPlay[0] > 0)
{
int temp3 = M_iHPlay[1] - (M_detonation_spot[k][1] << 4);
int temp4 = M_iHPlay[2] - (M_detonation_spot[k][2] << 4);
byte a = M_detonation_spot[k][0];
if ( (Math.abs(temp3) < 8 && Math.abs(temp4) < 3) ||
(Math.abs(temp3) < 3 && Math.abs(temp4) < 8))
{
M_imapno[M_detonation_spot[k][2]][M_detonation_spot[k][1]] = 1;
M_detonation_spot[k][0] = 0 ;
switch (a)
{
case 20:
m_iScore +=100;
break;
case 21:
if ( M_iHPlay[5] < 5)
M_iHPlay[5] += 1;
break;
case 22:
if ( M_iHPlay[4] < 4)
M_iHPlay[4] += 1;
break;
case 23:
if ( M_iHPlay[6] < 4)
M_iHPlay[6] += 1;
case 24:
m_life++;
break;
}
}
}
}
}
private void DisposalBomb() { /////////處理炸彈
int i, k;
for (i = 0; i < m_bombtotal; i++)
{
if (M_Bomb[i][0] >= 1)
{
M_Bomb[i][3]--; /////////////炸彈時間減1
if (M_Bomb[i][3] == 0)
{
M_Bomb[i][0] = 0; /////////////消亡
M_imapno[M_Bomb[i][2]][M_Bomb[i][1]] = 1; ////////改地圖
findBombpath(i); //////////設置暴炸點.
}
}
} ////////////////////////////////////
for (i = 0; i < m_bombtotal; i++)
{ ////////處理連暴
if (M_Bomb[i][0] >= 1)
{
for (k = 0; k < M_detonation_spot.length; k++)
{
if (M_detonation_spot[k][0] >= 1 && M_detonation_spot[k][0] <=7 &&
M_detonation_spot[k][1] == M_Bomb[i][1] &&
M_detonation_spot[k][2] == M_Bomb[i][2])
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -