📄 main.java
字号:
break;
case TOOL_FAN_RIGHT:
g.drawRegion(image_fan, 72, 0, 18, 21,
Sprite.TRANS_NONE, cursorX - 1, cursorY - 8,
20);
break;
case TOOL_FAN_DOWN:
g.drawRegion(image_fan, 126, 0, 18, 21,
Sprite.TRANS_NONE, cursorX - 1, cursorY - 8,
20);
break;
case TOOL_FAN_LEFT:
g.drawRegion(image_fan, 72, 0, 18, 21,
Sprite.TRANS_MIRROR, cursorX - 1, cursorY - 8,
20);
break;
case TOOL_LASER_UP:
g.drawRegion(image_laser, 0, 0, 24, 20,
Sprite.TRANS_NONE, cursorX - 4, cursorY - 4,
20);
break;
case TOOL_LASER_RIGHT:
g.drawRegion(image_laser, 48, 0, 24, 20,
Sprite.TRANS_NONE, cursorX - 4, cursorY - 4,
20);
break;
case TOOL_LASER_DOWN:
g.drawRegion(image_laser, 96, 0, 24, 20,
Sprite.TRANS_NONE, cursorX - 4, cursorY - 4,
20);
break;
case TOOL_LASER_LEFT:
g.drawRegion(image_laser, 48, 0, 24, 20,
Sprite.TRANS_MIRROR, cursorX - 4, cursorY - 4,
20);
break;
case TOOL_MIRROR_CW:
g.drawRegion(image_mirror, 0, 0, 16, 24,
Sprite.TRANS_MIRROR, cursorX, cursorY - 8,
20);
break;
case TOOL_MIRROR_CCW:
g.drawRegion(image_mirror, 0, 0, 16, 24,
Sprite.TRANS_NONE, cursorX, cursorY - 8,
20);
break;
default:
g.drawImage(image_tools[type - 4], cursorX,
cursorY, 20);
}
}
//***绘制工具栏***//
g.drawImage(image_toolbar, 160, 0, 20);
for (int i = 0; i < 9; i++) {
int y = i * 19 + 3;
int toolType = tools[i];
if (toolType > 0)
g.drawImage(image_tools[toolType - 4], 160, y, 20);
}
//***绘制时间***//
g.drawImage(image_infobar, 0, 192, 20);
int interval = (int) ((System.currentTimeMillis() - startTime)/1000);
int onesDigit = interval % 10;
int tensDigit = (interval / 10) % 10;
int hundredDigit = (interval / 100) % 10;
int thousandDigit = (interval / 100) % 10;
g.drawImage(word_numbers[thousandDigit], 3, 192, 20);
g.drawImage(word_numbers[hundredDigit], 15, 192, 20);
g.drawImage(word_numbers[tensDigit], 27, 192, 20);
g.drawImage(word_numbers[onesDigit], 39, 192, 20);
//***绘制任务描述****//
int descWidth = image_description.getWidth();
int lx = descriptionX - 121;
int ly = descriptionX;
if (ly > descWidth)
ly = descWidth;
int s = 55;
if (lx < 0) {
lx = 0;
s = 176 - descriptionX;
}
g.drawRegion(image_description, lx, 1, ly - lx, image_description.getHeight() - 1, Sprite.TRANS_NONE , s, 192, 20);
descriptionX = (descriptionX + 2) % (descWidth + 121);
// 绘制菜单
if (subMenuVisible) {
g.drawImage(image_menubar, 48, 56, 20);
// 绘制菜单项
int y = ((70 - subMenuItems.length * 15) >> 1) + 56;
for (int i = 0; i < subMenuItems.length; i++) {
int x = 48 + ((80 - subMenuItems[i].getWidth()) >> 1);
g.drawImage(subMenuItems[i], x, y + i * 15, 20);
}
if (incr <= 3)
g.drawImage(image_arrow,
32 + ((80 - subMenuItems[subMenuIndex]
.getWidth()) >> 1), y + 2
+ subMenuIndex * 15, 20);
}
break;
}
//输出缓冲
flushGraphics();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
/**
* 此方法将绘制一个3D效果的水平线或者垂直线
* @param x 起点x坐标
* @param y 起点y坐标
* @param l 长度
* @param isVertical true 垂直,false 水平
*/
private void draw3DLine(int x, int y, int l, boolean isVertical, Graphics g) {
int ex = x, ey = y;
int cx = 0, cy = 0;
if (isVertical) {
ey += l;
cx = 1;
} else {
ex += l;
cy = 1;
}
g.setColor(0x0086CEFF);//高亮度颜色
g.drawLine(x - cx, y - cy, ex - cx, ey - cy);
g.setColor(0x000099FF);//中亮度颜色
g.drawLine(x, y, ex, ey);
g.setColor(0x00005B99);//低亮度颜色
g.drawLine(x + cx, y + cy, ex + cx, ey + cy);
}
/**
* 绘制激光束,这是一个递归方法
*/
private void paintLaser(Stuff stuff, int direction, Graphics g) {
g.setColor(0x0000FF00);
int fromRow = stuff.row, fromColumn = stuff.column;
int incr = (direction == 0 || direction == 3) ? -1 : 1;
// 沿激光方向读取物体
int row = fromRow, column = fromColumn;
Stuff e = null;
int t = -1;
int dweepX = dweep.getRefPixelX();
int dweepY = dweep.getRefPixelY();
loop: while (true) {
if (direction == 3 || direction == 1)
column += incr;
else
row += incr;
if (row < 0 || column < 0 || row >= 12 || column >= 10)
break loop;
int x = column << 4;
int y = row << 4;
if (dweepX > x - 8 && dweepX < x + 8 &&
dweepY > y - 8 && dweepY < y + 8
&& dweep.status < 3) {
if (dweepX == column * 16 && dweepY == row * 16)
dweep.laser();
t = 0;
break loop;
}
// 获取物体
e = stuffs[row][column];
// 物体不存在,接着获取下一个位置的物体
if (null == e)
continue;
t = e.type;
switch (t) {
case STUFF_STONE: // 假如是石头,激光就应该终止了.
break loop;
case STUFF_MIRROR_CCW:
if (stuff.status != Stuff.STATUS_DYING)
paintLaser(e, 3 - direction, g);
break loop;
case STUFF_MIRROR_CW: // 假如是镜子,就反射激光
// 确定反射后的方向
if (stuff.status != Stuff.STATUS_DYING)
paintLaser(e, (5 - direction) % 4, g);
break loop;
case STUFF_BOMB:
// 假如是炸弹,点燃它
e.apply(TOOL_TORCH);
break;
default:
e.apply(LASER);
break loop;
}
}
int fromX = fromColumn << 4;
int fromY = fromRow << 4;
int startX = fromX + 8, startY = fromY + 3;
int endX = startX, endY = startY;
switch (stuff.type) {
case STUFF_LASER_UP:
startY = fromY - 5;
break;
case STUFF_LASER_RIGHT:
startX =fromX + 21;
break;
case STUFF_LASER_DOWN:
startY = fromY + 15;
break;
case STUFF_LASER_LEFT:
startX =fromX - 5;
break;
case STUFF_MIRROR_CW:
switch (direction) {
case 0:
startY = fromY - 7;
break;
case 1:
startX =fromX + 8;
break;
case 2:
startY = fromY + 3;
break;
case 3:
startX =fromX;
break;
}
break;
case STUFF_MIRROR_CCW:
switch (direction) {
case 0:
startY = fromY - 7;
break;
case 1:
startX =fromX + 16;
break;
case 2:
startY = fromY + 3;
break;
case 3:
startX =fromX + 8;
break;
}
break;
}
int ex = column << 4;
int ey = row << 4;
switch (t) {
case STUFF_MIRROR_CW:
switch (direction) {
case 0:
endY = ey + 3;
break;
case 1:
endX = ex;
break;
case 2:
endY = ey - 7;
break;
case 3:
endX = ex + 8;
break;
}
break;
case STUFF_MIRROR_CCW:
switch (direction) {
case 0:
endY = ey + 3;
break;
case 1:
endX = ex + 8;
break;
case 2:
endY = ey - 7;
break;
case 3:
endX = ex + 16;
break;
}
break;
case STUFF_STONE:
switch (direction) {
case 0:
endY = ey + 9;
break;
case 1:
endX = ex + 3;
break;
case 2:
endY = ey - 4;
break;
case 3:
endX = ex + 13;
break;
}
break;
case 0:
switch (direction) {
case 0:
endY = ey + 16;
break;
case 1:
endX = ex;
break;
case 2:
endY = ey;
break;
case 3:
endX = ex + 16;
break;
}
default:
switch (direction) {
case 0:
endY = ey + 14;
break;
case 1:
endX = ex + 2;
break;
case 2:
endY = ey + 2;
break;
case 3:
endX = ex + 14;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -