昨天在观察贪食蛇的代码时,看到了有如何实现扫雷的c++代码,觉得挺有趣,今天便又试了一下

#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int map[][]; // 为避免边界的特殊处理,故将二维数组四周边界扩展1
int derection[] = { , , - }; //方向数组
int calculate ( int x, int y )
{
int counter = ;
for ( int i = ; i < ; i++ )
for ( int j = ; j < ; j++ )
if ( map[ x+derection[i]][ y+derection[j] ] == )
counter++; // 统计以(x,y)为中心的四周的雷数目
return counter;
}
void game ( int x, int y )
{
if ( calculate ( x, y ) == )
{
map[x][y] = ;
for ( int i = ; i < ; i++ )
{ // 模拟游戏过程,若点到一个空白,则系统自动向外扩展
for ( int j = ; j < ; j++ )
if ( x+derection[i] <= && y+derection[j] <= && x+derection[i] >= && y+derection[j] >=
&& !( derection[i] == && derection[j] == ) && map[x+derection[i]][y+derection[j]] == - )
game( x+derection[i], y+derection[j] ); // 条件比较多,一是不可以让两个方向坐标同时为0,否则 } //二是递归不能出界.三是要保证不返回调用。
}
else
map[x][y] = calculate(x,y);
}
void print ()
{
for ( int i = ; i < ; i++ )
{
for ( int j = ; j < ; j++ )
{
if ( map[i][j] == - || map[i][j] == )
cout << "#";
else
cout << map[i][j];
}
cout << endl;
}
}
bool check ()
{
int counter = ;
for ( int i = ; i < ; i++ )
for ( int j = ; j < ; j++ )
if ( map[i][j] != - )
counter++;
if ( counter == )
return true;
else
return false;
} int main ()
{ int i, j, x, y;
char ch;
srand ( time ( ) ); do
{
memset ( map, -, sizeof(map) ); // 将map全部初始化为-1,以后用-1表示未涉及的区域 for ( i = ; i < ; )
{
x = rand()% + ;
y = rand()% + ;
if ( map[x][y] != )
{
map[x][y] = ;
i++;
}
} for ( i = ; i < ; i++ )
{
for ( j = ; j < ; j++ )
cout << "#";
cout << "\n";
}
cout << "\n"; cout << "Please enter a coordinate: ";
while ( cin >> x >> y )
{
if ( map[x][y] == )
{
cout << "GAME OVER" << endl; //点中雷之后游戏结束,并且输出雷的位置
for ( i = ; i < ; i++ )
{
for ( j = ; j < ; j++ )
{
if ( map[i][j] == )
cout << "@";
else
cout << "#";
}
cout << endl;
}
break;
} game(x,y);
print(); if ( check () )
{
cout << "YOU WIN" << endl;
break;
}
cout << "\n\n";
} cout << "Do you want to play again, if true enter Y, or enter N" << endl;
cin >> ch;
cout << "\n\n";
} while ( ch == 'Y' ); return ;
}

程序截图:

界面有点简陋,并是通过坐标来排雷的,而且到现在还没搞懂他这个程序到底该怎样输入坐标,不过还是感谢作者吧

c++实现扫雷(坐标)的更多相关文章

  1. C#基础教程/适合初学者

    C#基础教程 第一章       C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序.当 ...

  2. Java课程设计——扫雷(winmine)

    因为是我的课程设计,要是有冲突就不好了,转载注明出处!!! 程序很简单,毕竟我是搞acm的,我就只介绍一下闪光点. 中心空白搜索的时候,我用的DFS: 有一点是要注意的,就是JFrame不支持重画,还 ...

  3. Client Window坐标 RECT相关函数

    GetClientRect(HWND, RECT*) ---得到窗口的客户区大小,left,top总是0,bottom是客户区高度,right是客户区宽度 GetWindowRect(HWND, RE ...

  4. Java GUI编程-(项目代码_扫雷_弹钢琴)

    --扫雷 package com;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionLis ...

  5. web版扫雷小游戏(四)

    ~~~接上篇,游戏的主体框架完成了,接下来我们对游戏中存在的两个主要实体进行分析,一个是雷点类BombObject(节点对象),一个是节点对象对应的图片对象BombImgObject,根据第一篇的介绍 ...

  6. web版扫雷小游戏(三)

    ~~~接上篇,上篇介绍了游戏实现过程中第一个比较繁琐的地方,现在展现在玩家面前的是一个有血有肉的棋盘,从某种意义上说玩家已经可以开始游戏了,但是不够人性化,玩家只能一个一个节点的点开,然后判断,然后标 ...

  7. web版扫雷小游戏(二)

    接上篇~~第一次写这种技术博客,发现把自己做的东西介绍出来还是一件脑力活,不是那么轻松啊,好吧,想到哪写到哪,流水记录之,待完成之后再根据大家的意见进行修改吧. 游戏实现 根据对扫雷游戏的体验和分析, ...

  8. VB6之扫雷克星

    很久之前,那时候我还不太会玩(现在也不厉害)扫雷这个游戏,同学总在我面前炫耀自己的技术有多叼.“高级,99颗雷,只需三分钟...”,如此这般.也许确实需要天赋,我总要排查个半天才敢点下左键,然后就BO ...

  9. ios扫雷

    就这些代码敲了我两个小时...... //  ViewController.m //  扫雷 // //  Created by 晚起的蚂蚁 on 2017/3/22. //  Copyright © ...

随机推荐

  1. ZedGraph控件的使用

    http://blog.chinaunix.net/uid-20776117-id-1847015.html 在我们编写程序的时候,有时候是要做一些统计的,为了达到一目了然的效果,饼状图,曲线图,柱状 ...

  2. listener does not currently know of 。。。。

    打开Oracle的 listener.ora 文件: (../oracle/product/10.2.0/db_1/network/admin/listener.ora) 设置环境变量: Oracle ...

  3. MySQL架构设计谈:从开发规范、选型、拆分到减压(转)

    作者介绍 李辉,原新浪爱彩票运维负责人,常用网名:门牙没了.曾主导新浪爱彩票的MySQL运维工作.培训合伙人.资深讲师,中国科学院大学在读研究生(大数据方向),擅长大型项目的关系型数据库运维和管理,现 ...

  4. WF4.0 基础篇 (一)开始使用WF

    来源:https://www.cnblogs.com/caosenianhuan/p/WF.html 最近公司要重新上线一套新的CRM系统,要重整老系统里的业务流模块,团队讨论已微软的workflow ...

  5. EF webapi json序列化 表间相互引用 无限循环问题解决方案

    WebApiConfig.cs中加入 如下代码即可解决无限循环问题 var json = config.Formatters.JsonFormatter; // 解决json序列化时的循环引用问题 j ...

  6. antd在线换肤定制功能

    最近react项目,用的antd框架,然后看见他的antdPro例子里面有个定制功能很帅,老大说做,那就做吧,鼓捣了一晚终于实现了. 先看预览效果吧 css换肤 入行前端的时候经常看鱼哥(张鑫旭)的博 ...

  7. Program.cs 累积_C#

    using System; using System.Diagnostics; using System.Threading; using System.Windows.Forms; using Ut ...

  8. dubbo无法创建线程问题

    OutOfMemoryError: unable to create new native thread 决定当前用户程序能够创建多少线程由2个因素决定 1. 用户环境允许的线程数 cat /etc/ ...

  9. java.lang.ClassNotFoundException: org.I0Itec.zkclient.exception.ZkNoNodeException 异常 如何处理

    严重: Context initialization failed java.lang.NoClassDefFoundError: org/I0Itec/zkclient/exception/ZkNo ...

  10. Asterisk重要App

    elastix82*CLI> core show application  SoftHangup -= Info about application 'SoftHangup' =- [Synop ...