课程设计一共两个星期,扫雷要图形界面和鼠标,前一个星期基本啥也没看,合计学习下传说中的api啊~~MFC啊~~~结果都木有成功……

后来发现了easyX……好东西啊!(其实就是把TC的图形库graphics转到了vc中)……

书面文件一律瞎编……

上代码:

#####################################################################################################################

/#include<graphics.h>                                     //画图头文件
#include<conio.h>                                        //输入输出头文件
#define     USER_LBUTTONDOWN    101                      //宏定义鼠标左键
#define     USER_RBUTTONDOWN    102                      //宏定义鼠标右键
#define     USER_MBUTTONDOWN    103                      //宏定义鼠标滑轮
#pragma comment(lib,"Winmm.lib")                         //载入鼠标文件
#include<math.h>                                         //数学函数生成随机数
#include<memory.h>                                       //数组初始化
int a[50][50];                                           //数组雷
#include<time.h>                                         //计时
#include<stdio.h>                                        //_stprintf函数头文件
#include<string.h>                                       //字符串头文件
/
//全局变量///
time_t first, second;
TCHAR m_time[33];
int flag=0;
int shengyu;
int high,wide,leishu;
float n,mn,p,q,yy;
int biaoji;
char shenglei[5];
FILE *fp;
int nandu;
struct besttime
{char name[7];float time;char t[5];
}zuih[4];
/
/
int DispatchMessage(MOUSEMSG m, int opt);                //鼠标信息处理
void chuangkzh();                                        //窗口转换过程
int GetMessage(MOUSEMSG m);                              //获取鼠标信息
void kaishi();                                           //游戏开始界面
void kaishi2();                                          //中级界面开始
void kaishi3();                                          //高级界面开始
int chushi();                                            //游戏初始化菜单
int saolei();                                            //扫雷鼠标执行函数
int DispatchMessage2(MOUSEMSG m, int opt);               //游戏中鼠标处理
int saolz(MOUSEMSG m);                                   //扫雷中操作
void bulei();                                            //布雷函数
void panduan();                                          //判断是否为雷
int nanduxuanxiang();                                    //难度选项
int DispatchMessage3(MOUSEMSG m, int opt);               //鼠标信息处理(难度选项)
int zerodg(int x,int y);                                 //zero递归函数
void zuigaofen();                                        //最高分鼠标处理
//
//
//
//主函数
void main()
{FILE *fp;int duru=0;fp=fopen("best.dat","rb+");for(int i=0;i<4;i++)if(fread(&zuih[i],sizeof(besttime),1,fp)!=1&&duru!=1){duru=1;printf("file read error!\n");}elsecontinue;fclose(fp);if(duru!=1){initgraph(640,480);chushi();int opt,end=0;MOUSEMSG m;while(end!=1){m = GetMouseMsg();opt = GetMessage(m);end=DispatchMessage(m, opt);}setfont(80,0,"黑体");for(int i=0;i<20;i++){setcolor(WHITE);outtextxy(150,200,"再见");Sleep(25);setcolor(BLACK);outtextxy(150,200,"再见");Sleep(25);}mciSendString("stop mymusic", NULL, 0, NULL);mciSendString("close mymusic", NULL, 0, NULL);cleardevice();closegraph();}
}
///
//主菜单,选择难度
int chushi()
{initgraph(640,480);HCURSOR hcur = (HCURSOR)LoadImage(NULL, "c:\\鼠标.cur", IMAGE_CURSOR, 0, 0, LR_LOADFROMFILE);HWND hwnd = GetHWnd();                           // 获取绘图窗口句柄SetClassLong(hwnd, GCL_HCURSOR, (long)hcur); // 设置窗口类的鼠标样式setcolor(GREEN);setfont(80,0,"黑体");outtextxy(200,100,"扫  雷");setfont(30,0,"黑体");outtextxy(450,90,"R"); setcolor(WHITE);setfont(20,0,"黑体");outtextxy(270,250,"1、新游戏");outtextxy(270,280,"2、最高分");outtextxy(270,310,"3、选  项");outtextxy(270,340,"4、帮  助");outtextxy(270,370,"5、退  出");outtextxy(500,410,"by:zmq  zzh");outtextxy(500,440,"v:2.0");mciSendString("open 背景音乐.mp3 alias mymusic", NULL, 0, NULL);mciSendString("play mymusic", NULL, 0, NULL);return 0;
}
//
//游戏开始界面,生成格子,着色
void kaishi()
{bulei();biaoji=0;if(wide<=16){n=360/high;mn=360/wide;p=60+n*high;q=60+mn*wide;yy=0;}else{n=360/high;mn=360/16;yy=(wide-16)*mn;initgraph(640+yy,480);}p=60+n*high;q=60+mn*wide;shengyu=0;setlinestyle(PS_SOLID, NULL, 2);setcolor(BLUE);line(60,60,q,60);line(60,p,q,p);line(60,60,60,p);line(q,60,q,p);setfillstyle(RGB(0,0,150));floodfill(70,70,BLUE);setcolor(WHITE);for(float i=60;i<=p;i+=n)line(60,i,q,i);for(i=60;i<=q;i+=mn)line(i,60,i,p);setlinestyle(PS_SOLID, NULL, 10);setcolor(GREEN);line(500+yy,0,500+yy,480);setcolor(WHITE);setfont(20,0,"宋体");outtextxy(510+yy,100,"时  间:0");outtextxy(510+yy,200,"炸弹数:");outtextxy(530+yy,370,"左键开始");outtextxy(530+yy,410,"中键重玩");outtextxy(530+yy,450,"回主菜单");if(wide==9)outtextxy(590+yy,200,"10");if(wide==16)outtextxy(590+yy,200,"40");if(wide==30)outtextxy(590+yy,200,"99");saolei();}//鼠标信息处理(主菜单)
int DispatchMessage(MOUSEMSG m, int opt)
{switch(opt){case USER_LBUTTONDOWN:// 左键if(m.x>=270&&m.x<=370&&m.y>=250&&m.y<=270){flag=0;nandu=1;high=9;wide=9;leishu=10;chuangkzh();kaishi();return 0;}if(m.x>=270&&m.x<=370&&m.y>=280&&m.y<=300){flag=0;chuangkzh();setcolor(GREEN);setfont(25,0,"楷体");outtextxy(150,350,"返回主菜单            重置");setfont(25,0,"黑体");setcolor(WHITE);outtextxy(200,150,"初级:");outtextxy(200,200,"中级:");outtextxy(200,250,"高级:");outtextxy(270,150,zuih[1].name);outtextxy(270,200,zuih[2].name);outtextxy(270,250,zuih[3].name);outtextxy(400,150,zuih[1].t);outtextxy(400,200,zuih[2].t);outtextxy(400,250,zuih[3].t);zuigaofen();}if(m.x>=270&&m.x<=370&&m.y>=310&&m.y<=330){chuangkzh();setcolor(RED);setfont(30,0,"黑体");outtextxy(180,80,"一、初级【 9x 9】");outtextxy(180,180,"二、中级【16x16】");outtextxy(180,280,"三、高级【16x30】");outtextxy(220,380,"返回主菜单");nanduxuanxiang();return 0;}if(m.x>=270&&m.x<=370&&m.y>=340&&m.y<=360){chuangkzh();setbkmode(TRANSPARENT);setfillstyle(WHITE);floodfill(15,15,WHITE);setcolor(BLUE);setfont(50,0,"黑体");outtextxy(245,50,"帮  助");setcolor(BLACK);setfont(20,0,"楷体");outtextxy(120,130,"1、请将《鼠标.cur》文件复制到c盘根目录下");outtextxy(120,160,"   再进行游戏,否则可能会影响鼠标效果。");outtextxy(120,190,"2、请将《背景音乐.mp3》同游戏的应用程");outtextxy(120,220,"   序员放在一起。可自己更改背景音乐(将音");outtextxy(120,250,"   乐改名后更换背景音乐即可)。");outtextxy(120,280,"3、游戏时请勿点击白色表格区域,否则可能会");outtextxy(120,310,"   导致失败等不确定情况。");outtextxy(120,340,"4、新手初次编程,游戏中存在漏洞请谅解。");outtextxy(120,370,"5、如有疑问可发送邮件到aszmq@163.com。");setcolor(YELLOW);setfont(40,0,"黑体");outtextxy(270,420,"游戏适度 沉溺伤身");setcolor(RED);setfont(40,0,"隶书");outtextxy(50,420,"返回");setbkmode(OPAQUE);int opt,tiaochu=0;MOUSEMSG m;while(1){m = GetMouseMsg();opt = GetMessage(m);if(opt==USER_LBUTTONDOWN)if(m.x>=50&&m.x<=130&&m.y<=460&&m.y>=420){chuangkzh();main();}}  }if(m.x>=270&&m.x<=370&&m.y>=370&&m.y<=390){chuangkzh();return 1;}break;}
return 0;
}
//
//难度选项
int nanduxuanxiang()
{int opt,end=0;MOUSEMSG m;while(end!=1){m = GetMouseMsg();opt = GetMessage(m);end=DispatchMessage3(m, opt);}
return 0;
}
///
//鼠标信息处理(最高分)
void zuigaofen()
{int opt,end=0;MOUSEMSG m;while(end!=1){m = GetMouseMsg();opt = GetMessage(m);if(opt==USER_LBUTTONDOWN){if(m.x>=150&&m.x<=275&&m.y<=375&&m.y>=350){chuangkzh();main();}if(m.x>=435&&m.x<=485&&m.y<=375&&m.y>=350){strcpy(zuih[1].name,"wu");strcpy(zuih[1].t,"999");zuih[1].time=999;strcpy(zuih[2].name,"wu");strcpy(zuih[2].t,"999");zuih[2].time=999;strcpy(zuih[3].name,"wu");strcpy(zuih[3].t,"999");zuih[3].time=999;fp=fopen("best.dat","rb+");for(int i=0;i<4;i++)if(fwrite(&zuih[i],sizeof(besttime),1,fp)!=1)printf("file write error!\n");fclose(fp);chuangkzh();zuigaofen();}elsezuigaofen();}elsezuigaofen();}
}
///
//鼠标处理信息(难度选项)
int DispatchMessage3(MOUSEMSG m, int opt)
{switch(opt){case USER_LBUTTONDOWN:// 左键if(m.x>=180&&m.x<=400&&m.y>=80&&m.y<=110){nandu=1;high=9;wide=9;leishu=10;chuangkzh();kaishi();return 1;}if(m.x>=180&&m.x<=400&&m.y>=180&&m.y<=210){nandu=2;high=16;wide=16;leishu=40;chuangkzh();kaishi();return 1;}if(m.x>=180&&m.x<=400&&m.y>=280&&m.y<=310){nandu=3;high=16;wide=30;leishu=99;chuangkzh();kaishi();return 1;}if(m.x>=220&&m.x<=420&&m.y>=380&&m.y<=410){chuangkzh();main();return 0;}}
}///
//鼠标信息处理(游戏中)
int DispatchMessage2(MOUSEMSG m, int opt)
{switch(opt){case USER_LBUTTONDOWN:// 左键if(m.x>=530+yy&&m.x<=610+yy&&m.y>=450&&m.y<=470){flag=0;chuangkzh();main();}if(m.x>=60&&m.x<=420+yy&&m.y>=60&&m.y<=420){if(flag==0){first=time(NULL);flag=1;}saolz(m);}break;case USER_MBUTTONDOWN:// 中键if(flag==0){first=time(NULL);flag=1;}if(flag==1){second=time(NULL);_stprintf(m_time, _T("%.0lf"), difftime(second,first));setfont(20,0,"黑体");outtextxy(590+yy,100,m_time);if(leishu-biaoji<10&&leishu-biaoji>=0){shenglei[0]=' ';_stprintf(shenglei+1, _T("%d"), leishu-biaoji);}else{_stprintf(shenglei, _T("%d"), leishu-biaoji);}outtextxy(590+yy,200,shenglei);}chuangkzh();kaishi();return 1;break;case USER_RBUTTONDOWN:int x,y;x=(m.x-60)/n+1;y=(m.y-60)/mn+1;if(m.x>=60&&m.x<=420+yy&&m.y>=60&&m.y<=420)if(a[x][y]!=-1){setfillstyle(RED);floodfill(m.x,m.y,WHITE);biaoji++;}saolei();break;}
}//
//窗口变化的简单动画效果
void chuangkzh()
{int lr=0;int i=0,j=640+yy;setlinestyle(PS_SOLID, NULL, 5);while(i!=j){setcolor(WHITE);line(i+5,0,i+5,480);setcolor(BLACK);line(i,0,i,480);Sleep(2);setcolor(WHITE);line(j-5,0,j-5,480);setcolor(BLACK);line(j,0,j,480);Sleep(8);i++;j--;}setcolor(BLACK);line(j+6,0,j+6,480);line(i-4,0,i-4,480);setlinestyle(PS_SOLID, NULL, 1);
}///
// 获取鼠标信息
int GetMessage(MOUSEMSG m)
{//鼠标循环switch(m.uMsg){case WM_LBUTTONDOWN:return USER_LBUTTONDOWN;case WM_RBUTTONDOWN:return USER_RBUTTONDOWN;case WM_MBUTTONDOWN:return USER_MBUTTONDOWN;default:if(flag==1){second=time(NULL);_stprintf(m_time, _T("%.0lf"), difftime(second,first));setfont(20,0,"黑体");outtextxy(590+yy,100,m_time);if(leishu-biaoji<10&&leishu-biaoji>=0){shenglei[0]=' ';_stprintf(shenglei+1, _T("%d"), leishu-biaoji);}else{_stprintf(shenglei, _T("%d"), leishu-biaoji);}outtextxy(590+yy,200,shenglei);}break;}return 0;
}/
//布雷函数
void bulei()
{int x,y;memset(a,0,sizeof(a));srand( (unsigned)time( NULL )*5 );for(int i=1;i<=leishu;i++){x=rand()%wide+1;y=rand()%high+1;if(a[x][y]!=0){i--;continue;}elsea[x][y]=1000;}for(i=1;i<=wide;i++)for(int j=1;j<=high;j++){if(a[i][j]==1000)continue;else{a[i][j]=a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1];a[i][j]/=1000;}}}/
//判断是否为雷函数
void panduan()
{   int C=255;char s[10];zuih[0].time=difftime(second,first);setfont(150,0,"黑体");if(shengyu==high*wide-leishu){chuangkzh();for(int i=0;i<128;i++){setcolor(RGB(C,0,0));outtextxy(170+yy/2,200,"胜利");C-=8;if(C<=0)C=255;Sleep(20);}if(zuih[0].time<zuih[nandu].time)InputBox(zuih[0].name,8,"最高分\n输入用户名※英文字母※");strcpy(zuih[nandu].name,zuih[0].name);zuih[nandu].time=zuih[0].time;_stprintf(zuih[nandu].t, _T("%.0lf"), zuih[nandu].time);fp=fopen("best.dat","rb+");fseek(fp,nandu*sizeof(besttime),0);fwrite(&zuih[nandu],sizeof(besttime),1,fp);fclose(fp);flag=0;chuangkzh();kaishi();}else{chuangkzh();for(int i=0;i<128;i++){setcolor(RGB(C,0,0));outtextxy(170+yy/2,200,"失败");C-=8;if(C<=0)C=255;Sleep(20);}flag=0;chuangkzh();kaishi();}
}//
//扫雷执行函数
int saolei()
{if(shengyu==high*wide-leishu)panduan();int opt,end=0;MOUSEMSG m;while(1){if(flag==1){second=time(NULL);_stprintf(m_time, _T("%.0lf"), difftime(second,first));setfont(20,0,"黑体");outtextxy(590+yy,100,m_time);if(leishu-biaoji<10&&leishu-biaoji>=0){shenglei[0]=' ';_stprintf(shenglei+1, _T("%d"), leishu-biaoji);}else{_stprintf(shenglei, _T("%d"), leishu-biaoji);}outtextxy(590+yy,200,shenglei);}if(MouseHit()){while(end!=1){m = GetMouseMsg();int x,y;x=(m.x-60)/n+1;y=(m.y-60)/mn+1;if(a[x][y]==-1)saolei();opt = GetMessage(m);end=DispatchMessage2(m, opt);}}}
return 0;
}///
//扫雷中操作
int saolz(MOUSEMSG m)
{int x,y,zero=0;int x1,y1;x=(m.x-60)/n+1;y=(m.y-60)/mn+1;if(a[x][y]==-1)saolei();setfillstyle(BLACK);floodfill((x-1)*n+63,(y-1)*mn+63,WHITE);setfont(n-2,0,"黑体");switch(a[x][y]){case 0:a[x][y]=-1;shengyu++;zerodg(x,y);break;case 1:setcolor(WHITE);outtextxy((x-1)*n+60+n/4,(y-1)*mn+61,"1");shengyu++;break;case 2:setcolor(WHITE);outtextxy((x-1)*n+60+n/4,(y-1)*mn+61,"2");shengyu++;break;case 3:setcolor(WHITE);outtextxy((x-1)*n+60+n/4,(y-1)*mn+61,"3");shengyu++;break;case 4:setcolor(WHITE);outtextxy((x-1)*n+60+n/4,(y-1)*mn+61,"4");shengyu++;break;case 5:setcolor(WHITE);outtextxy((x-1)*n+60+n/4,(y-1)*mn+61,"5");shengyu++;break;case 6:setcolor(WHITE);outtextxy((x-1)*n+60+n/4,(y-1)*mn+61,"6");shengyu++;break;case 7:setcolor(WHITE);outtextxy((x-1)*n+60+n/4,(y-1)*mn+61,"7");shengyu++;break;case 8:setcolor(WHITE);outtextxy((x-1)*n+60+n/4,(y-1)*mn+61,"8");shengyu++;break;default:setfillstyle(RED);floodfill(m.x,m.y,WHITE);panduan();break;}a[x][y]=-1;saolei();return 0;
}//zero递归
int zerodg(int x,int y)
{for(int j=y-1;j<y+2;j++)for(int i=x-1;i<x+2;i++)if(i==x&&j==y||j<1||i<1||i>wide||j>high)continue;else{//Sleep(50);setfillstyle(BLACK);floodfill((i-1)*n+63,(j-1)*mn+63,WHITE);switch(a[i][j]){case 0:a[i][j]=-1;shengyu++;zerodg(i,j);break;case 1:setcolor(WHITE);outtextxy((i-1)*n+60+n/4,(j-1)*mn+61,"1");shengyu++;break;case 2:setcolor(WHITE);outtextxy((i-1)*n+60+n/4,(j-1)*mn+61,"2");shengyu++;break;case 3:setcolor(WHITE);outtextxy((i-1)*n+60+n/4,(j-1)*mn+61,"3");shengyu++;break;case 4:setcolor(WHITE);outtextxy((i-1)*n+60+n/4,(j-1)*mn+61,"4");shengyu++;break;case 5:setcolor(WHITE);outtextxy((i-1)*n+60+n/4,(j-1)*mn+61,"5");shengyu++;break;case 6:setcolor(WHITE);outtextxy((i-1)*n+60+n/4,(j-1)*mn+61,"6");shengyu++;break;case 7:setcolor(WHITE);outtextxy((i-1)*n+60+n/4,(j-1)*mn+61,"7");shengyu++;break;case 8:setcolor(WHITE);outtextxy((i-1)*n+60+n/4,(j-1)*mn+61,"8");shengyu++;break;case -1:break;}a[i][j]=-1;}return 0;
}

课程设计一共两个星期,扫雷要图形界面和鼠标,前一个星期基本啥也没看,合计学习下传说中的api啊~~MFC啊~~~结果都木有成功……

后来发现了easyX……好东西啊!(其实就是把TC的图形库graphics转到了vc中)……

课程设计扫雷(c语言)相关推荐

  1. 扫雷java讲解_java课程设计(扫雷游戏)讲解.doc

    java课程设计(扫雷游戏)讲解.doc 成 绩 评 定 表 学生姓名班级学号 专 业课程设计题目基于Java的扫雷游戏软件设计评 语 组长签字: 成绩 日期 2014 年 月 日 课程设计任务书 学 ...

  2. c语言链表p-%3enext,课程设计报告.c语言程序设计.pdf

    课程设计报告.c语言程序设计 学生成绩管理 C语言课程设计报告 学 院 _信息学院_ 专 业 软件工程 班 级 _ _ 学 号 姓 名 课 题 _C语言课程设计_ 指导教师 __ 杨老师 _ 报告成绩 ...

  3. FPGA课程设计使用VHDL语言

    下面是FPGA的课程设计 使用VHDL语言,有程序和报告

  4. dsp课程设计c语言源码,DSP课程设计-基于C语言实现256点的FFT精选.pdf

    DSP课程设计-基于C语言实现256点的FFT精选 XX 大学 J1111111 UNIVERSITY DSP 课 程 设 计 基于CCS 的FFT 算法的C 语言实现和验证 学院名称: 专业班级: ...

  5. c语言编写万年历课程设计,用C语言编写万年历 C课程设计.pdf

    用C语言编写万年历 C课程设计 用用 C++语言编写万年历语言编写万年历 用用 语言编写万年历语言编写万年历 学生姓名:学生姓名: 指导老师:指导老师: 学生姓名学生姓名:: 指导老师指导老师:: 摘 ...

  6. 计算机程序设计基础课程设计(C语言)[2023-02-28]

    计算机程序设计基础课程设计(C语言)[2023-02-28] 计算机程序设计基础课程设计(C语言) 设计任务书 指导专业:机械电子工程 指导教师:高峰 仲惟燕 机械电子工程学院 二〇二二年十二月 &l ...

  7. 基于c语言单片机秒表课程设计,基于c语言单片机秒表课程设计要点.doc

    课程设计报告 课程名称:单片机原理及应用 报告题目:秒表 学生姓名: 所在学院:信息科学与工程学院 专业班级: 学生学号: 指导教师: 2013 年 12 月 25 日 课程设计任务书 报告题目秒表完 ...

  8. 计算机专业课程设计报告c语言,计算机程序设计(C语言)课程设计报告.doc

    计算机程序设计(C语言)课程设计报告.doc 计算机程序设计C语言课程设计报告题目电子动画时钟 学院 机电工程学院专业 班级090109班学号 姓名 指导教师 设计日期 一.概述选题背景 随着社会的进 ...

  9. c语言课程设计2018,C语言课程设计报告(2018)——学生管理系统(17页)-原创力文档...

    兰州交通大学博文学院 <C语言程序设计> 课 程 设 计 报 告 系 别: 交通运输系 班 级: 16交通运输(3)班 姓 名: 学 号: 指导老师: 2018年1月5日 兰州交通大学博文 ...

最新文章

  1. Android消息机制Handler用法
  2. NEU 1040 Count
  3. linux下删除有锁的文件夹,Linux 文件夹右下角有锁,解锁
  4. 用vue.js写的一个瀑布流的组件
  5. 字符串 hash 唯一数字_【数字课堂】酒妹带你了解“身份认证技术”
  6. 单值二叉树:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。
  7. document.referrer已经可以用于统计搜索来源
  8. 11个炫酷的Linux终端命令大全
  9. 服务器系统2003资源监视器在哪里,Win10资源监视器在哪 如何打开资源监视器
  10. 计算机网络(一)图解:计算机网络五层体系结构
  11. Linux#使用ll命令
  12. 联想服务器能够上固态硬盘吗,拯救我的台式机:Lenovo 联想 固态硬盘 入手记
  13. MATLAB---制作动画并演示
  14. Windows下常用网络命令
  15. 从人力资源管理的角度看孙悟空大闹天宫
  16. Http请求状态码:905
  17. Android Architecture(Is Activity God?)
  18. 关于STM32中SPI硬件的NSS配置
  19. 研究生常用的几种风险评估方法-专家调查法、蒙特卡洛模拟法、计划评审技术、敏感性分析法、决策树法、影响图法、模糊综合评价方法
  20. Linux下Awk详解(转载)

热门文章

  1. 竞争性关键词推荐算法设计(中南大学电子商务课程实践)
  2. 【软件工具】服务器硬件资源监控
  3. framework是什么东西?
  4. 美国最极端的经典教育
  5. 【自考】网络经济与企业管理(一)——泛读
  6. 通过Ajax批量上传图片(springboot)
  7. python集合操作 读取_对python读写文件去重、RE、set的使用详解
  8. jpa dialect设置
  9. S5CL:通过分层对比学习统一全监督、自监督和半监督学习
  10. nc63,nc65,ncc1811,ncc1903,ncc1909,ncc2005,ncc202111勒索病毒安全补丁