本文指的扫雷是简单模拟电脑中的扫雷游戏,但以我目前的水平,也就只能在黑框中实现

test.c

#include

#include

#include

#include "game2.h"

void menu()

{

printf("********* welcome ********\n");

printf("**********1.play**********\n");

printf("**********0.exit**********\n");

}

enum Option

{

EXIT,

PLAY

};

void game()

{

int x = 0;

int y = 0;

int i = 0;

int win = 0;

char mine[ROWS + 2][COLS + 2] = { 0 };

char show[ROWS + 2][ROWS + 2] = { 0 };

init_board(mine, ROWS + 2, COLS + 2, '0');

init_board(show, ROWS + 2, COLS + 2, '*');

//display(mine, ROWS + 2, COLS + 2);#define _CRT_SECURE_NO_WARNINGS

//display(show, ROWS + 2, COLS + 2);

mine_set(mine, ROWS + 2, COLS + 2);

display(mine, ROWS + 2, COLS + 2);

while (win

{

for (i = 0; i <= win; i++)

{

printf("请输入坐标:>");

scanf("%d%d", &x, &y);

//合法性判断

if ((x>0) && (x <= ROWS) && (y > 0) && (y <= COLS))

{

if ((i == 0) && (mine[x][y] == '1'))

{

(mine[x][y] = '0') ;

}

if (mine[x][y] == '1')

{

printf("很遗憾,你被炸死了\n");

break;

}

else

{

int count = 0;

win++;

count = get_mine_num(mine, x, y);

show[x][y] = count + '0';

display(show, ROWS + 2, COLS + 2);

}

}

else

{

printf("输入错误请重新输入\n");

}

}

if (win >= ROWS*COLS - DEFAULT_COUNT)

{

printf("恭喜你,扫雷成功\n");

}

}

}

int main()

{

int input = 0;

srand((uint_t)time(NULL));

do

{

menu();

printf("请选择:>");

scanf("%d", &input);

switch (input)

{

case PLAY:

game();

break;

case EXIT:

break;

default:

printf("输入错误,请重新输入\n");

break;

}

} while (input);

system("pause\n");

return 0;

}

game.c

#define _CRT_SECURE_NO_WARNINGS 1

#include "game2.h"

#include

#include

#include

void init_board(char arr[ROWS + 2][COLS + 2], int row, int col,char ch)

{

memset(arr, ch, sizeof(char) * row * col);

}

void display(char arr[ROWS + 2][COLS + 2], int row, int col)

{

int i = 0;

int j = 0;

printf(" ");

for (i = 0; i < col - 2; i++)

{

printf("%d ", i + 1);

}

printf("\n");

for (i = 0; i < row - 2; i++)

{

printf("%2d ", i + 1);

for (j = 0; j < col - 2; j++)

{

printf("%c ", arr[i + 1][j + 1]);

}

printf("\n");

}

}

void mine_set(char arr[ROWS + 2][COLS + 2], int row, int col)

{

int x = 0;

int y = 0;

int count = DEFAULT_COUNT;

while (count)

{

x = rand() % 10 + 1;

y = rand() % 10 + 1;

if (arr[x][y] != '1')

{

arr[x][y] = '1';

count--;

}

}

}

int get_mine_num(char arr[ROWS + 2][COLS + 2], int x, int y)

{

return (arr[x][y - 1] - '0') +

(arr[x - 1][y - 1]-'0')- +

(arr[x - 1][y]-'0') +

(arr[x - 1][y + 1]-'0') +

(arr[x][y + 1]-'0') +

(arr[x + 1][y + 1]-'0') +

(arr[x + 1][y]-'0') +

(arr[x + 1][y - 1]-'0');//返回周围雷的个数

}

game.h

#ifndef __GAME_H__

#define __GAME_H__

#define ROWS 10

#define COLS 10

#define DEFAULT_COUNT 20

typedef unsigned int uint_t;//类型重命名

#include

#include

#include

#include

void init_board(char arr[ROWS + 2][COLS + 2], int row, int col,char ch);//初始化

void display(char arr[ROWS + 2][COLS + 2], int row, int col);

void mine_set(char arr[ROWS + 2][COLS + 2], int row, int col);//放雷

int get_mine_num(char arr[ROWS + 2][COLS + 2], int row, int col);//统计坐标周围雷的个数

#endif //__GAME_H__

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

c语言简单的模拟坐标,C语言模拟实现简单扫雷游戏相关推荐

  1. c语言迷宫问题输出坐标,C语言数据结构之迷宫求解问题

    现在网上各种对于迷宫的求解,版本多的数不胜数.本人小白一枚,贴上自己对迷宫的求解这个小项目,自己写的.望能帮助一些同样有困难的人,毕竟我当时费解了好一会儿时间呢. 首先,先标明对于迷宫求解这个项目,首 ...

  2. c语言计算二次函数顶点坐标,C语言编写一个求一元二次方程的实根的程序。 编辑一个小程序去做一元二次方程的求解(b^24ac)...

    导航:网站首页 > C语言编写一个求一元二次方程的实根的程序. 编辑一个小程序去做一元二次方程的求解(b^2>4ac) C语言编写一个求一元二次方程的实根的程序. 编辑一个小程序去做一元二 ...

  3. c语言建立二维坐标,C语言 坐标移动详解及实例代码

    题目描述 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动.从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面. 输入: 合 ...

  4. c语言结构体定义坐标,C语言结构体定义的方式

    结构体是由不同数据类型组织在一起而构成的一种数据类型,因而一个结构体有多个数据项,每个数据项的类型可不相同. 1.结构体类型的说明 由于结构体类型不是C语言提供的标准类型,为了能够使用结构体类型,必须 ...

  5. c语言结构体定义坐标,C语言结构体定义的方法汇总

    什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...

  6. c语言任意输入两点坐标,c语言题目急急急!给定平面任意两点的坐标(x1,y1)和(x2,? 爱问知识人...

    [问题描述]给定平面任意两点的坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留两位小数).要求求距离的运算单独放在一个函数中,然后在main函数中调用. [输入形式]输入两点的坐标(x1, ...

  7. 一步一步实现扫雷游戏(C语言实现)(三)

    使用WIN32API连接窗口 此项目相关博文链接 一步一步实现扫雷游戏(C语言实现)(一) 一步一步实现扫雷游戏(C语言实现)(二) 一步一步实现扫雷游戏(C语言实现)(三) 一步一步实现扫雷游戏(C ...

  8. 【C语言基础学习---扫雷游戏】(包含普通版+递归炼狱版)

    游戏背景介绍 扫雷游戏是一款大众类的益智小游戏,于1992年发行.游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输. 扫雷在科技历史上也扮演了相似的角 ...

  9. c语言画图 钟表模拟程序,图形模拟时钟C语言课程设计

    图形模拟时钟C语言课程设计 更新时间:2017/2/2 9:03:00  浏览量:640  手机版 学号13082101182014-2015学年第二学期 <高级语言程序设计> 课程设计报 ...

最新文章

  1. 可信工业数据空间系统架构1.0白皮书
  2. 2019年上半年收集到的人工智能开源框架介绍文章
  3. ocp 042 第十一章:管理oracle网络配置
  4. TOMCAT的域名配置
  5. [js高手之路] vue系列教程 - vue的事件绑定与方法(2)
  6. [vue] 说说你对SPA单页面的理解,它的优缺点分别是什么?
  7. HQL写topN、Spark写topN
  8. mysql存储过程表迁移for_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表 (转)...
  9. 一文搞定Matplotlib 各个示例丨建议收藏
  10. servlet 开发入门生命周期
  11. 30.构建单机多容器环境-故障31.构建单机多容器环境
  12. 教你如何构建异步服务器和客户端的 Kotlin 框架 Ktor
  13. BXP无盘Windows XP网吧系统的好处(转)
  14. OD教程(多态和变形)
  15. 把svg图标制作成字体图标_SVG图标FTW
  16. 自然辩证法对计算机科学技术的应用,自然辩证法在计算机科学技术中的应用
  17. OLAP系统核心技术点,每一点都值得单独收藏
  18. 基于STM32的0.96寸OLED显示屏显示数据
  19. 学学Gnuplot(常用命令及参数)
  20. dede网站模板制作流程

热门文章

  1. Kafka,它为什么速度会这么快?
  2. redis的watch命令没有ABA的问题
  3. 大剑无锋之介绍几个常见的网络协议且位于哪一层?【面试推荐】
  4. 数据结构:二叉查找树 BST 平均查找长度 ASL 的计算
  5. 【Java】线程创建方式:Callable接口 / 使用线程池
  6. 【Python日志输出】控制台输出INFO和WARNING级别,文件只记录WARNING级别
  7. 【Java基础】Java中的值传递、引用传递
  8. 深入理解编译优化之循环展开和粗化锁
  9. Copy ArrayList的四种方式
  10. ajax请求php返回的数据是整个页面的html,Ajax出错并返回整个页面html的问题