| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 884 人关注过本帖
标题:关于扫雷布雷和显示,我改不出错误了,看了好久。。来个大神帮忙看看~~
只看楼主 加入收藏
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
自顶
2014-06-12 12:44
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
回复 9 楼 azzbcc
你是说  void fb(int **p,int m,int n)这段函数么?可是我++之前有一个判断if(p[i][j]==N) 了耶。。
2014-06-12 12:45
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
回复 10 楼 hurty
我也是小白~没问题!一起进步
2014-06-12 12:46
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
现在程序出现的问题就是   有的格子出现了10 11 12的数字  这怎么可能。。就算被地雷包围最大数字也就是9啊..  .
2014-06-12 12:50
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
程序代码:
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define N -1
void main()
{    
    void bl(int **p,int m,int n);
    void fb(int **p,int m,int n);
    void xs(int **p,int m,int n);
    int n1,n2,i,j;
    int **mine;    
    printf("输入地雷阵行数:");
    scanf("%d",&n1);
    printf("输入地雷阵列数:");
    scanf("%d",&n2);
    mine=(int **)malloc(sizeof(int *)*n1);    
    for(i=0;i<n1;i++)                        
        mine[i]=(int *)malloc(sizeof(int *)*n2);
    for(i=0;i<n1;i++)
        for(j=0;j<n2;j++)
            mine[i][j]=0;
    bl(mine,n1,n2);
    fb(mine,n1,n2);
    xs(mine,n1,n2);
}
void bl(int **p,int m,int n)
{
    int ms,i,j,k;
    printf("输入“地雷”数:");
    scanf("%d",&ms);
    srand(time(NULL));
    for(k=0;k<ms;k++)
    {
        i=rand()%m;
        j=rand()%n;
        if(p[i][j]!=0)
        {    k--;
            continue;
        }
        p[i][j]=N;
    }
}
void fb(int **p,int m,int n)
{
    int i,j;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
            if(p[i][j]==N)
            {
                if(i==0&&j==0)
                {    if(p[0][1]!=-1)
                        p[0][1]++;
                    if(p[1][0]!=-1)
                        p[1][0]++;
                }
                if(i==n-1&&j==n-1)
                {    if(p[n-1][n-2]!=-1)
                        p[n-1][n-2]++;
                    if(p[n-2][n-1]!=-1)
                        p[n-2][n-1]++;
                }
                if(i==n-1&&j==0)
                {    if(p[n-1][1]!=-1)
                        p[n-1][1]++;
                    if(p[n-2][0]!=-1)
                        p[n-2][0]++;
                }
                if(j==n-1&&i==0)
                {    if(p[1][n-1]!=-1)
                        p[1][n-1]++;
                    if(p[0][n-2]!=-1)
                        p[0][n-2]++;
                }
                if(i==0&&j!=0&&j!=n-1)
                {    if(p[i][j-1]!=-1)
                        p[i][j-1]++;
                    if(p[i][j+1]!=-1)
                        p[i][j+1]++;
                    if(p[i+1][j-1]!=-1)
                        p[i+1][j-1]++;
                    if(p[i+1][j]!=-1)
                        p[i+1][j]++;
                    if(p[i+1][j+1]!=-1)
                        p[i+1][j+1]++;
                }
                if(i==n-1&&j!=n-1&&j!=0)
                {    if(p[i-1][j-1]!=-1)
                        p[i-1][j-1]++;
                    if(p[i-1][j]!=-1)
                        p[i-1][j]++;
                    if(p[i-1][j+1]!=-1)    
                        p[i-1][j+1]++;
                    if(p[i][j-1]!=-1)
                        p[i][j-1]++;
                    if(p[i][j+1]!=-1)
                        p[i][j+1]++;
                }
                if(i!=0&&i!=n-1&&j==0)
                {    if(p[i-1][j]!=-1)
                        p[i-1][j]++;
                    if(p[i-1][j+1]!=-1)
                        p[i-1][j+1]++;
                    if(p[i][j+1]!=-1)
                        p[i][j+1]++;
                    if(p[i+1][j]!=-1)
                        p[i+1][j]++;
                    if(p[i+1][j+1]!=-1)    
                        p[i+1][j+1]++;
                }    
                if(i!=0&&i!=n-1&&j==n-1)
                {    if(p[i-1][j-1]!=-1)
                        p[i-1][j-1]++;
                    if(p[i-1][j]!=-1)
                        p[i-1][j]++;
                    if(p[i][j-1]!=-1)
                        p[i][j-1]++;
                    if(p[i+1][j-1]!=-1)    
                        p[i+1][j-1]++;
                    if(p[i+1][j]!=-1)
                        p[i+1][j]++;
                }
                if(i!=0&&i!=n-1&&j!=n-1&&j!=0)
                {    if(p[i-1][j-1]!=-1)
                        p[i-1][j-1]++;
                    if(p[i-1][j]!=-1)    
                        p[i-1][j]++;
                    if(p[i-1][j+1]!=-1)
                        p[i-1][j+1]++;
                    if(p[i][j-1]!=-1)
                        p[i][j-1]++;
                    if(p[i][j+1]!=-1)
                        p[i][j+1]++;
                    if(p[i+1][j-1]!=-1)    
                        p[i+1][j-1]++;
                    if(p[i+1][j]!=-1)    
                        p[i+1][j]++;
                    if(p[i+1][j+1]!=-1)
                        p[i+1][j+1]++;
                }
            }
    }
}
void xs(int **p,int m,int n)                      
{
    int i,j;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {    if(p[i][j]==N)
            printf("%3c",'*');  
            else if(p[i][j]!=0)
                printf("%3d",p[i][j]);
            if(p[i][j]==0)
                printf("%3d",0);
        }
        printf("\n");
    }
}
                        我懂了。。9楼你对的
2014-06-12 13:23
快速回复:关于扫雷布雷和显示,我改不出错误了,看了好久。。来个大神帮忙看看~ ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027541 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved