⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 landscape.java

📁 thq 发布的《worms》 motorola 源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    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 + -