扫雷游戏 C语言实现

本文介绍了使用C语言实现扫雷游戏的过程,包括鼠标控制、左键点开、右键标记和中键自动翻开功能。文章展示了不同难度级别的游戏截图,并提供了游戏下载链接及源代码,适用于VS2013编译。
摘要由CSDN通过智能技术生成

扫雷游戏 C语言实现

实现了如下功能:
鼠标控制
左键点开
右键标记
中键自动翻开(效果同windows扫雷)
首次点击不会中雷

下面是几张效果图:

初始界面
这是初始界面,3种难度级别,难度同经典版windows扫雷

Beginner
Beginner

gaming
不同颜色的数字和标记功能

win
赢了!

game over
游戏结束,可以点击Restart重新开始

Expert
Expert级别难度

可以点击这里下载玩:

MineSweeper Version 1.0

最后是代码,VS2013编译运行成功(Release):

#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define _X_ 0
#define _Y_ 0
#define GotoXY(x,y) CC.X=x,CC.Y=y,SetConsoleCursorPosition(hOut,CC)
#define DoAt(x,y,p) tmpCC=CC,GotoXY(x,y),p,CC=tmpCC,SetConsoleCursorPosition(hOut,CC)
#define SetColor(fc,bc) SetConsoleTextAttribute(hOut, fc|bc)
//#define WHITESKIN //注释掉这一行就是黑色,否则就是白色
#ifndef WHITESKIN
#define F_BLACK 0    //前景黑色
#define F_LBLACK FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE    //前景灰色
#define F_WHITE FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY    //前景白色
#define F_LRED FOREGROUND_RED|FOREGROUND_INTENSITY      //前景浅红
#define F_LBLUE FOREGROUND_BLUE|FOREGROUND_INTENSITY        //前景浅蓝
#define F_LGREEN FOREGROUND_GREEN|FOREGROUND_INTENSITY      //前景浅绿
#define F_LBLUEGREEN FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY      //前景浅蓝绿
#define F_LPURPLE FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY       //前景浅紫
#define F_LYELLOW FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY    //前景浅黄
#define B_BLACK 0    //背景黑色
#define CORORSET
#else
#define F_BLACK FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY     //前景白
#define F_LBLACK FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE    //前景灰色
#define F_WHITE 0    //前景黑色
#define F_LRED FOREGROUND_RED       //前景红
#define F_LBLUE FOREGROUND_BLUE //前景蓝
#define F_LGREEN FOREGROUND_GREEN       //前景绿
#define F_LBLUEGREEN FOREGROUND_BLUE|FOREGROUND_GREEN       //前景蓝绿
#define F_LPURPLE FOREGROUND_RED|FOREGROUND_BLUE        //前景紫
#define F_LYELLOW FOREGROUND_RED|FOREGROUND_GREEN    //前景黄
#define B_BLACK BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE|BACKGROUND_INTENSITY    //背景白
#define CORORSET system("color f0")
#endif

//■□☆★●◎※①②③④⑤⑥⑦⑧⑨⑩┓┛━┗┏┫┣┻┳╋┃
#define UNDIG "■"
#define BLANK "□"
#define MINE "●"
#define MARKED "★"

COORD CC = { 0, 0 };
COORD tmpCC = { 0, 0 };
HANDLE hOut, hIn;
DWORD dwMode, nOER;
INPUT_RECORD inRecord;
SMALL_RECT rc;

struct rfMouse{
    int Button;     //1-left 2-right 3-mid
    COORD position;
} rfmouse;

int level[3][7] = {
    /*
    level[lv][0~1] w h
    level[lv][2] Number of Mine
    level[lv][3~4] RemnantMines (X,Y)
    level[lv][5~6] Restart    Back (X,Y)
    */
    { 8, 8, 10, 4, 12, 4, 14 },
    { 16, 
  • 18
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值