C中的扫雷艇板

C中的扫雷艇板,c,minesweeper,C,Minesweeper,我在学习编程。我从基础开始。 好的,我得去扫雷。我认为这会很好,但在现实中我看不到董事会。我不知道为什么。我想我写了显示电路板的函数 #include <stdio.h> #include <time.h> #include <stdlib.h> #include <stdbool.h> struct board { int value; bool outdoor; }; struct board field[9][9];

我在学习编程。我从基础开始。 好的,我得去扫雷。我认为这会很好,但在现实中我看不到董事会。我不知道为什么。我想我写了显示电路板的函数

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



struct board
{
    int value;
    bool outdoor;
};
struct board field[9][9];

bool load ()/*generuje plansze*/
{
    int x,y;
    for(x=0; x<9; x++)
    for(y=0; y<9; y++)
        {
            field[x][y].value = 0;
            field[x][y].outdoor = false;
        }
return true;
}

bool mina (int pozx, int pozy)/* ustaw mine*/
{
int k,l;
if(field[pozx][pozy].value!=9)
    {
        field[pozx][pozy].value=9;
        for(l=-1;l<2;l++)/*wyjscie poza zakres*/
            for(k=-1;k<2;k++)
                {
                 if((pozx+l)<0 || (pozy+k)<0)
                    continue;
                 if((pozx+l)>9 || (pozy+k)>9)
                    continue;
                 if(field[pozx+l][pozy+k].outdoor == 9)
                    continue;
                 field[pozx+l][pozy+k].value=pole[pozx+l][pozy+k].value+1;
                }
    }
    return true;
}

void position()
{
int pozx, pozy;
int ilosc=0;
srand(time(NULL));

while(ilosc>9)
{
    pozx=rand()%9;
    pozy=rand()%9;
    if(field[pozx][pozy].value!=9)
        {
            mina(pozx,pozy);
            ilosc++;
        }
    }

}

void discovering (int x,int y)
{
if(x<0 || x>9)
    return;
if(y<0 || y>9)
    return;
if(field[x][y].outdoor==true)
    return;
if(field[x][y].value!=9 && field[x][y].outdoor==false)
    field[x][y].outdoor=true;
if(field[x][y].value!=0) return;

discovering field(x,y);
discovering field(x+1,y);
discovering field(x,y+1);
discovering field(x+1,y+1)
discovering field(x-1,y);
discovering field(x,y-1);
discovering field(x-1,y-1);
discovering field(x-1,y+1);
discovering field(x+1,y-1);

}
void show ()
{
    int i,j;
    system("clear");
    for(i = 0; i<9; i++)
        for(j=0; j<9; j++)
            {
                if(field[i][j].outdoor==true)
                {   if(field[i][j].value==0)
                        printf(" "); /*print space*/
                    else
                        printf("%d",field[i][j].value);
                }
            }
            if(field[i][j].outdoor==false)
                printf("#");

}

void control ()
{
    int x,y;
    printf("Podaj wiersz i kolumne:  ");
    scanf("%d %d",&x,&y);
    discovering(x,y);
    show();


}



bool check()
{
    int i,j;
    int mina=0;
    for(i=0; i<9; i++)
        for(j=0; j<9; j++)
            {
                if(field[i][j].outdoor==false)
                    mina++;
            }
            if(mina==9)
                return true;
            else
                return false;
}

int main()
{

load();
position();
int end;
while(end==0)
{
    control();
    if(check()==true)
        end=1;
}
if(end==1)
    printf("Win!");
if(end==2)
    printf("Lose!");

return 0;
}
#包括
#包括
#包括
#包括
结构板
{
int值;
户外厕所;
};
结构板字段[9][9];
bool load()/*generauje plansze*/
{
int x,y;

对于(x=0;x在
main
中初始化变量
int end=0;
,启动
while
循环。 使用此
show
功能查看打印板

void show ()
{
    system("clear");
    for( int i=0; i < 9; i++ )
    {
        for( int j=0; j < 9; j++ )
        {
            if( field[i][j].outdoor )
            {   
                if ( field[i][j].value==0 )
                    printf(" "); /*print space*/
                else
                    printf("%d",field[i][j].value);
            }
            else
                printf("#");
        }
        printf( "\n" );
    }
}

main
中初始化变量
int end=0;
以启动
while
循环。 使用此
show
功能查看打印板

void show ()
{
    system("clear");
    for( int i=0; i < 9; i++ )
    {
        for( int j=0; j < 9; j++ )
        {
            if( field[i][j].outdoor )
            {   
                if ( field[i][j].value==0 )
                    printf(" "); /*print space*/
                else
                    printf("%d",field[i][j].value);
            }
            else
                printf("#");
        }
        printf( "\n" );
    }
}

你的
show
函数中有未定义的行为,正如循环后的最后一条语句一样,当索引
i
j
将超出范围时,aa ok,但我仍然没有看到板…我从2天以来一直在努力使用这个程序,但我想你真的应该提高编译器的警告级别。例如,使用gcc和
-Wall
时,我会得到“警告:此函数中未初始化使用了'end'[-Wuninitialized]”。你的
show
函数中有未定义的行为,正如循环后的最后一条语句一样,当索引
i
j
将超出范围时,aa ok,但我仍然看不到板…我从2天以来一直在努力使用此程序,但我会失败。你真的应该提高编译的警告级别r、 例如,在gcc和
-Wall
中,我得到“警告:'end'在此函数中未初始化使用[-Wuninitialized]”。好的,看起来很简单..谢谢你的帮助。我想在这方面做得更好,但有时太难了:)好的,看起来很简单..谢谢你的帮助。我想在这方面做得更好,但有时太难了:)