0

我正在用 C 编写一个 2048 游戏副本。但我无法弄清楚游戏结束功能。我有这个结构:

typedef struct struct_BLOCO
{
    int valor;
    int cor;
    int x, y;
}   BLOCO;

这是我给棋盘坐标的函数:

void GiveBlocksCoordinates(BLOCO bloco[16])
{
    int i, j, cont = 0;
    for (i = 0; i < MAX; i++)
    {
        for (j = 0; j < MAX; j++)
        {
            bloco[cont].x = (j * 8) + X_INI;
            bloco[cont].y = (i * 4) + Y_INI;
            cont++;

        }
    }
}

只需使用使用值 bloco[i].[x]/[y] 的函数将它们放在屏幕上。这是我的“GameOver”函数,在其当前状态下: PS:“quant”整数接收 16 值。如果一个块是空的,则它的值为 0。如果是“游戏结束”,则函数返回 1。

int acabouJogo(BLOCO vec[], int quant)
{
    int i, j, x, y, cont = 0, BlocosOcupados = 1;

    for (i = 0; i < quant; i++)
        if (vec[i].valor != 0)
            BlocosOcupados++;

    if (BlocosOcupados == quant)
    {
        for (x = 0; x != 16; x = x + 4)
        {
            while (cont < 3)
            {
                if (vec[x + cont].valor != vec[(x + cont) + 1].valor)
                    cont++;

                else
                    return 0;
            }
            cont = 0;
        }

        for (x = 0; x < 4; x++)
        {
            while ( (cont + x) != (12 + x) )
            {
                if (vec[x + cont].valor != vec[(x + cont) + 4].valor)
                    cont = cont + 4;

                else
                    return 0;
            }

            cont = 0;
        }

    }
    else
        return 0;

    return 1;
}

你们能帮帮我吗?对不起我的英语不好。

谢谢。

4

0 回答 0