| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 884 人关注过本帖
标题:关于扫雷布雷和显示,我改不出错误了,看了好久。。来个大神帮忙看看~~
只看楼主 加入收藏
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:14 
关于扫雷布雷和显示,我改不出错误了,看了好久。。来个大神帮忙看看~~
程序代码:
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 9
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)
                {    p[0][1]++;
                    p[1][0]++;
                }
                if(i==n-1&&j==n-1)
                {    p[n-1][n-2]++;
                    p[n-2][n-1]++;
                }
                if(i==n-1&&j==0)
                {    p[n-1][1]++;
                    p[n-2][0]++;
                }
                if(j==n-1&&i==0)
                {    p[1][n-1]++;
                    p[0][n-2]++;
                }
                if(i==0&&j!=0&&j!=n-1)
                {    p[i][j-1]++;
                    p[i][j+1]++;
                    p[i+1][j-1]++;
                    p[i+1][j]++;
                    p[i+1][j+1]++;
                }
                if(i==n-1&&j!=n-1&&j!=0)
                {    p[i-1][j-1]++;
                    p[i-1][j]++;
                    p[i-1][j+1]++;
                    p[i][j-1]++;
                    p[i][j+1]++;
                }
                if(i!=0&&i!=n-1&&j==0)
                {    p[i-1][j]++;
                    p[i-1][j+1]++;
                    p[i][j+1]++;
                    p[i+1][j]++;
                    p[i+1][j+1]++;
                }
                if(i!=0&&i!=n-1&&j==n-1)
                {    p[i-1][j-1]++;
                    p[i-1][j]++;
                    p[i][j-1]++;
                    p[i+1][j-1]++;
                    p[i+1][j]++;
                }
                if(i!=0&&i!=n-1&&j!=n-1&&j!=0)
                {    p[i-1][j-1]++;
                    p[i-1][j]++;
                    p[i-1][j+1]++;
                    p[i][j-1]++;
                    p[i][j+1]++;
                    p[i+1][j-1]++;
                    p[i+1][j]++;
                    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");
    }
}
   程序有点长。。。因为中间的函数实在是想不出什么妙方法。。  拜托了!!
2014-06-11 20:32
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
自己顶!!
2014-06-11 20:33
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
自顶
2014-06-11 20:35
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
忘了发题目了!!!  编程序模拟“地雷游戏”的布雷和标注地雷功能,其具体要求为:在指定的雷区中,随机布上多颗地雷(要求显示时地雷用*号表示);然后在有相邻地雷的无雷方格中标注出相邻地雷的个数;最后输出标注后的结果(雷区)。程序实现的要求如下:
(1)雷区的大小在程序运行过程中指定;
(2)地雷的个数在程序运行过程中指定;
(3)布雷功能使用随机函数实现;
(4)布雷功能、标注地雷(排雷)功能和输出功能
    均使用独立的函数完成;
2014-06-11 20:36
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
再顶
2014-06-11 20:41
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
自顶
2014-06-11 23:07
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
再顶
2014-06-11 23:27
lol1234
Rank: 1
等 级:新手上路
帖 子:46
专家分:3
注 册:2014-4-11
收藏
得分:0 
再顶
2014-06-11 23:51
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:20 
很明显把雷也加 1 了,加 1 前做一个判断


[fly]存在即是合理[/fly]
2014-06-12 00:13
hurty
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-5-23
收藏
得分:0 
这么复杂的程序都写的出,好厉害啊,可惜我还是个小白。以后希望多多指教!
2014-06-12 09:16
快速回复:关于扫雷布雷和显示,我改不出错误了,看了好久。。来个大神帮忙看看~ ...
数据加载中...
 
   



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

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