📄 zoncanvas.java
字号:
magicBoxes[19].setPosition(16 * 107, scrHeight - 16 * 8);
magicBoxes[20].setPosition(16 * 105, scrHeight - 16 * 7);
magicBoxes[21].setPosition(16 * 106, scrHeight - 16 * 7);
magicBoxes[22].setPosition(16 * 107, scrHeight - 16 * 7);
magicBoxes[0].setTreasureIndex(5);
magicBoxes[3].setTreasureIndex(5);
magicBoxes[6].setTreasureIndex(5);
magicBoxes[13].setTreasureIndex(5);
break;
case GAMESTAGE_TWO:
magicBoxes = new MagicBox[18];
for (int i = 0; i < magicBoxes.length; i++) {
magicBoxes[i] = new MagicBox(scrWidth, scrHeight);
if (magicBoxes[i] == null)
return false;
magicBoxes[i].initSprite("enemysprite16_share", 16, 16, false);
magicBoxes[i].setFrameSequence(0, 0);
}
magicBoxes[0].setPosition(16 * 10, scrHeight - 16 * 10);
magicBoxes[1].setPosition(16 * 10, scrHeight - 16 * 9);
magicBoxes[2].setPosition(16 * 11, scrHeight - 16 * 9);
magicBoxes[3].setPosition(16 * 39, scrHeight - 16 * 13);
magicBoxes[4].setPosition(16 * 40, scrHeight - 16 * 13);
magicBoxes[5].setPosition(16 * 39, scrHeight - 16 * 12);
magicBoxes[6].setPosition(16 * 40, scrHeight - 16 * 12);
magicBoxes[7].setPosition(16 * 45, scrHeight - 16 * 6);
magicBoxes[8].setPosition(16 * 45, scrHeight - 16 * 5);
magicBoxes[9].setPosition(16 * 46, scrHeight - 16 * 5);
magicBoxes[10].setPosition(16 * 81, scrHeight - 16 * 11);
magicBoxes[11].setPosition(16 * 81, scrHeight - 16 * 10);
magicBoxes[12].setPosition(16 * 86, scrHeight - 16 * 6);
magicBoxes[13].setPosition(16 * 87, scrHeight - 16 * 6);
magicBoxes[14].setPosition(16 * 86, scrHeight - 16 * 5);
magicBoxes[15].setPosition(16 * 87, scrHeight - 16 * 5);
magicBoxes[16].setPosition(16 * 86, scrHeight - 16 * 4);
magicBoxes[17].setPosition(16 * 87, scrHeight - 16 * 4);
magicBoxes[0].setTreasureIndex(5);
magicBoxes[6].setTreasureIndex(5);
magicBoxes[10].setTreasureIndex(5);
magicBoxes[16].setTreasureIndex(5);
break;
case GAMESTAGE_THREE:
magicBoxes = new MagicBox[20];
for (int i = 0; i < magicBoxes.length; i++) {
magicBoxes[i] = new MagicBox(scrWidth, scrHeight);
if (magicBoxes[i] == null)
return false;
magicBoxes[i].initSprite("enemysprite16_share", 16, 16, false);
magicBoxes[i].setFrameSequence(0, 0);
}
magicBoxes[0].setPosition(16 * 20, scrHeight - 16 * 12);
magicBoxes[1].setPosition(16 * 21, scrHeight - 16 * 12);
magicBoxes[3].setPosition(16 * 24, scrHeight - 16 * 3);
magicBoxes[2].setPosition(16 * 21, scrHeight - 16 * 11);
magicBoxes[4].setPosition(16 * 25, scrHeight - 16 * 3);
magicBoxes[5].setPosition(16 * 24, scrHeight - 16 * 2);
magicBoxes[6].setPosition(16 * 25, scrHeight - 16 * 2);
magicBoxes[7].setPosition(16 * 50, scrHeight - 16 * 7);
magicBoxes[8].setPosition(16 * 51, scrHeight - 16 * 7);
magicBoxes[9].setPosition(16 * 52, scrHeight - 16 * 4);
magicBoxes[10].setPosition(16 * 52, scrHeight - 16 * 3);
magicBoxes[11].setPosition(16 * 82, scrHeight - 16 * 17);
magicBoxes[12].setPosition(16 * 82, scrHeight - 16 * 5);
magicBoxes[13].setPosition(16 * 85, scrHeight - 16 * 12);
magicBoxes[14].setPosition(16 * 85, scrHeight - 16 * 11);
magicBoxes[15].setPosition(16 * 116, scrHeight - 16 * 10);
magicBoxes[16].setPosition(16 * 116, scrHeight - 16 * 9);
magicBoxes[17].setPosition(16 * 116, scrHeight - 16 * 7);
magicBoxes[18].setPosition(16 * 116, scrHeight - 16 * 6);
magicBoxes[19].setPosition(16 * 116, scrHeight - 16 * 5);
magicBoxes[1].setTreasureIndex(5);
magicBoxes[6].setTreasureIndex(5);
magicBoxes[13].setTreasureIndex(5);
magicBoxes[17].setTreasureIndex(5);
break;
}
for (int i = 0; i < magicBoxes.length; i++) {
magicBoxes[i].setMap(mainMap);
}
return true;
}
boolean initBarrier() {
switch (gameStage) {
case GAMESTAGE_ONE:
fence = new Barrier[20];
for (int i = 0; i < fence.length; i++) {
fence[i] = new Barrier(scrWidth, scrHeight);
if (fence[i] == null)
return false;
fence[i].initSprite("bg16_5", 16, 16, false);
fence[i].setFrameSequence(3, 3);
}
for (int i = 0; i < 4; i++) {
fence[i].setPosition(16 * 42, scrHeight - 16 * (i + 12));
}
for (int i = 4; i < 10; i++) {
fence[i].setPosition(16 * 80, scrHeight - 16 * (i - 4 + 4));
}
for (int i = 10; i < 14; i++) {
fence[i].setPosition(16 * 44, scrHeight - 16 * (i - 10 + 5));
}
for (int i = 14; i < 20; i++) {
fence[i].setPosition(16 * 124, scrHeight - 16 * (i - 14 + 5));
}
break;
case GAMESTAGE_TWO:
fence = new Barrier[22];
for (int i = 0; i < fence.length; i++) {
fence[i] = new Barrier(scrWidth, scrHeight);
if (fence[i] == null)
return false;
fence[i].initSprite("bg16_6", 16, 16, false);
fence[i].setFrameSequence(4, 4);
}
for (int i = 0; i < 4; i++) {
fence[i].setPosition(16 * 38 - 8, scrHeight - 16 * (6 - i));
}
for (int i = 4; i < 9; i++) {
fence[i].setPosition(16 * 68, scrHeight - 16 * (13 - i));
}
for (int i = 9; i < 17; i++) {
fence[i].setPosition(16 * 93, scrHeight - 16 * (20 - i));
}
for (int i = 17; i < 22; i++) {
fence[i].setPosition(16 * 122, scrHeight - 16 * (25 - i));
}
break;
case GAMESTAGE_THREE:
fence = new Barrier[20];
for (int i = 0; i < fence.length; i++) {
fence[i] = new Barrier(scrWidth, scrHeight);
if (fence[i] == null)
return false;
fence[i].initSprite("bg16_6", 16, 16, false);
fence[i].setFrameSequence(4, 4);
}
for (int i = 0; i < 6; i++) {
fence[i].setPosition(16 * 44 + 8, scrHeight - 16 * (9 - i));
}
for (int i = 6; i < 9; i++) {
fence[i].setPosition(16 * 79, scrHeight - 16 * (13 - i));
}
for (int i = 9; i < 13; i++) {
fence[i].setPosition(16 * 102, scrHeight - 16 * (17 - i));
}
for (int i = 13; i < 20; i++) {
fence[i].setPosition(16 * 124, scrHeight - 16 * (22 - i));
}
break;
}
for (int i = 0; i < fence.length; i++) {
fence[i].setMap(mainMap);
}
return true;
}
private boolean initStaticSprite() {
deadZone = null;
switch (gameStage) {
case GAMESTAGE_ONE:
deadZone = new StaticSprite[40];
for (int i = 0; i < deadZone.length; i++) {
deadZone[i] = new StaticSprite(scrWidth, scrHeight);
if (deadZone[i] == null)
return false;
deadZone[i].initSprite("bg16_5", 16, 16, false);
deadZone[i].setFrameSequence(0, 0);
}
// 40个冰面
for (int i = 0; i < 14; i++) {
deadZone[i].setPosition(16 * (24 + i), scrHeight - 16 * 2);
}
for (int i = 14; i < 26; i++) {
deadZone[i].setPosition(16 * (49 + i), scrHeight - 16 * 2);
}
for (int i = 26; i < 28; i++) {
deadZone[i].setPosition(16 * (56 + i), scrHeight - 16 * 2);
}
for (int i = 28; i < 40; i++) {
deadZone[i].setPosition(16 * (59 + i), scrHeight - 16 * 2);
}
break;
case GAMESTAGE_TWO:
// 第二关里deadZone是用作河流的精灵;
deadZone = new StaticSprite[36];
for (int i = 0; i < deadZone.length; i++) {
deadZone[i] = new StaticSprite(scrWidth, scrHeight);
if (deadZone[i] == null)
return false;
deadZone[i].initSprite("bg16_6", 16, 16, false);
deadZone[i].setFrameSequence(0, 2);
}
for (int i = 0; i < 12; i++) {
deadZone[i].setPosition(16 * (19 + i), scrHeight - 16 * 2);
}
for (int i = 12; i < 23; i++) {
deadZone[i].setPosition(16 * (38 + i), scrHeight - 16 * 2);
}
for (int i = 23; i < 25; i++) {
deadZone[i].setPosition(16 * (46 + i), scrHeight - 16 * 2);
}
for (int i = 25; i < 36; i++) {
deadZone[i].setPosition(16 * (71 + i), scrHeight - 16 * 2);
}
break;
case GAMESTAGE_THREE:
deadZone = new StaticSprite[42];
for (int i = 0; i < deadZone.length; i++) {
deadZone[i] = new StaticSprite(scrWidth, scrHeight);
if (deadZone[i] == null)
return false;
deadZone[i].initSprite("bg16_6", 16, 16, false);
deadZone[i].setFrameSequence(0, 2);
}
for (int i = 0; i < 10; i++) {
deadZone[i].setPosition(16 * (6 + i), scrHeight - 16);
}
for (int i = 10; i < 16; i++) {
deadZone[i].setPosition(16 * (19 + i), scrHeight - 16);
}
for (int i = 16; i < 23; i++) {
deadZone[i].setPosition(16 * (27 + i), scrHeight - 16 * 2);
}
for (int i = 23; i < 28; i++) {
deadZone[i].setPosition(16 * (34 + i), scrHeight - 16 * 2);
}
for (int i = 28; i < 33; i++) {
deadZone[i].setPosition(16 * (42 + i), scrHeight - 16 * 2);
}
for (int i = 33; i < 35; i++) {
deadZone[i].setPosition(16 * (58 + i), scrHeight - 16 * 2);
}
for (int i = 35; i < 37; i++) {
deadZone[i].setPosition(16 * (63 + i), scrHeight - 16 * 2);
}
for (int i = 37; i < 39; i++) {
deadZone[i].setPosition(16 * (66 + i), scrHeight - 16 * 2);
}
for (int i = 39; i < 42; i++) {
deadZone[i].setPosition(16 * (72 + i), scrHeight - 16 * 2);
}
break;
}
for (int i = 0; i < deadZone.length; i++) {
deadZone[i].setMap(mainMap);
}
return true;
}
private void releaseObject(){
//menuImage1 = null;
menuImage2 = null;
menuItemImage = null;
cursorImage = null;
aboutImage = null;
enemyBirds = null;
enemySpring = null;
enemyBlueFeet = null;
enemyTops = null;
stepStone = null;
stepYellow = null;
magicBoxes = null;
fence = null;
deadZone = null;
mainMap = null;
/* bufImage =null;
gBuf = null;*/
System.gc();
}
private boolean initStage() {
appState = APPSTATE_IDLE;
/* releaseMenuPics();
releaseStagePics();
releaseSharePics();
releaseObject();*/
// loadSharePics();
loadStagePics();
/* bufImage = Image.createImage(ZonTileMap.BUF_TILECOUNTX * 16, ZonTileMap.BUF_TILECOUNTY * 16);
gBuf = bufImage.getGraphics();
if(bufImage == null || gBuf == null)
return false;*/
removeCommand(commandQuit);
addCommand(commandQuit);
//addCommand(commandBackGame);
addCommand(commandBack);
addCommand(commandSave);
//starKeyImage = ZonLayer.findImage("starkey");
int offsetY = 0;
if(!soundOn)
releaseSound();
else if(soundType == 2 && soundOn)
initSound("/sound/eat.ott", SIZE_EATSOUND);
else if((!soundPlaying()) && soundType == 1 && soundOn){
initSound("/sound/bgsound.ott", SIZE_BGSOUND);
playSound(true);
}
switch (gameStage) {
case GAMESTAGE_ONE:
initMaps();
mainMap.loadMapData("/map/stagemap1.m");
mainMap.setMapSize(128, 16);
offsetY = scrHeight - mainMap.getMapHeight()
* mainMap.getTileHeight();
mainMap.setPosition(0, offsetY);
initLead();
initTops();
initSpring();
initBirds();
initStepStone();
initBoxes();
initBarrier();
initStaticSprite();
break;
case GAMESTAGE_TWO:
initMaps();
//mainMap.setMapArray(ZonTileMap.gBackground2);
mainMap.loadMapData("/map/stagemap2.m");
mainMap.setMapSize(128, 16);
offsetY = scrHeight - mainMap.getMapHeight()
* mainMap.getTileHeight();
mainMap.setPosition(0, offsetY);
initLead();
initSpring();
initBirds();
initStepStone();
initBoxes();
initStaticSprite();
initBlueFeet();
initBarrier();
break;
case GAMESTAGE_THREE:
initMaps();
//mainMap.setMapArray(ZonTileMap.gBackground3);
mainMap.loadMapData("/map/stagemap3.m");
mainMap.setMapSize(128, 16);
offsetY = scrHeight - mainMap.getMapHeight()
* mainMap.getTileHeight();
mainMap.setPosition(0, offsetY);
initTops();
initLead();
initSpring();
initBirds();
initStepStone();
initBoxes();
initStaticSprite();
initBarrier();
break;
}
spriteLead.clearKeyStatus();
return true;
}
public boolean saveScore() {
try {
RecordStore rs = RecordStore.openRecordStore("hiscore", true);
RecordEnumeration re = rs.enumerateRecords(null, null, false);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
if (spriteLead.getScore() > hiScore)
dos.writeInt(spriteLead.getScore());
else
dos.writeInt(hiScore);
/* dos.writeBoolean(soundOn);
dos.writeInt(soundType);*/
byte[] scoreData = bos.toByteArray();
if (!re.hasNextElement()) { // no record exist
rs.addRecord(scoreData, 0, scoreData.length);
} else { // record already exist, update it
int id = re.nextRecordId();
rs.setRecord(id, scoreData, 0, scoreData.length);
}
scoreData = null;
dos.close();
dos = null;
bos.close();
bos = null;
re.destroy();
re = null;
rs.closeRecordStore();
rs = null;
System.gc();
} catch (Exception e) {
return false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -