C语言编程 简单展开扫雷游戏

源代码如下

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#define amu 10
#define Lshu 10
void menu()//菜单
{
    printf("*************************************\n");
    printf("****** 欢 迎 来 到 扫 雷 游 戏 ******\n");
    printf("******  1.开始游戏    0.退出  *******\n");
    printf("*************************************\n");
    printf("请输入选择\n");
}
void Show( char show[][amu + 2])//打印图像
{
    int i, s;
    system("cls");
    printf("   0  1  2  3  4  5  6  7  8  9 \n");
    for (i = 0; i <= 9; i++)
    {
        printf("\n");
        printf("%d", i);
        for (s = 1; s <= 10; s++)
        {
                printf("%3c", show[i+1][s]);
        }
        printf("\n");
    }
}
int getnum(char mine[][amu+2], int i, int j)//所选坐标周围的雷数量
{
    return mine[i - 1][j - 1] + mine[i - 1][j] +         mine[i - 1][j + 1] + mine[i][j - 1] +         mine[i][j + 1] + mine[i + 1][j - 1] +         mine[i + 1][j] + mine[i + 1][j + 1] - 8 * ‘0‘;
}
void fullmine(char mine[][amu + 2], int sta, int end)//埋雷
{
    int sum = 0, n, m;
    srand((unsigned int)time(NULL));
    while (1)
    {
        n = rand() % (end - sta + 1) + sta;
        m = rand() % (end - sta + 1) + sta;
        if (mine[n][m] == ‘0‘)
        {
            mine[n][m] = ‘1‘;
            sum++;
        }
        if (sum == Lshu)
        {
            return;
        }
    }

}
int judge(char mine[][amu + 2], int n, int m)//判断是否踩雷
{
    if (mine[n][m] != ‘1‘)
    {
        return 1;
    }
    return 0;
}
void game(char show[][amu + 2], char mine[][amu + 2], int sta, int end)
{
    int sum = 0, n, m,p;
    Show(show);
    fullmine(mine, sta, end);
    while (1)
    {
        printf("请输入要选择的坐标\n");
        scanf("%d%d", &n, &m);
        n++; m++;
        if (n >=1 && n <= amu && m >= 1 && m <= amu)
        {
            p = judge(mine, n, m);
            if (p == 1)
            {
                sum = getnum(mine, n, m);
                show[n][m] = sum + ‘0‘;
                if (mine[n-1][m] == ‘0‘)//坐标周围展开
                {
                    show[n-1][m] = ‘\0‘;
                }
                if (mine[n][m + 1] == ‘0‘)
                {
                    show[n][m + 1] = ‘\0‘;
                }
                if (mine[n + 1][m] == ‘0‘)
                {
                    show[n + 1][m] = ‘\0‘;
                }
                if (mine[n + 1][m+1] == ‘0‘)
                {
                    show[n + 1][m+1] = ‘\0‘;
                }
                if (mine[n - 1][m+1] == ‘0‘)
                {
                    show[n - 1][m+1] = ‘\0‘;
                }
                if (mine[n + 1][m-1] == ‘0‘)
                {
                    show[n + 1][m-1] = ‘\0‘;
                }
                if (mine[n-1][m-1] == ‘0‘)
                {
                    show[n-1][m-1] = ‘\0‘;
                }
                if (mine[n ][m-1] == ‘0‘)
                {
                    show[n ][m-1] = ‘\0‘;
                }
            }
            else
            {
                break;
            }
            Show(show);
        }
        else
        {
            printf("输入坐标不正确\n");
        }
    }
}
int main()
{
    int input, sta = 1, end = 10;
    char mine[amu + 2][amu + 2];
    char show[amu + 2][amu + 2];
    memset(show, ‘#‘, sizeof(show));
    memset(mine, ‘0‘, sizeof(mine));
    menu();
    scanf("%d", &input);
    if (input == 1)
    {
        game(show, mine, sta, end);//游戏进程
    }
    else
    {
        return 0;
    }
    Show(mine);
    printf("Game Over\n You Lost\n");
    system("pause");
    return 0;
} 

原文地址:https://blog.51cto.com/14232799/2379804

时间: 2024-08-30 09:29:05

C语言编程 简单展开扫雷游戏的相关文章

C++实现简单的扫雷游戏(控制台版)

C++新手的代码,请各位多包涵. 用C++写的一个简单的控制台版扫雷游戏.玩家通过输入方块的坐标来翻开方块. 只是一个雏形,能够让玩家执行翻开方块的操作并且判断输赢,还未添加标记方块.游戏菜单.记录游戏时间.重新开一局等等的功能. 玩家输入坐标的方式来翻开方块只适用于小型的“雷区”,若“雷区”大了,用坐标会变得很不方便. 代码片段扫雷V1.1 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

java 简单的扫雷游戏

//扫雷游戏 package Bible001; import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Mine extends MouseAdapter { private JFrame mainFrame; private int[][] data; private JButton[][] buttons; private JButton startJB; private Label l;

c语言:简单飞机射击小游戏

c语言:简单飞机射击小游戏 使用c语言编写一个打飞机小游戏,使用键盘按键来进行游戏,操作方法是"a""d""w"或者"←""↑""→"来控制攻击.左.右,击中敌机可获得积分,被敌机撞中死亡一次,每次游戏有3次机会,机会用光则游戏结束,之后可选择是否重新开始游戏. 改进:增加了颜色函数,使得游戏看起来更加的舒适:增加了终止函数,使游戏在死亡三次后自动结束游戏,并且可以选择是否重新开始游戏:

C语言二维数组实现扫雷游戏

#include<stdio.h> //使用二维数组实现 扫雷 int main() { char ui[8][8]={ '+','+','+','+','+','+','+','+', '+','+','+','+','+','+','+','+', '+','+','+','+','+','+','+','+', '+','+','+','+','+','+','+','+', '+','+','+','+','+','+','+','+', '+','+','+','+','+','+'

linux 操作系统下c语言编程入门

2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计入门--网络编程 9)Linux下C开发工具介绍 1)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编

华为C语言编程规范

DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved密级:confidentiality levelDKBA 2826-2011.52011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第2页,共61页Page 2 , Total61修订声明Revision

Socket网络编程--简单Web服务器(1)

这一次的Socket系列准备讲Web服务器.就是编写一个简单的Web服务器,具体怎么做呢?我也不是很清楚流程,所以我找来了一个开源的小的Web服务器--tinyhttpd.这个服务器才500多行的代码,使用C语言.这一小节就不讲别的内容了.就对这个程序进行一些注释和讲解了. 主函数: 1 int main(void) 2 { 3 int server_sock = -1; 4 u_short port = 0; 5 int client_sock = -1; 6 struct sockaddr_

Java Swing扫雷游戏demo分享

好多年前写过简略的扫雷游戏,模拟windows的. 后来由于多次搬迁环境,弄丢了,遗憾不已啊. 于是趁着这两年还在编程的道路上,趁热再次编写了一次,同时也扩展了功能,更接近windows的扫雷. 此次重写是用Javaswing实现的(eclipse开发),考虑到各位看客可能大部分是Android岗位,于是我着重注意了功能结构化的处理,使游戏核心算法与UI分离,使用回调交互,便于迁移到android环境. 本人对swing不是很熟练,一直以来用swing做项目的人很少,学习资料也少,所有的这些都是

【Android】自己动手做个扫雷游戏

1. 游戏规则 扫雷是玩法极其简单的小游戏,点击玩家认为不存在雷的区域,标记出全部地雷所在的区域,即可获得胜利.当点击不包含雷的块的时候,可能它底下存在一个数,也可能是一个空白块.当点击中有数字的块时,游戏会展现当前点击块所包含的数字.当点击空白块时,地图会展开,形成一个大小和形状不规则的图形,该图形的边界是数字块,也可以想成展开的是一个被数字包围着的不规则图形. 1.1 数字生成规则 扫雷游戏中是通过数字来判断雷的位置的,那么,数字的生成规则是什么呢?假设游戏中只有一个雷,那么,他的将被1这个