📄 landscape.java
字号:
private void clear_collisionMap(int i, int j)
{
int k = 1;
if(j <= 127)
if(j > 95)
{
k <<= j - 96;
k = ~k;
collision_heightMap[i][3] = collision_heightMap[i][3] & k;
} else
if(j > 63)
{
k <<= j - 64;
k = ~k;
collision_heightMap[i][2] = collision_heightMap[i][2] & k;
} else
if(j > 31)
{
k <<= j - 32;
k = ~k;
collision_heightMap[i][1] = collision_heightMap[i][1] & k;
} else
{
k <<= j;
k = ~k;
collision_heightMap[i][0] = collision_heightMap[i][0] & k;
}
}
private void set_collisionMap(int i, int j)
{
int k = 1;
if(j <= 127)
if(j > 95)
{
k <<= j - 96;
collision_heightMap[i][3] = collision_heightMap[i][3] | k;
} else
if(j > 63)
{
k <<= j - 64;
collision_heightMap[i][2] = collision_heightMap[i][2] | k;
} else
if(j > 31)
{
k <<= j - 32;
collision_heightMap[i][1] = collision_heightMap[i][1] | k;
} else
{
k <<= j;
collision_heightMap[i][0] = collision_heightMap[i][0] | k;
}
}
private void generate_pixelMap()
{
for(int i = 0; i < 300; i++)
{
pixel_heightMap[i][0] = 0;
pixel_heightMap[i][1] = 0;
pixel_heightMap[i][2] = 0;
pixel_heightMap[i][3] = 0;
if(heightMap[i] > 31)
{
pixel_heightMap[i][0] = -1;
if(heightMap[i] > 63)
{
pixel_heightMap[i][1] = -1;
if(heightMap[i] > 95)
{
pixel_heightMap[i][2] = -1;
pixel_heightMap[i][3] = assign_pixelMap(heightMap[i] - 95);
} else
{
pixel_heightMap[i][2] = assign_pixelMap(heightMap[i] - 63);
}
} else
{
pixel_heightMap[i][1] = assign_pixelMap(heightMap[i] - 31);
}
} else
{
pixel_heightMap[i][0] = assign_pixelMap(heightMap[i]);
}
}
}
private void generate_collisionMap()
{
for(int i = 0; i < 300; i++)
{
collision_heightMap[i][0] = 0;
collision_heightMap[i][1] = 0;
collision_heightMap[i][2] = 0;
collision_heightMap[i][3] = 0;
if(heightMap[i] > 31)
{
collision_heightMap[i][0] = -1;
if(heightMap[i] > 63)
{
collision_heightMap[i][1] = -1;
if(heightMap[i] > 95)
{
collision_heightMap[i][2] = -1;
collision_heightMap[i][3] = assign_pixelMap(heightMap[i] - 95);
} else
{
collision_heightMap[i][2] = assign_pixelMap(heightMap[i] - 63);
}
} else
{
collision_heightMap[i][1] = assign_pixelMap(heightMap[i] - 31);
}
} else
{
collision_heightMap[i][0] = assign_pixelMap(heightMap[i]);
}
}
}
private int assign_pixelMap(int i)
{
int j = 0;
int k = 1;
for(int l = 0; l < 32; l++)
{
if(i > l)
j += k;
k <<= 1;
}
return j;
}
public void paint_explosion(int i, int j, int k, int l)
{
circle_complete[i] = false;
circle_x[i] = 0;
circle_y[i] = l >> 1;
circle_p[i] = 5 - ((l >> 1) << 2) >> 2;
CirclePoint(landImage.getGraphics(), j, k, circle_x[i], circle_y[i]);
circle_init[i] = true;
}
public void mapCircle_quartile1(int i, int j, int k, int l)
{
if(!circle_init[i])
paint_explosion(i, j, k, l);
while(circle_x[i] < circle_y[i] >> 2)
{
circle_x[i]++;
if(circle_p[i] < 0)
{
circle_p[i] += 2 * circle_x[i] + 1;
} else
{
circle_y[i]--;
circle_p[i] += 3 * (circle_x[i] - circle_y[i]) + 1;
}
CirclePoint(landImage.getGraphics(), j, k, circle_x[i], circle_y[i]);
}
}
public void mapCircle_quartile2(int i, int j, int k, int l)
{
if(!circle_init[i])
paint_explosion(i, j, k, l);
while(circle_x[i] < circle_y[i] >> 1)
{
circle_x[i]++;
if(circle_p[i] < 0)
{
circle_p[i] += 2 * circle_x[i] + 1;
} else
{
circle_y[i]--;
circle_p[i] += 3 * (circle_x[i] - circle_y[i]) + 1;
}
CirclePoint(landImage.getGraphics(), j, k, circle_x[i], circle_y[i]);
}
}
public void mapCircle_quartile3(int i, int j, int k, int l)
{
if(!circle_init[i])
paint_explosion(i, j, k, l);
while(circle_x[i] < (circle_y[i] >> 2) + (circle_y[i] >> 1))
{
circle_x[i]++;
if(circle_p[i] < 0)
{
circle_p[i] += 2 * circle_x[i] + 1;
} else
{
circle_y[i]--;
circle_p[i] += 3 * (circle_x[i] - circle_y[i]) + 1;
}
CirclePoint(landImage.getGraphics(), j, k, circle_x[i], circle_y[i]);
}
}
public void mapCircle_quartile4(int i, int j, int k, int l)
{
if(!circle_init[i])
paint_explosion(i, j, k, l);
while(circle_x[i] < circle_y[i])
{
circle_x[i]++;
if(circle_p[i] < 0)
{
circle_p[i] += 2 * circle_x[i] + 1;
} else
{
circle_y[i]--;
circle_p[i] += 3 * (circle_x[i] - circle_y[i]) + 1;
}
CirclePoint(landImage.getGraphics(), j, k, circle_x[i], circle_y[i]);
}
circle_complete[i] = true;
circle_init[i] = false;
}
private void CirclePoint(Graphics g, int i, int j, int k, int l)
{
if(k == 0)
{
set_horizontalMap(g, i, i, j - l);
set_horizontalMap(g, i + l, i - l, j);
} else
if(k == l)
{
set_horizontalMap(g, i + k, i - k, j + l);
set_horizontalMap(g, i + k, i - k, j - l);
} else
if(k < l)
{
set_horizontalMap(g, i + k, i - k, j + l);
set_horizontalMap(g, i + k, i - k, j - l);
set_horizontalMap(g, i + l, i - l, j + k);
set_horizontalMap(g, i + l, i - l, j - k);
}
}
private void set_horizontalMap(Graphics g, int i, int j, int k)
{
boolean flag = false;
boolean flag1 = false;
int i1 = 1;
if(i < 0)
i = 0;
if(i > 300)
i = 300;
if(j < 0)
j = 0;
if(j > 300)
j = 300;
impact_height = 150 - k;
if(impact_height < 128)
{
int l;
byte byte0;
if(impact_height > 95)
{
byte0 = 3;
l = impact_height - 96;
i1 = ~(i1 << l);
} else
if(impact_height > 63)
{
byte0 = 2;
l = impact_height - 64;
i1 = ~(i1 << l);
} else
if(impact_height > 31)
{
byte0 = 1;
l = impact_height - 32;
i1 = ~(i1 << l);
} else
{
byte0 = 0;
l = impact_height;
i1 = ~(i1 << l);
}
if(j < i)
{
for(int j1 = j; j1 < i; j1++)
{
if((pixel_heightMap[j1][byte0] >> l & 0x1) == 1)
g.setColor(73, 171, 207);
else
g.setColor(93, 191, 227);
g.drawLine(j1, k, j1, k);
collision_heightMap[j1][byte0] = collision_heightMap[j1][byte0] & i1;
}
} else
{
for(int k1 = i; k1 < j; k1++)
{
if((pixel_heightMap[k1][byte0] >> l & 0x1) == 1)
g.setColor(53, 151, 187);
else
g.setColor(93, 191, 227);
g.drawLine(k1, k, k1, k);
collision_heightMap[k1][byte0] = collision_heightMap[k1][byte0] & i1;
}
}
}
}
public void add_boundingRectangle(int i, int j, int k, int l)
{
for(int i1 = 0; i1 < l; i1++)
{
for(int j1 = 0; j1 < k; j1++)
set_collisionMap(i + j1, j + i1);
}
}
public void paint(Graphics g)
{
g.drawImage(landImage, levelX, levelY, 20);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -