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

📄 diamandcanvas.java

📁 俄罗斯方块的JAVA实现
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            right();
        }
    }

    public void makeLiveToDeath()
    {
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if (liveArray[i][j] == 1)
                {
                    deadArray[livePos[0] + i][livePos[1] + j] = 1;
                }
            }
        }
    }

    public void removeLine()
    {
        int removedLine = 0;
        for (int i = 0; i < HIGHTH_DIAMAND; i++)
        {
            boolean isLineFill = true;
            for (int j = 0; j < WIDTH_DIAMAND; j++)
            {
                if (deadArray[j][i] == 0)
                {
                    isLineFill = false;
                }
            }
            if(isLineFill)
            {
                removedLine ++;
                for (int j = 0; j < WIDTH_DIAMAND; j++)
                {
                    deadArray[j][0] = 0;
                }
                for (int j = i; j >= 1; j--)
                {
                    for (int k = 0; k < WIDTH_DIAMAND; k++)
                    {
                        deadArray[k][j] = deadArray[k][j - 1];
                    }
                }
            }
        }
        if (removedLine != 0)
        {
            score += 10 * (2 ^ (removedLine - 1));
        }
        System.out.println("" + removedLine);
    }

    public void initLive()
    {
        livePos = new int[]{orgin_x, 0};
        currentDiamand = nextDiamand;
        nextDiamand = Math.abs(random.nextInt()) % 19;
        liveArray = diamandArray[currentDiamand];
    }

    private boolean canMakeNewLive()
    {
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if (diamandArray[nextDiamand][i][j] == 1)
                {
                    if (deadArray[orgin_x + i][j] == 1)
                    {
                        return false;
                    }
                }
            }
        }
        return true;
    }

    //0~0,1~4,5~8,9~12,13~14,15~16,17~18
    private int getNextShapeId(int shapeId)
    {
        switch (shapeId)
        {
            case 0:
                return 0;
            case 1:
            case 2:
            case 3:
            case 5:
            case 6:
            case 7:
            case 9:
            case 10:
            case 11:
            case 13:
            case 15:
            case 17:
                return shapeId + 1;
            case 4:
            case 8:
            case 12:
                return shapeId - 3;
            case 14:
            case 16:
            case 18:
                return shapeId - 1;
            default:
                return 0;
        }
    }

    private void changeShape()
    {
        currentDiamand = getNextShapeId(currentDiamand);
        liveArray = diamandArray[currentDiamand];
    }

    private boolean canChange()
    {
        int[][] tmpArray = diamandArray[getNextShapeId(currentDiamand)];
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if (tmpArray[i][j] == 1)
                {
                    if (livePos[1] + j > HIGHTH_DIAMAND - 1)
                    {
                        return false;
                    }
                    if (livePos[1] + j < 0)
                    {
                        return false;
                    }
                    if (livePos[0] + i > WIDTH_DIAMAND - 1)
                    {
                        return false;
                    }
                    if (livePos[0] + i < 0)
                    {
                        return false;
                    }
                    if (deadArray[livePos[0] + i][livePos[1] + j] == 1)
                    {
                        return false;
                    }
                }
            }
        }
        return true;
    }

    private boolean canDown()
    {
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if (liveArray[i][j] == 1)
                {
                    if (livePos[1] + j + 1 > (HIGHTH_DIAMAND - 1))
                    {
                        return false;
                    }
                    if (deadArray[livePos[0] + i][livePos[1] + j + 1] == 1)
                    {
                        return false;
                    }
                }
            }
        }
        return true;
    }

    private boolean canLeft()
    {
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if (liveArray[i][j] == 1)
                {
                    if (livePos[0] + i - 1 < 0)
                    {
                        return false;
                    }
                    if (deadArray[livePos[0] + i - 1][livePos[1] + j] == 1)
                    {
                        return false;
                    }
                }
            }
        }
        return true;
    }

    private boolean canRight()
    {
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if (liveArray[i][j] == 1)
                {
                    if (livePos[0] + i + 1 >= HIGHTH_DIAMAND)
                    {
                        return false;
                    }
                    if (deadArray[livePos[0] + i + 1][livePos[1] + j] == 1)
                    {
                        return false;
                    }
                }
            }
        }
        return true;
    }

    public void down()
    {
        livePos[1] = livePos[1] + 1;
    }

    public void left()
    {
        livePos[0] = livePos[0] - 1;
    }

    public void right()
    {
        livePos[0] = livePos[0] + 1;
    }

    public void updateUI()
    {
        extImg.clear((byte)0);
        extImg.getImage().getGraphics().setColor(1);
        extImg.getImage().getGraphics().drawLine(leftMagin, 0, leftMagin, 80);
//        extImg.getImage().getGraphics().setColor(0x00FF00);
//        extImg.getImage().getGraphics().setStrokeStyle(Graphics.DOTTED);
//        for (int i = 0; i < WIDTH_DIAMAND; i++)
//        {
//            extImg.getImage().getGraphics().drawLine(leftMagin + SIZE_DIAMAND*i, 0, leftMagin + SIZE_DIAMAND*i, 80);
//        }
//        extImg.getImage().getGraphics().setStrokeStyle(Graphics.SOLID);
//        extImg.getImage().getGraphics().setColor(1);
        extImg.getImage().getGraphics().drawLine(leftMagin + 64, 0, leftMagin + 64, 80);
        extImg.getImage().getGraphics().drawString("Score:", leftMagin + 68, 0, Graphics.TOP|Graphics.LEFT);
        extImg.getImage().getGraphics().drawString("" + score, leftMagin + 68, 20, Graphics.TOP|Graphics.LEFT);
        if (!isRunning)
        {
            extImg.getImage().getGraphics().drawString("GameOver", 30, 40, Graphics.TOP|Graphics.LEFT);
        }
        else
        {
            for (int i = 0; i < WIDTH_DIAMAND; i++)
            {
                for (int j = 0; j < HIGHTH_DIAMAND; j++)
                {
                    if (deadArray[i][j] == 1)
                    {
                        extImg.getImage().getGraphics().drawImage(img, leftMagin + SIZE_DIAMAND * i, SIZE_DIAMAND * j, Graphics.LEFT | Graphics.TOP);
                    }
                }
            }
            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    if (liveArray[i][j] == 1)
                    {
                        extImg.getImage().getGraphics().drawImage(img, leftMagin + (livePos[0] + i) * SIZE_DIAMAND,
                            (livePos[1] + j) * SIZE_DIAMAND, Graphics.LEFT | Graphics.TOP);
                    }
                    if (diamandArray[nextDiamand][i][j] == 1)
                    {
                        extImg.getImage().getGraphics().drawImage(img, leftMagin + 64 + (1 + i) * SIZE_DIAMAND,
                            40 + j * SIZE_DIAMAND, Graphics.LEFT | Graphics.TOP);
                    }
                }
            }
        }
        extImg.blitToScreen(0,0);
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -