?? gamelogic.java.bak
字號:
}
}
//==================//
// Thread process //
//==================//
public synchronized void start() {
m_pThread = new Thread(this);
m_pThread.start();
}
public synchronized void stop() {
m_pThread = null;
}
public final int rand_no(int a) {
int r = rand.nextInt() % a;
if (r < 0)
{
r = -r;
}
return r;
}
//====================//
// Handle key press //
//====================//
private final int ConvertKeyCode(int iKeyCode) {
int iKey;
iKey = iKeyCode;
if (iKey == getKeyCode(UP) || iKey == KEY_NUM2)
{
iKey = KEY_UP;
}
else
if (iKey == getKeyCode(DOWN) || iKey == KEY_NUM8)
{
iKey = KEY_DOWN;
}
else
if (iKey == getKeyCode(LEFT) || iKey == KEY_NUM4)
{
iKey = KEY_LEFT;
}
else
if (iKey == getKeyCode(RIGHT) || iKey == KEY_NUM6)
{
iKey = KEY_RIGHT;
}
else
if (iKey == getKeyCode(FIRE) || iKey == KEY_NUM5)
{
iKey = KEY_FIRE;
}
if (iKey == KEY_NUM1)
{
iKey = KEY_UP | KEY_LEFT;
}
else
if (iKey == KEY_NUM3)
{
iKey = KEY_UP | KEY_RIGHT;
}
else
if (iKey == KEY_NUM7)
{
iKey = KEY_DOWN | KEY_LEFT;
}
else
if (iKey == KEY_NUM9)
{
iKey = KEY_DOWN | KEY_RIGHT;
}
else
if (iKey == KEY_STAR)
{
iKey = KEY_L;
}
else
if (iKey == KEY_POUND)
{
iKey = KEY_R;
}
return iKey;
}
public void keyPressed(int iKeyCode) {
m_iKey = ConvertKeyCode(iKeyCode);
/* switch (iKeyCode)
{
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);
} */
KeyHandler(m_iKey, true);
}
public void keyReleased(int iKeyCode) {
m_iKey = KEY_NONE;
}
//=======================//
// Toggle sound on/off //
//=======================//
/* private static void ToggleSound() {
}
//===========================//
// Toggle vibration on/off //
//===========================//
private static void ToggleVibration() {
}
//===============================//
// Save settings and quit game //
//===============================//
private static void QuitGame() {
}
//============================//
// Init game to first level //
//============================//
private static void InitGame() {
}
//=========================//
// 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 final 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 final void CheckDie() {
int k = 0;
int i = 0;
// 檢測 玩家 和怪物 碰狀
// for (i = 0; i < m_iCPUPlayNo; i++) //為了測試方便,要根據怪物數子改過來
for (i = m_iCPUPlayNo -1; i >= 0; i--) // add for performence
{
int temp1 = M_iCPlay[i][1] - M_iHPlay[1];
int temp2 = M_iCPlay[i][2] - M_iHPlay[2];
if (Math.abs(temp1) < 12 && Math.abs(temp2) < 13 && M_iCPlay[i][0] > 0)
{
M_iHPlay[0] = -36;
}
}
// 怪物死亡動畫
// for (i = 0; i < m_iCPUPlayNo; i++)
for (i = m_iCPUPlayNo -1; i >= 0; i--) // add for performence
{
if (M_iCPlay[i][0] < 0)
{
M_iCPlay[i][0]++;
// 檢測 炸彈 威力 以及 玩家pick寶貝
}
}
int j = M_detonation_spot.length; // add for performence
// for (; k < M_detonation_spot.length; k++)
for (k = j - 1; k >= 0; k--) // add for performence
{
if (M_detonation_spot[k][0] > 0 && M_detonation_spot[k][0] < 8)
{
// for (i = 0; i < m_iCPUPlayNo; i++) //為了測試方便,要根據怪物數子改過來
for (i = m_iCPUPlayNo -1; i >= 0; i--) // add for performence
{
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);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -