📄 ictankcanvas.java
字号:
}
}
private void gamePaint(Graphics g) {
if (pauseStart) {
g.setColor(0xffffff);
g.fillRect(0, 0, width, height);
g.drawImage(helpImage, 0, 0, 20);
}
else {
boolean lifePos;
int i, j;
boolean victorFlag;
grassPaint = false;
g.setColor(0x3f, 0x3f, 0x3f);
g.fillRect(0, 0, width, mapOffsetY);
g.fillRect(0, 0, mapOffsetX, mapOffsetY + mapHeight);
g.fillRect(mapOffsetX + mapWidth, 0, width - mapOffsetX - mapWidth,
mapOffsetY + mapHeight);
// g.fillRect(0, mapOffsetY + mapHeight, width, mapOffsetY);
if (showLevel) {
g.setColor(0);
g.fillRect(0, 0, width, height);
g.setColor(fadeCol, fadeCol, fadeCol);
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
Font.SIZE_MEDIUM));
g.drawString("第 " + level + " 关", width / 2, height / 2, 17);
if (fadein) {
if (fadeCol < 0xfc) {
//fadeCol += 4;
fadeCol += 16;
if (fadeCol > 0xfc) {
fadeCol -= 16;
fadein = false;
}
}
else {
fadein = false;
}
}
else {
if (fadeCol > 0) {
// fadeCol -= 4;
fadeCol -= 16;
if (fadeCol < 0) {
showLevel = false;
}
}
else {
showLevel = false;
}
}
return;
}
lifePos = (width > height) ? true : false;
if (firstTime || pauseBack) {
if (firstTime) {
s = new Sound(beginlist, 1);
// s.play(1);
}
victorFlag = false;
g.setColor(0x3f, 0x3f, 0x3f);
g.fillRect(0, 0, width, height);
// draw the map
for (i = 0; i < mapHeight / tileW; i += 2) {
for (j = 0; j < mapWidth / tileW; j += 2) {
switch (mapInfo[ (i * mapWidth / tileW) + j]) {
case 0:
g.drawImage(tile1, mapOffsetX + j * tileW,
mapOffsetY + i * tileW, g.TOP | g.LEFT);
break;
case 1:
g.drawImage(tile2, mapOffsetX + j * tileW,
mapOffsetY + i * tileW, g.TOP | g.LEFT);
break;
case 2:
g.drawImage(tile3, mapOffsetX + j * tileW,
mapOffsetY + i * tileW, g.TOP | g.LEFT);
break;
case 3:
g.drawImage(tile4, mapOffsetX + j * tileW,
mapOffsetY + i * tileW, g.TOP | g.LEFT);
break;
case 4:
case 5:
case 6:
case 7:
if (!victorFlag) {
g.drawImage(victor, mapOffsetX + j * tileW,
mapOffsetY + i * tileW, g.TOP | g.LEFT);
victorFlag = true;
}
default:
break;
}
}
}
// g.drawImage(onTimer, 150, 150, g.TOP|g.LEFT);
g.setColor(0x0);
if (lifePos) {
g.drawImage(logo, mapOffsetX + mapWidth + 2, mapOffsetY + 2,
g.TOP | g.LEFT);
g.drawImage(ic, mapOffsetX + mapWidth + 2, mapOffsetY + mapHeight / 2,
g.TOP | g.LEFT);
}
else {
g.drawImage(logo, mapOffsetX + 2, mapOffsetY + mapHeight + 2,
g.TOP | g.LEFT);
g.drawImage(ic, mapOffsetX + mapWidth / 2, mapOffsetY + mapHeight + 2,
g.TOP | g.LEFT);
}
firstTime = false;
pauseBack = false;
}
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC,
Font.SIZE_SMALL));
if (lifePos) { //horizontal
g.setColor(0x3f, 0x3f, 0x3f);
g.fillRect(mapOffsetX + mapWidth + 1, mapOffsetY + hero.frameHeight + 3,
20, fontHeight);
g.fillRect(mapOffsetX + mapWidth + 1,
mapOffsetY + mapHeight / 2 + hero.frameHeight + 2, 20,
fontHeight);
g.setColor(0xff, 0xff, 0xfe);
g.drawString(" " + life, mapOffsetX + mapWidth + 2,
mapOffsetY + hero.frameHeight + 1, g.TOP | g.LEFT);
g.drawString(" " + numEnemy, mapOffsetX + mapWidth + 2,
mapOffsetY + mapHeight / 2 + hero.frameHeight + 0,
g.TOP | g.LEFT);
}
else { //vertical
g.setColor(0x3f, 0x3f, 0x3f);
g.fillRect(mapOffsetX + hero.frameWidth + 3, mapOffsetY + mapHeight + 1,
20, fontHeight);
g.fillRect(mapOffsetX + mapWidth / 2 + hero.frameWidth + 1,
mapOffsetY + mapHeight + 1, 20, fontHeight);
g.setColor(0xff, 0xff, 0xfe);
g.drawString(" " + life, mapOffsetX + hero.frameWidth + 2,
mapOffsetY + mapHeight + 1, g.TOP | g.LEFT);
g.drawString(" " + numEnemy,
mapOffsetX + mapWidth / 2 + hero.frameWidth,
mapOffsetY + mapHeight + 1, g.TOP | g.LEFT);
}
g.setColor(0xffffff);
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN,
Font.SIZE_MEDIUM));
g.drawString("帮助", width - fontWidth, height - fontHeight, 20);
g.drawString("退出", 10, height - fontHeight, 20);
//add by johnson
if (reDraw) {
//repaint the special area
if (symboll.formerSymbolX != -1) {
int fromX = symboll.formerSymbolX - mapOffsetX - tileW * 2;
int fromY = symboll.formerSymbolY - mapOffsetY - tileW * 2;
int toX = symboll.formerSymbolX - mapOffsetX + symboll.symbolWidth +
tileW * 2;
int toY = symboll.formerSymbolY - mapOffsetY + symboll.symbolHeight +
tileW * 2;
//adjust the repaint area
if (fromX < 0) {
fromX = 0;
}
else if ( (fromX % (tileW * 2)) != 0) {
fromX = fromX - (fromX % (tileW * 2));
}
if (fromY < 0) {
fromY = 0;
}
else if ( (fromY % (tileW * 2)) != 0) {
fromY = fromY - (fromY % (tileW * 2));
}
if (toX > mapWidth) {
toX = mapWidth;
}
if (toY > mapHeight) {
toY = mapHeight;
}
for (i = fromY / tileW;
i < toY / tileW;
i += 2) {
for (j = fromX / tileW;
j < toX / tileW;
j += 2) {
switch (mapInfo[ (i * mapWidth / tileW) + j]) {
case 0:
g.drawImage(tile1, mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
break;
case 1:
g.drawImage(tile2, mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
break;
case 2:
g.drawImage(tile3, mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
break;
case 3:
g.drawImage(tile4, mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
break;
case 4:
case 5:
case 6:
case 7:
/* if (!victorFlag) {
g.drawImage(victor, mapOffsetX + j * 3,
mapOffsetY + i * 3,
g.TOP | g.LEFT);
victorFlag = true;
}*/
default:
break;
}
}
}
}
//repaint end
reDraw = false;
hero.paint(g);
}
if (symboll.symbolState != 0) {
symboll.paint(g);
}
// hero.paint(g);
//add by johnson to realize the symbol collision judgement
if (symboll.symbolState != 0) {
if (hero.isobjCollide(symboll.symbolX, symboll.symbolY,
symboll.symbolWidth, symboll.symbolHeight)) {
bonusMark = bonusMark + 500;
switch (symboll.symbolState) {
case 1: //timer
for (i = 0; i < maxEnemy; i++) {
if (enemyAlive[i]) {
enemy[i].ifTimer = true;
}
ifTimer = true;
ictimer.timeCounter = 0;
}
break;
case 2: //star
if (bullet[0].starNum < 3) {
bullet[0].starNum = bullet[0].starNum + 1;
}
break;
case 3: //bomber
// System.out.println("maxEnemy="+maxEnemy);
for (i = 0; i < maxEnemy; i++) {
enemy[i].alive = false;
if (enemyAlive[i]) {
enemyAlive[i] = false;
numEnemy--;
g.drawImage(bombImage, enemy[i].posX, enemy[i].posY,
g.TOP | g.LEFT);
Point p = new Point(enemy[i].posX, enemy[i].posY);
tempPos.addElement(p);
enemy[i].posX = -1000;
enemy[i].posY = -1000;
// g.fillRect(enemy[i].posX, enemy[i].posY,enemy[i].frameWidth,enemy[i].frameHeight);
if (numEnemy == 0) {
gameWin = true;
overtimer.timeCounter = 0;
}
}
}
break;
case 4: //homeWall
if (!homeWall) {
homeWall = true;
for (i = (mapHeight - tileW * 6) / tileW;
i < (mapHeight) / tileW;
i += 2) {
for (j = (mapWidth / 2 - tileW * 4) / tileW;
j < (mapWidth / 2 + tileW * 4) / tileW;
j += 2) {
switch (mapInfoFormer[ (i * mapWidth / tileW) +
j]) {
case 0:
g.drawImage(tile1,
mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
break;
case 1: //draw the brick as iron
g.drawImage(tile3,
mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
mapInfo[ (i * mapWidth / tileW) +
j] = 2;
break;
case 2:
/* g.drawImage(tile3, mapOffsetX + j * 3,
mapOffsetY + i * 3,
g.TOP | g.LEFT);*/
break;
case 3:
/* g.drawImage(tile4, mapOffsetX + j * 3,
mapOffsetY + i * 3,
g.TOP | g.LEFT);*/
break;
case 4:
case 5:
case 6:
case 7:
default:
break;
}
}
}
}
ictimer.timeCounter = 0;
break;
case 5: //bonus tanker
life++;
break;
case 6: //cap
cap = true;
hero.capped = true;
ictimer1.timeCounter = 0;
break;
default:
break;
}
symboll.symbolState = 0;
reDraw = true;
symboll.formerSymbolX = symboll.symbolX;
symboll.formerSymbolY = symboll.symbolY;
}
}
//cancel the timer
if (ictimer.timeCounter >= 15) {
if (ifTimer) {
for (i = 0; i < maxEnemy; i++) {
if (enemyAlive[i]) {
enemy[i].ifTimer = false;
}
}
ifTimer = false;
}
if (homeWall) {
for (i = (mapHeight - tileW * 6) / tileW;
i < (mapHeight) / tileW;
i += 2) {
for (j = (mapWidth / 2 - tileW * 4) / tileW;
j < (mapWidth / 2 + tileW * 4) / tileW;
j += 2) {
switch (mapInfo[ (i * mapWidth / tileW) + j]) {
case 0:
g.drawImage(tile1, mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
break;
case 1: //draw the brick as iron
/* g.drawImage(tile3, mapOffsetX + j * 3,
mapOffsetY + i * 3,
g.TOP | g.LEFT);
mapInfo[ (i * mapWidth / 3) + j] = 2;*/
break;
case 2:
g.drawImage(tile2, mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
mapInfo[ (i * mapWidth / tileW) + j] = 1;
break;
case 3:
/* g.drawImage(tile4, mapOffsetX + j * 3,
mapOffsetY + i * 3,
g.TOP | g.LEFT);*/
break;
case 4:
case 5:
case 6:
case 7:
default:
break;
}
}
}
homeWall = false;
}
}
//cancel the cap
if (ictimer1.timeCounter >= 10) {
cap = false;
hero.capped = false;
}
//add by johnson to realize adding new enemy
timeCount++;
if (timeCount == 10) { //erase the bomb image
if (tempPos.size() != 0) {
g.setColor(0x0);
for (i = 0; i < tempPos.size(); i++) {
Point p = (Point) tempPos.elementAt(i);
g.fillRect(p.x, p.y, 12, 12);
}
tempPos.removeAllElements();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -