课程 - 创造一场比赛3" Candy Crush" C中的游戏

时间:2015-03-07 01:35:09

标签: c arrays function ansi-escape

我在任务上遇到一些麻烦,我正在寻找一些建议。我应该创造一个"游戏"这类似于Candy Crush或Bejeweled。赋值采用.txt文件,该文件包含1-5的值矩阵,然后将每个值分配给[10] [10]数组中的某个点。然后,转义码功能打印出彩色像素代替每个点的数值,创建一个游戏板"看输出。最后,该程序应该寻找3个相同颜色像素的任何匹配,并用白色像素和" XX"替换它们。然后程序打印出校正的游戏板,其中匹配X' d out。

我主要编码,但我遇到了一些问题...

1。)我应该标记列和行0-9,虽然我使用printf()编码列的标签没有问题,当我尝试打印行标签时,我得到一个随机字符串号。

2。)我通过将数组中的值重新分配给7来替换带有白色像素的匹配,其中ANSI转义码为白色。但是,我不确定如何打印" XX"在同一个地方。

我希望我可以发布一些图片作为例子,但我没有足够的声誉和#34;在这个网站上作为一个新帐户。我到目前为止已经包含了我的代码。

#include <stdio.h>

void printEscapeCode(int c);

int main(void)
{
    /* Declare an image array to be gameboard */
    int gameboard[10][10];

    /* Declare variables and load in how many rows and columns */
    int Nrows;
    int Ncols;

    scanf("%d %d",&Nrows, &Ncols);

    /* Load in candy values for each row */
    int row, col;
    for(row = 0; row < Nrows; row++)
    {
            /* Load in candy values for each column */
            for(col = 0; col < Ncols; col++)
            {
                   /* Declare variable to hold value */
                    int x;
                    scanf("%d",&x);
                   /* Tell where to store candy value */
                    gameboard[row][col] = x;
            }
    }
    /* Calls function to print candy colors for each row */
    printf("  0 1 2 3 4 5 6 7 8 9\n");
    for(row = 0; row < Nrows; row++)
    {
            printf("0 ");
            /* Calls function to print candy colors for each column */
            for(col = 0; col < Ncols; col++)
            {
                    /* If statement to look for three matching candies */
                    if(gameboard[row][col] == gameboard[row+1][col] && gameboard[row+1][col] ==  gameboard[row+2][col])
                    {
                            /* Sets matching candies to display white */
                            gameboard[row][col] = 7;
                            gameboard[row+1][col] = 7;
                            gameboard[row+2][col] = 7;
                    }
                    if(gameboard[row][col] == gameboard[row][col+1] && gameboard[row][col+1] == gameboard[row][col+2])
                    {
                            gameboard[row][col] = 7;
                            gameboard[row][col+1] = 7;
                            gameboard[row][col+2] = 7;
                    }
                    printEscapeCode(gameboard[row][col]);
            }
            printEscapeCode(7);
            printf("\n");
    }
    return 0;
}

/* Function that prints candy colors */
void printEscapeCode(int c){
    printf("\x1b[4%dm  ",c);

}

0 个答案:

没有答案