?? gamelogic.java~1~
字號:
k = 16;
}
M_iHPlay[1] = ( (x >> 4) << 4) + k;
M_iHPlay[2] = y;
}
i = 3;
}
M_iHPlay[3] = i;
}
}
//============================//
// Generate a random number //
//============================//
private static int rand(int iRange) {
return (m_rRandom.nextInt() & 65535) % iRange;
}
//=================================//
// Combine variables to a string //
//=================================//
private static String GetRecordString() {
int i;
String sRecord = "";
sRecord = m_iTopScore + "/" +
m_bSoundOn + "/" +
m_bVibrateOn + "/" +
m_iPlayed + "/" +
"";
for (i = sRecord.length(); i < MAX_SAVELENGTH; i++)
{
sRecord += "*";
}
return sRecord;
}
//===============================//
// Extract string to variables //
//===============================//
private void ExtractString(String sRecord) {
int i, iLength, j;
String sResult;
String pData[];
// Initialize variables //
i = 0;
j = 0;
iLength = sRecord.length();
sResult = "";
pData = new String[MAX_SAVEDATA];
// Extract data to pData[] //
while (i < iLength)
{
if (sRecord.charAt(i) != '/')
{
sResult += sRecord.charAt(i);
}
else
{
pData[j] = sResult;
sResult = "";
j++;
}
i++;
}
// Restore values //
// Use
try
{
i = 0;
m_iTopScore = Integer.valueOf(pData[i++]).intValue();
if (pData[i++].equals("true"))
{
m_bSoundOn = true;
}
else
{
m_bSoundOn = false;
}
if (pData[i++].equals("true"))
{
m_bVibrateOn = true;
}
else
{
m_bVibrateOn = false;
}
m_iPlayed = (byte) (Integer.valueOf(pData[i++]).intValue());
}
catch (Exception e)
{}
}
//=========================//
// Change to a new stage //
//=========================//
private void ChangeStage(int iNewStage) {
m_iStage = iNewStage;
m_iKey = KEY_NONE;
m_iCounter = 0;
m_bRefresh = true;
repaint();
}
//==========================//
// Get free sprite object //
//==========================//
/**
private int[] findmynewtowards(int i)
{
int towards[]={0,0,0,0};
int x,y,k,l=0,m=0,n=0;
x=M_iCPlay[i][1]/m_mapTYPE_W;
y=M_iCPlay[i][2]/m_mapTYPE_H;
for(k=0;k<4;k++)
{
if(k==0)
{
m=x;
n=y-1;
}
else if(k==1)
{
m=x-1;
n=y;
}
else if(k==2)
{
m=x;
n=y+1;
}
else
{
m=x+1;
n=y;
}
if(M_imapno[m][n]==2)
{
l=l+1;
towards[l]=k;
}
}
towards[0]=l;
return towards;
}
/**/
// private int findmove(int i) {
// return 1;
// }
/* private Sprite GetFreeSprite() {
int i;
for (i = 0; i < MAX_SPRITE; i++)
{
if (m_pSprite[i].iType == TYPE_NULL)
{
return m_pSprite[i];
}
}
return null;
} */
//=====================//
// Main game process //
//=====================//
public void run() {
while (true)
{
Thread.yield();
lTimeStart = System.currentTimeMillis();
// Frame rate control //
repaint();
serviceRepaints();
WaitFrames(MAX_FRAME_WAIT);
}
}
private final void WaitFrames(long lFrameWait) {
for(; System.currentTimeMillis()-lTimeStart < lFrameWait; Thread.yield());
}
//========================//
// Initialize variables //
//========================//
private void Flow_INIT() {
}
//===================================================//
// Logo screen: Load image from resource to memory //
//===================================================//
private void Flow_LOGO() {
}
//====================================//
// Title screen: Wait select option //
//====================================//
private void Flow_TITLE() {
}
//===============//
// Help screen //
//===============//
private void Flow_HELP() {
}
//===================//
// Gameover screen //
//===================//
private void Flow_GAMEOVER() {
}
//===============//
// Game screen //
//===============//
private void Flow_GAME() {
/* Sprite pSprite;
int i, j, iX, iY, iID, iSelection;
//-------------------//
// Check for pause //
//-------------------//
if (m_iKey == KEY_L)
{
m_bPause = !m_bPause;
m_iKey = KEY_NONE;
repaint();
}
if (m_bPause == true)
{
return;
}
//-----------------//
// Box animation //
//-----------------//
m_iBoxAnim = (m_iBoxAnim + 1) & 31;
//------------------------//
// Show level and ready //
//------------------------//
if (m_iCounter < 30)
{
m_iCounter++;
}
else
{
// Key press check //
iSelection = 0;
if (m_iKey != KEY_NONE)
{
if (m_iKey == (KEY_NUM + 1) || m_iKey == (KEY_NUM + 4) ||
m_iKey == (KEY_NUM + 7))
{
iSelection = 1;
}
if (m_iKey == (KEY_NUM + 2) || m_iKey == (KEY_NUM + 5) ||
m_iKey == (KEY_NUM + 8))
{
iSelection = 2;
}
if (m_iKey == (KEY_NUM + 3) || m_iKey == (KEY_NUM + 6) ||
m_iKey == (KEY_NUM + 9))
{
iSelection = 3;
}
m_iKey = KEY_NONE;
}
// Checking //
if (iSelection > 0 && m_iToyLeft > 0)
{
if (iSelection == m_iToyPart[m_iToyCurrent])
{
m_iToyCurrent++;
m_iToyLeft--;
m_pSprite[m_iSpritePointer].iType = TYPE_NULL;
// Set sprite to empty if all dolls were queued //
if (m_iToyLeft < MAX_SPRITE)
{
// Level clear //
if (m_iToyLeft <= 0)
{
m_iCounter = 40;
}
}
else
{
// Create a new doll and queue at the end //
i = m_iSpritePointer;
j = (m_iSpritePointer + 8 - 1) & 7;
m_pSprite[m_iSpritePointer].iType = TYPE_DOLL;
m_pSprite[i].iX = m_pSprite[j].iX + 28;
m_pSprite[i].iDX = -4;
m_pSprite[i].iImageID = m_iToyPart[m_iToyPointer];
m_pSprite[i].iCounter = m_pSprite[j].iCounter;
m_iSpritePointer = (m_iSpritePointer + 1) & 7;
// m_iToyPointer = (m_iToyPointer+1)&63;
m_iToyPointer++;
}
// Move all dolls //
for (i = 0; i < MAX_SPRITE; i++)
{
if (m_pSprite[i].iType == TYPE_DOLL)
{
m_pSprite[i].iCounter += 7;
}
}
AddSign(36, 88, IMG_RIGHT);
m_iScore += (4 + m_iLevel);
}
else
{
// Wrong selection //
if (m_pEffect != null && m_bVibrateOn == true)
{
m_pEffect.vibrate();
}
m_iTimeLeft -= 40;
AddSign(36, 88, IMG_WRONG);
}
} */
// Update small dolls animation //
/* for (i = 0; i < MAX_SPRITE; i++)
{
if (m_pSprite[i].iType == TYPE_DOLL)
{
if (m_pSprite[i].iCounter > 0)
{
m_pSprite[i].iCounter--;
m_pSprite[i].iX += m_pSprite[i].iDX;
}
}
} */
// Time check //
/* m_iTimeLeft--;
if (m_iTimeLeft <= 0)
{
m_pImage[IMG_INFO] = null;
m_pImage[IMG_NO] = null;
m_pImage[IMG_LEVEL] = null;
m_pImage[IMG_READY] = null;
m_pImage[IMG_GO] = null;
System.gc();
ChangeStage(STAGE_GAMEOVER);
if (m_iScore > m_iTopScore)
{
m_iTopScore = m_iScore;
}
}
}
// Finish game delay //
if (m_iCounter >= 40)
{
m_iCounter++;
if (m_iCounter >= 60)
{
m_iCounter = 0;
m_iLevel++;
SetLevel(m_iLevel);
}
}
//-----------------//
// Update screen //
//-----------------//
repaint();
//-------------------------//
// Update sign animation //
//-------------------------//
for (i = 0; i < m_pSign.length; i++)
{
if (m_pSignCount[i] > 0)
{
m_pSignCount[i]--;
m_pSignY[i] -= 2;
}
} */
}
//---- Graphics engine ---------------------------------------------------//
private void Loaddatabase() {
M_iHPlay = new int[7];
ReadCPUPlaySet();//////配備玩家andCPU以做好
readmapSet();//////配備地圖以做好
m_moveminx = (SCREEN_WIDTH >> 1) - 8;
m_movemaxx = M_imapno[0].length * 16 - (SCREEN_WIDTH >> 1) - 8;
m_moveminy = (SCREEN_HEIGHT >> 1) - 8;
m_movemaxy = M_imapno.length * 16 - (SCREEN_HEIGHT >> 1) - 8;
m_drawx = SCREEN_WIDTH >> 4;
if (SCREEN_WIDTH > (m_drawx << 4))
{
m_drawx = m_drawx + 1;
}
m_drawy = SCREEN_HEIGHT >> 4;
if (SCREEN_HEIGHT > (m_drawy << 4))
{
m_drawy = m_drawy + 1; //處理屏幕上畫多少快
}
int i = 0;
M_Bomb = new byte[m_bombtotal][5];
for (i = 0; i < m_bombtotal; i++)
{
M_Bomb[i][0] = 0;
M_Bomb[i][1] = 0;
M_Bomb[i][2] = 0;
M_Bomb[i][3] = 0;
M_Bomb[i][4] = 0;
}
M_detonation_spot = new byte[64][4]; // 40?
for (i = 0; i < 40; i++)
{
M_detonation_spot[i][0] = 0;
M_detonation_spot[i][1] = 0;
M_detonation_spot[i][2] = 0;
M_detonation_spot[i][3] = 0;
}
///////////////////讀配備文件
InitGAMEimage(); ///////////////////地圖初始化
///////////////////////////////////////////以下是本在配備文件中做的///////////////////////////
//0生命 1X 2Y 3方向 4力量 5速度 6炸數.
/* M_iHPlay[0] = 2;
M_iHPlay[1] = 16;
M_iHPlay[2] = 16;
M_iHPlay[3] = 0;
M_iHPlay[4] = 2;
M_iHPlay[5] = 5;
M_iHPlay[6] = 3;
M_iCPlay = new int[4][7];
for (i = 0; i < 4; i++)
{
M_iCPlay[i][0] = 1;
M_iCPlay[i][1] = 16;
M_iCPlay[i][2] = 48;
M_iCPlay[i][3] = 0;
M_iCPlay[i][5] = 2;
M_iCPlay[i][5] = 1;
M_iCPlay[i][6] = 0;
}
M_iCPlay[0][1] = 16;
M_iCPlay[0][5] = 4;
M_iCPlay[0][2] = 48;
M_iCPlay[1][1] = 16;
M_iCPlay[1][5] = 2;
M_iCPlay[1][2] = 96;
M_iCPlay[2][1] = 16;
M_iCPlay[2][5] = 5;
M_iCPlay[2][2] = 96;
M_iCPlay[3][1] = 16;
M_iCPlay[3][2] = 96; */
}
private void ReadCPUPlaySet() {
Toll_Gate = 0;
String str = readfile(Toll_Gate, 0); ///////////得到文件內容
if (str.equals("filenull"))
{
StrErr = "Toll_Gate file Can't open";
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -