c - 如何使数组中的数字彼此不相邻?

标签 c

作为第一年作业的一部分,我正在开发一款简单的糖果美眉游戏。

所以我被困在这部分,在初始化过程中,3 个相同的数字不能彼此相邻。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//FUNCTION: Draw the Board
int drawBoard()
{
    //Declare array size
    int board[9][9];

    //initialize variables
    int rows, columns, randomNumber;

    //random number seed generator
    srand(time(NULL));

        for ( rows = 0 ; rows < 9 ; rows++ )
        {
            for ( columns = 0 ; columns < 9 ; columns++ )
            {
                //generate random numbers from 2 - 9
                randomNumber = rand() %7 + 2;

                board[rows][columns] = randomNumber;

                printf( "%d\t", board[rows][columns] );

            }//end inner for-loop

            printf("\n\n");
        }//end outer for-loop

}//end FUNCTION drawBoard

int checkAdjacent()
{

}

int main()
{
    drawBoard();
}

我想也许在函数checkAdjacent()中调用函数drawBoard(),然后使用这样的代码:

if ( board[rows][columns] == randomNumber && 
     board[rows][columns] == randomNumber && 
     board[rows][columns] == randomNumber )

也许我必须在 drawBoard 函数中执行此操作,但当我在这里挠头时,我越来越迷惑自己了:/

有什么提示吗?

最佳答案

我不确定是否玩游戏,但试试这个:我在插入时检查邻接。由于它是一 block 小板,复杂性不会受到太大影响。此外,由于它是随机的,因此具有相同相邻元素的概率也较小..

    int flag;

    for ( rows = 0 ; rows < 9 ; rows++ )
    {
        for ( columns = 0 ; columns < 9 ; columns++ )
        {
            //generate random numbers from 2 - 9

            flag = 0;
            do{
               randomNumber = rand() % 7 + 2;
               board[rows][columns] = randomNumber;
               if ((board[rows][columns] == board[rows-1][columns]) || (board[rows][columns] == board[rows][columns-1]))
                 flag = 0;
               else 
                 flag = 1; 
            //printf( "%d\t", board[rows][columns] );
             }while(flag == 0);

        }//end inner for-loop

        printf("\n\n");
    }//end outer for-loop

关于c - 如何使数组中的数字彼此不相邻?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19539306/

相关文章:

c - 您如何在 C 中运行多个 pthread 并检测第一个终止?

c - 结构体成员 char * 在函数调用中作为参数初始化

c - 如何在文件中写入char变量?

c - 为什么这个 int 不占用我数组的两个字节?

c - 将 esp-32 摄像头流式传输到 YouTube 等 RTMP 服务器

c - int 与 int_fast8_t 之间的优缺点

c - LWIP ECHO SERVER:如何增加itoa函数中的缓冲区大小?

尝试将读取的数据写入文件时出现 curl 写入错误

c - getline() 函数行为异常

objective-c - 在 C for iOS 项目中,我应该使用什么类型的文件名字符串?