?? gamemain.java
字號(hào):
(sprCrab[i].isVisible) &&
(heroX == sprCrab[i].mapX) &&
(heroY == sprCrab[i].mapY) &&
(sprCrab[i].getFrame() > 2))
{
snd.playSound(game.SNDID_COLLIDE, 1);
respawnTime = game.getTime() + 3000;
sMessage = "被螃蟹夾到!";
}
}
//
// monkey
//
for (int i=0; i<sprMonkey.length; i++)
{
if ((!sprKangoo.isMoving) &&
(sprMonkey[i].isVisible) &&
(heroX == sprMonkey[i].mapX) &&
(heroY == sprMonkey[i].mapY) &&
((sprMonkey[i].posX == 0 - Config.SPR_MONKEY_OFFSETX) ||
(sprMonkey[i].posX == Config.SCREEN_WIDTH - Config.SPR_MONKEY_WIDTH +
Config.SPR_MONKEY_OFFSETX)))
{
if (sprMonkey[i].isPlayingAnim() == false)
{
if (sprMonkey[i].dir == Config.DIR_RIGHT)
sprMonkey[i].setFrameSequenceTotalTime(ANIM_MONKEY_TO_RIGHT, Sprite.FORWARD, 400);
else
sprMonkey[i].setFrameSequenceTotalTime(ANIM_MONKEY_TO_LEFT, Sprite.FORWARD, 400);
}
else
{
if ((sprMonkey[i].getFrame() == 2) ||
(sprMonkey[i].getFrame() == 5))
{
snd.playSound(game.SNDID_COLLIDE, 1);
respawnTime = game.getTime() + 3000;
sMessage = "被野人攻擊!";
bHitByMonkey = true;
}
}
}
}
}
//
// check what's under kangoo
//
if (!sprKangoo.isMoving)
{
int til = getTile(heroX, heroY);
if (til == Config.TILE_TURTLE_UP)
setTile(heroX,heroY, Config.TILE_TURTLE_DOWN);
boolean onAnimatedLeaf = false;
for (int a=0; a<nLeafsDis.length /2; a++)
if (herooffset == nLeafsDis[a + a + 0])
onAnimatedLeaf = true;
if (onAnimatedLeaf == false)
{
if (til == Config.TILE_LEAF)
{
setTile(heroX,heroY, Config.TILE_LEAF_DOWN1);
leafChange = game.getTime() + 400;
}
else
if ((game.getTime() > leafChange) && (til == Config.TILE_LEAF_DOWN1))
{
setTile(heroX,heroY, Config.TILE_LEAF_DOWN2);
leafChange = game.getTime() + 400;
}
else
if ((game.getTime() > leafChange) && (til == Config.TILE_LEAF_DOWN2))
setTile(heroX,heroY, Config.TILE_WATER);
// clear the timer
//if ((til != Config.TILE_LEAF) && (til != Config.TILE_LEAF_DOWN1) && (til != Config.TILE_LEAF_DOWN2))
//leafChange = 0;
}
}
//
// handle disappearing leafs
//
for (int a=0; a<nLeafsDis.length /2; a++)
{
boolean can = true;
//if ((herooffset == nLeafsDis[a + a + 0]) && (!sprKangoo.isMoving))
//can = false;
//if ((herooldoffset == nLeafsDis[a + a + 0]) && (!sprKangoo.isMoving))
//can = false;
if (can)
{
int time = (int)Utils.getTime() - nLeafsDis[a + a + 1];
time = time / 400;
time = time % 12;
// animate the leafs
// time gets from 0 to 11
// 0..3 - normal leaf
// 4..6 - leaf disappears
// 7..8 - only water
// 9..11 - leaf appears
if (time < 4)
setTile(nLeafsDis[a + a + 0], Config.TILE_LEAF);
if ((time >= 4) && (time < 7))
setTile(nLeafsDis[a + a + 0], Config.TILE_LEAF + ((time - 4) * Config.TILE_WIDTH));
else
if ((time >= 7) && (time < 9))
setTile(nLeafsDis[a + a + 0], 0);
else
setTile(nLeafsDis[a + a + 0], Config.TILE_LEAF + ((2 - (time - 9)) * Config.TILE_WIDTH));
}
}
//
// put the turtle back up
//
if ((sprKangoo.isMoving == true) && (Utils.getTime() > (sprKangoo.m_moveStartTime + 250)) &&
(getTile(oldHeroX, oldHeroY) == Config.TILE_TURTLE_DOWN))
setTile(oldHeroX, oldHeroY, Config.TILE_TURTLE_UP);
}
/**
* @param g
*/
public void paint(Graphics g)
{
if (!levelPrepared)
return;
g.translate(0, 0);
g.setClip(0,0, Config.SCREEN_WIDTH, Config.SCREEN_HEIGHT);
g.setColor(0);
paintTiled(g, 0, Config.TILED_SCREEN_OFFSETY);
g.translate(0, scrollY);
int x,y;
boolean bFoundAPlace;
for (int a=0; a<countFlares; a++)
{
int ofs = a *3;
if ((aFlares[ofs + 2] != 0) && ((int)game.getTime() > aFlares[ofs + 2]))
{
// paint!
int frame = (int)game.getTime() - aFlares[ofs + 2];
if (frame <= 1200)
{
frame = frame / 200;
g.setClip(aFlares[ofs + 0], aFlares[ofs + 1], Config.SPR_FLARE_WIDTH, Config.SPR_FLARE_HEIGHT);
g.drawImage(iFlare, aFlares[ofs + 0] - (frame * Config.SPR_FLARE_WIDTH), aFlares[ofs + 1], Config.ANCHOR);
}
else
aFlares[ofs + 2] = 0;
}
else
{
bFoundAPlace = false;
x = 0; y = 0;
while (bFoundAPlace == false)
{
x = Math.Rand(mapWidth - 1);
y = Math.Rand(2, mapHeight - 2);
//Utils.Log(x+", "+y);
// check type of map pos
int tile = getTile(x, y);
if (tile == Config.TILE_WATER)
bFoundAPlace = true;
}
aFlares[ofs + 0] = (x * Config.TILE_WIDTH) + Config.SPR_FLARE_WIDTH +
Math.Rand(0, Config.TILE_WIDTH - (Config.SPR_FLARE_WIDTH * 2));
aFlares[ofs + 1] = ((y - mapMaxOffsetY) * Config.TILE_HEIGHT) + Config.SPR_FLARE_HEIGHT +
Math.Rand(0, Config.TILE_HEIGHT - (Config.SPR_FLARE_HEIGHT * 2)) + Config.TILED_SCREEN_OFFSETY;
aFlares[ofs + 2] = (int)(game.getTime() + Math.Rand(2500));
}
}
for (int i=0; i<sprCrab.length; i++)
sprCrab[i].paint(g);
for (int i=0; i<sprBonuses.length; i++)
sprBonuses[i].paint(g);
sprKangoo.paint(g);
//
// draw stars on mag
//
int ofs, id;
if ((bHitByPelican) || (bHitByMonkey))
{
for (int a=0; a<Config.GAME_STARS_COUNT; a++)
{
ofs = a * 3;
if (tabStars[ofs + 0] <= 0)
{
tabStars[ofs + 0] = Config.GAME_STARS_TIME;
tabStars[ofs + 1] = sprKangoo.posX + 1 + Math.Rand(0, Config.SPR_KANGOO_WIDTH - 1);
tabStars[ofs + 2] = sprKangoo.posY - 2 + Math.Rand(0, 6);
}
x = tabStars[ofs + 1];
y = tabStars[ofs + 2];
id = tabStars[ofs + 0] / 8192;
tabStars[ofs + 0] -= Config.GAME_STARS_DELTA;
if (id == 2)
id = 0;
if (id == 1)
id = 3;
g.setClip(x,y,3,3);
g.drawImage(iStar, x - id, y, Config.ANCHOR);
}
}
for (int i=0; i<countPelican; i++)
sprPelican[i].paint(g);
for (int i=0; i<countMonkey; i++)
{
ofs = (int)game.getTime() + monkeyTime[i];
ofs /= 100;
ofs = ofs % (Config.TILE_WIDTH * 4);
if ((ofs > Config.TILE_WIDTH) && (ofs < (Config.TILE_WIDTH * 2)))
{
ofs = Config.TILE_WIDTH; // stay here
}
else
if (ofs >= (Config.TILE_WIDTH * 2))
{
ofs = Config.TILE_WIDTH - (ofs - (Config.TILE_WIDTH * 2)); // move back
}
if (sprMonkey[i].dir == Config.DIR_RIGHT)
{
sprMonkey[i].posX = 0 - Config.SPR_MONKEY_OFFSETX - Config.TILE_WIDTH + ofs;
}
else
{
sprMonkey[i].posX = Config.SCREEN_WIDTH - Config.SPR_MONKEY_WIDTH +
Config.SPR_MONKEY_OFFSETX + Config.TILE_WIDTH - ofs;;
}
sprMonkey[i].paint(g);
}
g.translate (-g.getTranslateX(), - g.getTranslateY ());
paintPanel(g);
if (respawnTime != 0)
//Utils.paintTextOnBar(g, null, game.writer, Config.FRAME_BACKGROUND, Config.FRAME_BORDER, sMessage);
//***** ***************//***** ***************
if(sMessage != "")
{
// g.setClip (0, Config.SCREEN_HEIGHT_HALF,Config.SCREEN_WIDTH,15);
g.setClip(0, 0, Config.SCREEN_WIDTH, Config.SCREEN_HEIGHT);
g.setColor(Config.FRAME_BORDER);
//g.drawImage(game.iBackg, 0, 0, Config.ANCHOR);
g.drawLine(0,Config.SCREEN_HEIGHT_HALF-1,Config.SCREEN_WIDTH,Config.SCREEN_HEIGHT_HALF-1);
g.drawLine(0,Config.SCREEN_HEIGHT_HALF+16,Config.SCREEN_WIDTH,Config.SCREEN_HEIGHT_HALF+16);
//g.drawRect(0,Config.SCREEN_HEIGHT_HALF,Config.SCREEN_WIDTH,15);
g.setColor(Config.FRAME_BACKGROUND);
g.fillRect(0,Config.SCREEN_HEIGHT_HALF,Config.SCREEN_WIDTH,15);
g.drawLine(0,Config.SCREEN_HEIGHT_HALF,Config.SCREEN_WIDTH,Config.SCREEN_HEIGHT_HALF);
g.drawLine(0,Config.SCREEN_HEIGHT_HALF+15,Config.SCREEN_WIDTH,Config.SCREEN_HEIGHT_HALF+15);
}
g.setClip(0, 0, Config.SCREEN_WIDTH, Config.SCREEN_HEIGHT);
g.setColor(255, 255, 255);
g.drawString(sMessage,Config.SCREEN_WIDTH_HALF,Config.SCREEN_HEIGHT_HALF-1,Graphics.TOP|Graphics.HCENTER);
//***** ***************//***** ***************
//
// draw a fancy scroll message
//
if (scrollMessageTime > game.getTime())
{
// calculate current offset for scroll
int t = (((Config.SCROLL_TIME + Config.SCROLL_TIME_PAUSE) - (int)(scrollMessageTime - game.getTime())) << 16) /
Config.SCROLL_TIME;
//int pause = ((Config.SCREEN_WIDTH + scrollMessageWidth) << 16) / (Config.SCROLL_TIME + Config.SCROLL_TIME_PAUSE);
//pause = (pause * Config.SCROLL_TIME_PAUSE) >> 16;
t = ((Config.SCREEN_WIDTH + scrollMessageWidth) * t) >> 16;
//int middle = Config.SCREEN_WIDTH_HALF + (scrollMessageWidth >> 1);
if ((t > scrollMiddle) && ( t <= (scrollMiddle + scrollPause)))
t = scrollMiddle;
else
if ( t > (scrollMiddle + scrollPause))
t -= scrollPause;
/*game.writer.drawText(g, sScrollMessage,
Config.SCREEN_WIDTH + 10 - t,
Config.SCREEN_HEIGHT - 1 - game.writer.getHeight());
*/
/* g.setColor(Config.FRAME_BORDER);
//g.drawImage(game.iBackg, 0, 0, Config.ANCHOR);
//g.drawLine(0,Config.SCREEN_HEIGHT_HALF-1,Config.SCREEN_WIDTH,Config.SCREEN_HEIGHT_HALF-1);
//g.drawLine(0,Config.SCREEN_HEIGHT_HALF+16,Config.SCREEN_WIDTH,Config.SCREEN_HEIGHT_HALF+16);
//g.drawRect(0,Config.SCREEN_HEIGHT_HALF,Config.SCREEN_WIDTH,15);
g.setColor(Config.FRAME_BACKGROUND);
g.fillRect(0,Config.SCREEN_HEIGHT_HALF,Config.SCREEN_WIDTH,15);
g.drawLine(0,Config.SCREEN_HEIGHT_HALF-1,Config.SCREEN_WIDTH,Config.SCREEN_HEIGHT_HALF-1);
g.drawLine(0,Config.SCREEN_HEIGHT_HALF+16,Config.SCREEN_WIDTH,Config.SCREEN_HEIGHT_HALF+16);
*/
g.setColor(255, 255, 255);
g.drawString(sScrollMessage,Config.SCREEN_WIDTH_HALF,Config.SCREEN_HEIGHT_HALF+20,Graphics.TOP|Graphics.HCENTER);
}
else
scrollMessageTime = -1;
if (bDisplaySubMenu)
{
//SubMenuOptions.paint(g);
/*game.writer.drawText(g, game.sRightSoftKey,
Config.SCREEN_WIDTH - game.writer.strLen(game.sRightSoftKey),
Config.SCREEN_HEIGHT - game.writer.getHeight() - 5);*/
/*g.setClip (Config.SCREEN_WIDTH_HALF-45, Config.SCREEN_HEIGHT - 120,90,60);
g.drawImage(game.iBackg, 0, 0, Config.ANCHOR);
g.setColor(0,192,0);
g.drawRect(Config.SCREEN_WIDTH_HALF-45, Config.SCREEN_HEIGHT - 120,90,60);
g.setColor(125,192,0);
g.drawRect(Config.SCREEN_WIDTH_HALF-45, Config.SCREEN_HEIGHT - PosY,90,15);
g.fillRect(Config.SCREEN_WIDTH_HALF-45, Config.SCREEN_HEIGHT - PosY,90,15);
g.setColor(255,255,255);*/
if(MenuIndex != 2)
{
g.drawImage(game.menubox, Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 109, Graphics.TOP|Graphics.HCENTER);
g.drawImage(game.arrowLeft, Config.SCREEN_WIDTH_HALF+43 ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
g.drawImage(game.arrowRight, Config.SCREEN_WIDTH_HALF-45 ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
}
else
{
g.drawImage(menubox1, Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 109, Graphics.TOP|Graphics.HCENTER);
g.drawImage(game.arrowLeft, Config.SCREEN_WIDTH_HALF+60 ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
g.drawImage(game.arrowRight, Config.SCREEN_WIDTH_HALF-62 ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
}
if(MenuIndex == 1)
{
//g.drawString("繼續(xù)", Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
g.drawImage(imgSub[0], Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
}
else if(MenuIndex == 2)
{
//g.drawString("重新開(kāi)始本關(guān)", Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
g.drawImage(imgSub[1], Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
}
else if(MenuIndex == 3)
{
//g.drawString("主菜單", Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
g.drawImage(imgSub[2], Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
}
else if(MenuIndex == 4)
{
//g.drawString("退出", Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
g.drawImage(imgSub[3], Config.SCREEN_WIDTH_HALF ,Config.SCREEN_HEIGHT - 105, Graphics.TOP|Graphics.HCENTER);
}
}
if (Main.pauseDuration != 0) {
Main.pauseDuration = 0;
}
}
public void resetMenuIndex()
{
MenuIndex = 1;
//PosX = 35;
PosY = 120;
}
/**
* paintPanel paints the panel with current data on it
*
* @param g -
* Graphics handle
*/
public void paintPanel(Graphics g)
{
g.setClip(0, 0, Config.SCREEN_WIDTH, Config.SCREEN_HEIGHT);
g.drawImage(iPanel, 0, 0, Config.ANCHOR);
String s = new String();
// level number (bonus - 1)
if ((game.nPlayerLevel + 1) < 10)
s = '0' + Integer.toString(game.nPlayerLevel + 1);
else
s = Integer.toString(game.nPlayerLevel + 1);
drawNumber(g, 8, 5, s);
// points
int pts = game.nPlayerPoints + game.nPlayerLevelPoints;
if (pts < 10)
s = "0000" + Integer.toString(pts);
else if (pts < 100)
s = "000" + Integer.toString(pts);
else if (pts < 1000)
s = "00" + Integer.toString(pts);
else if (pts < 10000)
s = "0" + Integer.toString(pts);
else
s = Integer.toString(pts);
drawNumber(g, 132, 5, s);
// lifes
s = Integer.toString(game.nPlayerLifes);
drawNumber(g, 43, 5, s);
// progress
pts = (heroY << 8) / (mapHeight - 1);
pts = 55 - ((55 * pts) >> 8);
g.setClip(0, 0, Config.SCREEN_WIDTH, Config.SCREEN_HEIGHT);
g.setColor( 0, 255, 0);
g.fillRect(63, 8, pts, 4);
}
/**
* Draws one digit with preloaded font
*
* @param g
* Graphics object
* @param x
* x coordinate of the upper-left corner
* @param y
* y coordinate of the upper-left corner
* @param dig
* digit to draw in integer format
*/
private void drawDigit(Graphics g, int x, int y, int dig)
{
g.setClip(x, y, digitsWidth, digitsHeight);
g.drawImage(iDigits, x, y- (dig * digitsHeight), Config.ANCHOR);
}
/**
* draws a number with preloaded font
*
* @param g
* Graphics object
* @param x
* x coordinate of the upper-left corner
* @param y
* y coordinate of the upper-left corner
* @param s
* String of digits to draw a number
*/
private void drawNumber(Graphics g, int x, int y, String s)
{
for (int i = 0; i < s.length(); i++)
{
g.setClip(x + i + (i * digitsWidth), y, digitsWidth, digitsHeight);
g.drawImage(iDigits, x + i +((i - (s.charAt(i) - '0')) * digitsWidth), y, Config.ANCHOR);
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -