C - 查看游戏是否达到“GameOver”点的功能。 (2048副本)

时间:2017-03-07 19:09:12

标签: c 2048

我正在用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值。如果是“Game Over”,则函数返回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;
}
你能帮助我吗? 抱歉我的英文。

感谢。

0 个答案:

没有答案