?? gamelogic.java~1~
字號:
}
else
{
String no = "";
int k = str.length();
int j = -1;
for (int i = 0; i < k; i++)
{
char ch = str.charAt(i);
if (ch == ',')
{
if (j == -1)
{ ///第一個放CPU數
m_iCPUPlayNo = (byte) Integer.parseInt(no);
M_iCPlay = new int[m_iCPUPlayNo][7];
}
// if (j == -2)
// { ///怪物種類
// m_inocpu = (byte) Integer.parseInt(no);
// }
else if (j / 7== m_iCPUPlayNo)
{ //////////最后7個放玩家自己的信息
M_iHPlay[j % 7] = (byte) Integer.parseInt(no);
}
else
{
M_iCPlay[j /7][j % 7] = (byte) Integer.parseInt(no);
}
j = j + 1;
no = "";
}
else
{
no = no + ch;
}
}
for (j = 0; j < m_iCPUPlayNo; j++)
{
M_iCPlay[j][1] = M_iCPlay[j][1] << 4;
M_iCPlay[j][2] = M_iCPlay[j][2] << 4;
}
M_iHPlay[1] = M_iHPlay[1] << 4;
M_iHPlay[2] = M_iHPlay[2] << 4;
}
}
private void readmapSet() {
String str = readfile(Toll_Gate, 1);
if (str.equals("filenull"))
{
StrErr = "Toll_Gatemap file Can't open";
}
else
{
String no = "";
int k = str.length();
int j = -2;
for (int i = 0; i < k; i++)
{
char ch = str.charAt(i);
if (ch == ',')
{
if (j == -2)
{
m_imapnoW = Integer.parseInt(no);
}
else if (j == -1)
{
m_imapnoH = Integer.parseInt(no);
M_imapno = new byte[m_imapnoH][m_imapnoW];
}
else
{
M_imapno[j / m_imapnoW][j %
m_imapnoW] = (byte) (Integer.parseInt(no));
}
j = j + 1;
no = "";
}
else
{
no = no + ch;
}
}
}
}
private String readfile(int i, int type) {
String filename = "";
if (i <= 9 && type == 0)
{
filename = "/image/Toll_Gate" + "0" + i + ".png";
}
else if (i >= 10 && type == 0)
{
filename = "/image/Toll_Gate" + i + ".png";
}
else if (i <= 9 && type == 1)
{
filename = "/image/Toll_Gatemap" + "0" + i + ".png";
}
else if (i >= 10 && type == 1)
{
filename = "/image/Toll_Gatemap" + i + ".png";
}
try
{
byte[] buffer1 = new byte[1024];
InputStream is = null;
String buf = new String();
is = this.getClass().getResourceAsStream(filename);
while (is.read(buffer1) < 0)
{}
is.close();
filename = new String(buffer1);
}
catch (Exception ex)
{
filename = "filenull";
}
return filename;
}
//===================//
// Load and Del a PNG file //
//===================//
private void DelImage(int start, int end) {
}
private void DelImage(int start) {
}
private void LoadImage(int start, int end) {
}
private static Image LoadImage(int iID) {
String sString;
sString = "image/monster";
if (iID < 10)
{
sString += "0";
}
sString += "" + iID;
return LoadImage("/" + sString + ".png");
}
private static Image LoadImage(String sImageFile) {
Image pImage = null;
try
{
pImage = Image.createImage(sImageFile);
}
catch (Exception e)
{
System.out.println("[CANVAS] Error loading image: " + sImageFile);
System.out.println(e);
}
return pImage;
}
//=======================//
// Draw screen routine //
//=======================//
public void paint(Graphics g) {
Graphics pScreen;
int i, j, k, l, iPercent, iY, iFrame, iValue;
// g.translate(m_iScreenX, m_iScreenY);
// g.setClip(0, 0, 200, 200);
pScreen = g;
if (m_iStage == STAGE_GAME)
{
DisposalHplay();
DisposalCPUplay();
DisposalBomb();
CheckDie(); /////////////
//if (m_bPause == true)
//{ return; }
// Draw background //
/////////////////////////////////////////算好偏移位置
if (M_iHPlay[1] <= m_moveminx)
{
m_movex = 0;
}
else if (M_iHPlay[1] >= m_movemaxx)
{
m_movex = m_movemaxx - (SCREEN_WIDTH >> 1) + 8;
}
else
{
m_movex = M_iHPlay[1] - m_moveminx;
}
if (M_iHPlay[2] <= m_moveminy)
{
m_movey = 0;
}
else if (M_iHPlay[2] >= m_movemaxy)
{
m_movey = m_movemaxy - (SCREEN_HEIGHT >> 1) + 8;
}
else
{
m_movey = M_iHPlay[2] - m_moveminy;
}
// g.setColor(0xd4f294);
// g.fillRect(0, 0, 200, 200);
i = 0;
j = 0;
l = (m_movex + SCREEN_WIDTH) >> 4;
if ( (l << 4) < (m_movex + SCREEN_WIDTH))
{
l = l + 1;
}
k = (m_movey + SCREEN_HEIGHT) >> 4;
if ( (k << 4) < (m_movey + SCREEN_HEIGHT))
{
k = k + 1;
}
// private int m_imapnoW; //////大地圖中用小塊地圖的寬的個數.
// private int m_imapnoH; //////大地圖中用小塊地圖的高的個數.
if (l >= m_imapnoW + 1)
{ // 防止 程序崩潰的代碼 by coolfire以后要根據地圖值改
l = m_imapnoW;
}
if (k >= m_imapnoH + 1)
{
k = m_imapnoH;
// 算好畫哪些地圖;
}
for (i = m_movey >> 4; i < k; i++)
{
for (j = (m_movex >> 4); j < l; j++)
{
if (i == 13 || j == 11)
{
System.out.println("" + i + " " + j);
}
if (M_imapno[i][j] >= 19 && M_imapno[i][j] <= 20)
{
g.drawImage(m_Bombwall[0], j * m_mapTYPE_W - m_movex,
i * m_mapTYPE_H - m_movey, 0);
M_imapno[i][j]--;
}
if (M_imapno[i][j] >= 17 && M_imapno[i][j] <= 18)
{
g.drawImage(m_Bombwall[1], j * m_mapTYPE_W - m_movex,
i * m_mapTYPE_H - m_movey, 0);
M_imapno[i][j]--;
}
if (M_imapno[i][j] > 3 && M_imapno[i][j] < 9)
g.drawImage(M_imgmap[2], j * m_mapTYPE_W - m_movex,
i * m_mapTYPE_H - m_movey, 0);
if (M_imapno[i][j] >= 0 && M_imapno[i][j] < 3)
g.drawImage(M_imgmap[M_imapno[i][j]], j * m_mapTYPE_W - m_movex,
i * m_mapTYPE_H - m_movey, 0);
if (M_imapno[i][j] == 16)
{
M_imapno[i][j] = 1;
}
}
}
////Bomb///
for (i = 0; i < m_bombtotal; i++)
{
if (M_Bomb[i][0] >= 1)
{
g.drawImage(M_imgbomb, (M_Bomb[i][1] << 4) - m_movex,
(M_Bomb[i][2] << 4) - m_movey, 0); //
}
}
Disposaldetonation_spot(g);
/////////////////////////////////draw play and cpu
// g.drawImage(M_imgplay[8],M_iHPlay[1]-m_movex,M_iHPlay[2]-m_movey-4,0);
for (i = 0; i < m_iCPUPlayNo; i++)
{
if (M_iCPlay[i][0] >= -30 && M_iCPlay[i][0] <= -10)
{
g.drawImage(m_diecpu[0], M_iCPlay[i][1] - m_movex,
M_iCPlay[i][2] - m_movey - 4, 0);
}
if (M_iCPlay[i][0] > -10 && M_iCPlay[i][0] <= -1)
{
g.drawImage(m_diecpu[1], M_iCPlay[i][1] - m_movex,
M_iCPlay[i][2] - m_movey - 4, 0);
}
if (M_iCPlay[i][0] > 0)
{
// g.drawImage(M_imgplay[6], M_iCPlay[i][1] - m_movex,
// M_iCPlay[i][2] - m_movey - 4, 0); //畫不同的cpu
g.drawImage(m_imgenemy[M_iCPlay[i][0] - 1][M_iCPlay[i][3] * 2 +
M_iCPlay[i][4]], M_iCPlay[i][1] - m_movex,
M_iCPlay[i][2] - m_movey - 4, 0); //畫不同的cpu
/**
for(i=0;i<5;i++)
{
if(M_Bomb[i][2]!=0)
{
// g.drawImage(PlayImage[iCPlay[i][2]],iCPlay[i][0],iCPlay[i][1],0);
}
}
//CPU玩家 //
for(i=0;i<m_iCPUPlayNo;i++)
{
if(M_iCPlay[i][2]!=0)
{
g.drawImage(PlayImage[M_iCPlay[i][2]],M_iCPlay[i][1]-m_movex,M_iCPlay[i][2]-m_movey,0);
}
}
//數文AND文字//
/**/
}
}
if (M_iHPlay[0] > 0)
{
if (oldmandirect == (byte) M_iHPlay[3])
{
g.drawImage(m_imgman[M_iHPlay[3]][imgpoint], M_iHPlay[1] - m_movex,
M_iHPlay[2] - m_movey - 4, 0);
imgpoint = (imgpoint + 1) % 3;
}
else
{
imgpoint = 0;
g.drawImage(m_imgman[M_iHPlay[3]][imgpoint], M_iHPlay[1] - m_movex,
M_iHPlay[2] - m_movey - 4, 0);
}
}
// draw game infomation
g.drawImage(M_title, 0,
0, 0);
drawNum(51, 3, m_iScore, g);
drawNum(117, 3, m_iTimeLeft, g); //測試用,以后會根據關卡調整時間
drawNum(164, 3, m_life, g); // 也是測試 ,因為 數據 還 沒有 放在合適地方
if (m_iTimeLeft-- < 1 || M_iHPlay[0] == 0)
g.drawString("GAME OVER", 50,
100, 0); // 還沒有寫好函數跳到 game over 窗口
// 下面 應該 還有判斷 所有 的怪物 是否被殺的 代碼
// 還沒有寫 退出函數 所以 只能 強行退出
}
}
private void Initloading() {
}
private void Runloading() {
}
private void InitTitle() {
}
private void RunTitle() {
}
private void InitHELP() {
}
private void RunHELP() {
}
private void InitSET() {
}
private void RunSET() {
}
private void InitRanking() {
}
private void RunRanking() {
}
private void InitInternet() {
}
private void RunInternet() {
}
private void InitGAMEOVER() {
}
private void RunGAMEOVER() {
}
private void InitGAME() {
int i, j, k;
m_iStage = STAGE_GAME;
itimeNo = 0;
InitGAMEimage();
Loaddatabase();
M_Bomb = new byte[m_bombtotal][5];
for (i = 0; i < m_bombtotal; i++)
{
for (j = 0; j < 7; j++)
{
M_Bomb[i][j] = 0;
}
}
M_detonation_spot = new byte[m_detonation_spottotal][4];
for (i = 0; i < m_detonation_spottotal; i++)
{
for (j = 0; j < 4; j++)
{
M_detonation_spot[i][j] = 0;
}
}
M_medal = new byte[m_medaltotal][3];
for (i = 0; i < m_medaltotal; i++)
{
for (j = 0; j < 3; j++)
{
M_medal[i][j] = 0;
}
}
}
// for draw score to screen
public void drawNum(int x, int y, int n, Graphics gScreen) {
int iNo;
if (n < 10) {
gScreen.drawImage(M_imgnum[n], x, y, 0);
} else
if (n < 100) {
iNo = (n/10);
gScreen.drawImage(M_imgnum[iNo], x-6, y, 0);
iNo = (n%10);
gScreen.drawImage(M_imgnum[iNo], x, y, 0);
} else
if (n < 1000) {
iNo = (n/100);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -