求一份扫雷的用c语言编写扫雷代码.....自己编的...用c语言编写扫雷大神在哪里

扫雷游戏 c语言_百度知道
扫雷游戏 c语言
。,感激不尽。我只有10财富值、。,请不要嫌弃,需要一个c语言的扫雷游戏,要求能在win7环境下运行,本人有win-Tc
关于c++的代码最好没有,如果必须最好少一点,dos界面下的就不用了。如果那位大神能够急人所难本人学生一个
我有更好的答案
&//&&&&&&&WINDOW_STYLES&=&&&&&&&&&nbsp.lib&)&&&&&&&&&int&MAX_HEIGHT&&&&=&&&|&WS_CAPTION;&&窗口风格const&int&&&&&&&&CommCtrl.h&&&&&&int&FLAF_NULL&//&&&&&&&//&&&FLAF_MINE&&&&&=&MAX_WIDTH&&&&&=&&FLAG_OVERT&int&FLAG_CAVEAT&{ HINSTANCE&hI&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&应用程序句柄实例 HWND&hW&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&主窗口句柄 HWND&B&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&重新开始按钮句柄 HWND&lB&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&左边剩余地雷按钮 HWND&rB&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&右边时间显示按钮}&Wstatic&struct&{ HWND&&&&hWnd&[MAX_WIDTH][MAX_HEIGHT];&&&&&&&&&//&雷区按钮句柄 WNDPROC&P&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&按钮原来消息处理函数地址 int&&&&&Code&[MAX_WIDTH][MAX_HEIGHT];&&&&&&&&&//&存储数据 int&&&&&Flag&[MAX_WIDTH][MAX_HEIGHT];&&&&&&&&&//&用户标记}MineFstatic&struct&{ int&W&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&雷区宽度 int&H&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&雷区高度 int&CellN&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&剩下的安全格子数量 int&Rated_MineN&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&额定地雷数量 int&MineN&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&剩余地雷数量 int&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&时间 bool&timeOn;}Gvoid&toString(int&val,&char*&string,&int&StringLen)&{&&&&&&&&&&&&&&&&&&&&&&&&//&整数转换文本,本程序使用Unicode字符集,字符串长度需要大于2 char&str&[32]; int&&i&=&0; if&(StringLen&&&2) {
} _itoa_s(val,&str,&10); while&((i&&&32)&&&&(i&&&(StringLen&/&2&-&1)))&{
string&[i&*&2]&=&str&[i];
string&[i&*&2&+&1]&=&0;
i&++; } string&[i]&=&string&[i&+&1]&=&0;}int&GetMineNum(int&x,&int&y)&&&&&&//&寻找周围地雷的数目{ int&i,&j,&a,&b,&num&=&0; for&(i&=&-1;&i&&&2;&i++)&{
for&(j&=&-1;&j&&&2;&j++)&{
a&=&x&+&i;
b&=&y&+&j;
if&((a&&&-1)&&&&(b&&&-1)&&&&(a&&&Game.Width)&&&&(b&&&Game.Height))&{
if&(MineField.Code&[a][b]&==&FLAF_MINE) {
} } return&}void&NewGame(void)&//&新游戏{ int&i,&j; char&text[32]; //&清空数组 for&(i&=&0;&i&&&Game.W&i++)&{
for&(j&=&0;&j&&&Game.H&j++)&{
MineField.Flag&[i][j]&=&FLAF_NULL;
MineField.Code&[i][j]&=&0;
SetWindowText(MineField.hWnd&[i][j],&L&&&);
} } //&埋放地雷 srand(GetTickCount());&&&&&&&&&&&&&&&&&&&&&&&&&&//&使用系统时间作为随机数种子 for&(int&k&=&0;&k&&&Game.Rated_MineN&k++)&{
i&=&rand()&%&Game.W
j&=&rand()&%&Game.H
if&(MineField.Code&[i][j]&==&FLAF_MINE) {
k&--;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&已经有地雷,埋放失败
&&&&MineField.Code&[i][j]&=&FLAF_MINE;
} } //&设置数字&显示周围地雷数量 for&(i&=&0;&i&&&Game.W&i++)&{
for&(j&=&0;&j&&&Game.H&j++)&{
if&(MineField.Code&[i][j]&!=&FLAF_MINE) {
MineField.Code&[i][j]&=&GetMineNum(i,&j);
} } toString(Game.Rated_MineNum,&text,&32); SetWindowText(Win.lButton,&(LPCTSTR)&text); SetWindowText(Win.rButton,&L&0&); SetWindowText(Win.Button,&L&∩_∩&); Game.time&=&0; Game.timeOn&=& Game.MineNum&=&Game.Rated_MineN Game.CellNum&=&Game.Width&*&Game.Height&-&Game.Rated_MineN}void&OvertMine(void)&//&显示地雷{ char&text[6],& Game.timeOn&=& for&(int&i&=&0;&i&&&Game.W&i++)&{
for&(int&j&=&0;&j&&&Game.H&j++)&{
num&=&MineField.Code&[i][j];
toString(num,&text,&6);
SetWindowText(MineField.hWnd&[i][j],&num&==&FLAF_MINE&?&L&雷&&:&(LPCTSTR)&text);
} }}//&雷区按键处理void&MineSub(int&x,&int&y,&bool&LButton&=&true)&{ int&i,&j,&N char&text[32]; //&坐标范围检查 if&((x&&&0)&||&(x&&=&Game.Width)&||
(y&&&0)&||&(y&&=&Game.Height))&{
} Num&=&MineField.Code&[x][y]; if&(LButton)&{
if&((MineField.Flag&[x][y]&==&FLAG_CAVEAT)&||
&MineField.Flag&[x][y]&==&FLAG_OVERT)&{
Game.timeOn&=&
MineField.Flag&[x][y]&=&FLAG_OVERT;
if&(Num&==&FLAF_MINE)&{
OvertMine();
SetWindowText(Win.Button,&L&&_&&);
MessageBox(Win.hWnd,&L&您踩到地雷啦,哈哈&,&L&您输了&,&0);
NewGame();
toString(Num,&text,&6);
SetWindowText(MineField.hWnd&[x][y],&(LPCTSTR)&text);
Game.CellNum&--;
if&(Game.CellNum&==&0)&{
OvertMine();
MessageBox(Win.hWnd,&L&恭喜你过关!&,&L&过关&,&0);
NewGame();
if&(Num&==&0)&{
for&(i&=&-1;&i&&&2;&i++)&{
for&(j&=&-1;&j&&&2;&j++)&{
if&(Game.timeOn)&{&&&&&&&&&//&递归函数在重新开始后可能进入死循环
MineSub(x&+&i,&y&+&j);
i&=&MineField.Flag&[x][y];
if&(i&!=&FLAG_OVERT)&{
if&(i&==&FLAG_CAVEAT)&{
Game.MineNum&++;
i&=&(i&+&1)&%&3;
MineField.Flag&[x][y]&=&i;
SetWindowText(MineField.hWnd&[x][y],
&&&&&&&&&&i&==&FLAF_NULL&?&L&&&&:&i&==&FLAG_CAVEAT&?&L&×&&:&L&?&);
if&(i&==&FLAG_CAVEAT)&{
Game.MineNum&--;
toString(Game.MineNum,&text,&32);
SetWindowText(Win.lButton,&(LPCTSTR)&text);
} }}//&雷区按钮事件捕捉过程static&LRESULT&CALLBACK&MineFieldProc(HWND&hWnd,&UINT&uMsg,&WPARAM&wParam,&LPARAM&lParam)&{ int&x&=&0,&y&=&0,&i,&j;
for&(i&=&0;&i&&&Game.W&i++)&{
for&(j&=&0;&j&&&Game.H&j++)&{
if&(MineField.hWnd&[i][j]&==&hWnd)&{
} } switch(uMsg)&{ case&WM_RBUTTONDOWN:&&&&&&&&&&&&&&&//&鼠标右键按下
MineSub(x,&y,&false);
case&WM_KEYDOWN:&&&&&&&&&&&&&&&&&&//&键盘按键事件
switch(wParam)&{
case&VK_UP:&&&&&&&&&&&&&&&&&&&//&上
y&=&y&&&0&?&y&-&1&:&0;
case&VK_DOWN:&&&&&&&&&&&&&&&&&//&下
y&=&y&&&(Game.Height&-&1)&?&y&+&1&:&Game.Height&-&1;
case&VK_LEFT:&&&&&&&&&&&&&&&&&//&左
x&=&x&&&0&?&x&-&1&:&0;
case&VK_RIGHT:&&&&&&&&&&&&&&&&//&右
x&=&x&&&(Game.Width&-&1)&?&x&+&1&:&Game.Width&-&1;
SetFocus(MineField.hWnd&[x][y]);&//&设置焦点控件 } return&CallWindowProc(MineField.Proc,&hWnd,&uMsg,&wParam,&lParam);}//&窗体事件捕捉过程static&LRESULT&CALLBACK&WndProc(HWND&hWnd,&UINT&uMsg,&WPARAM&wParam,&LPARAM&lParam)&{ int&id,& char&text[32]; switch&(uMsg)&{ case&WM_TIMER:
if&(Game.timeOn)&{
Game.time&++;
toString(Game.time,&text,&32);
SetWindowText(Win.rButton,&(LPCTSTR)&text);
case&WM_COMMAND:&&&&&&&&&&&&&&//&按钮发送的消息
id&=&LOWORD(wParam);&&&&&&//&获取按钮编号
msg&=&HIWORD(wParam);&&&&&//&获取消息值
if&(msg&==&BN_CLICKED)&{&&//&单击消息
&&&if&((HWND)&lParam&==&Win.Button)&{
&&&NewGame();
}else&if&(((HWND)lParam&!=&Win.lButton)&&&&((HWND)lParam&!=&Win.rButton))&{
MineSub(id&&&255,&id&&&&8);
case&WM_DESTROY: &&&&&&&&&&//&退出
PostQuitMessage(0);
default: &&&&&&&& &&&&&&//&其他事件
return&DefWindowProc(hWnd,&uMsg,&wParam,&lParam); } return&FALSE;}//&入口过程int&WINAPI&WinMain(HINSTANCE&hInstance,&HINSTANCE&hPrevInstance,&LPSTR&lpCmdLine,&int&nCmdShow){ int&w,&h; char&text[32]; MSG& WNDCLASSEX& RECT&
//&初始化全局变量 Win.hInst&=&hI Game.Width&=&15; Game.Height&=&10; Game.Rated_MineNum&=&15; InitCommonControls();&&&//&初始化通用组件库 //&设置窗口 wce.cbSize&=&sizeof(WNDCLASSEX); wce.style&=&0; wce.lpfnWndProc&=&(WNDPROC)&WndP wce.cbClsExtra&=&wce.cbWndExtra&=&0; wce.hInstance&=&hI wce.hIcon&=&LoadIcon(NULL,IDI_APPLICATION);&//&窗口的最小化图标为默认图标 wce.hCursor&=&LoadCursor(NULL,IDC_ARROW);&&&//&窗口采用箭头光标 wce.hbrBackground&=&(HBRUSH)&(COLOR_BTNFACE&+&1); wce.lpszMenuName&=&NULL;& wce.lpszClassName&=&L&Window&; wce.hIconSm&=&LoadIcon(NULL,&IDI_APPLICATION); RegisterClassEx(&wce); //&打开窗口 Win.hWnd&=&CreateWindow(L&Window&,&L&扫雷&,&WINDOW_STYLES,&CW_USEDEFAULT,&
CW_USEDEFAULT,&100,&100,&NULL,&NULL,&hInstance,&NULL); if&(Win.hWnd&==&NULL)&{
return&-1; } ShowWindow(Win.hWnd,&nCmdShow); //&调整客户区大小 GetWindowRect(Win.hWnd,&&rect); rect.right&=&rect.left&+&Game.Width&*&CELL_SIZE; rect.bottom&=&rect.top&+&(Game.Height&+&2)&*&CELL_SIZE; AdjustWindowRect(&rect,&WINDOW_STYLES,&FALSE);&&&&//&根据客户区大小计算窗口大小 w&=&rect.right&-&rect.&&&&&&&&&&&&&&&&&&&&&&&//&宽度&20*25&应该是&大于500 h&=&rect.bottom&-&rect.&&&&&&&&&&&&&&&&&&&&&&&//&高度&15*25&应该是&大于375 MoveWindow(Win.hWnd,&rect.left,&rect.top,&w,&h,&TRUE); toString(Game.Rated_MineNum,&text,&32); Win.lButton&=&CreateWindow(L&Button&,&(LPCTSTR)&text,&WS_CHILD&|&WS_VISIBLE,&10,&5,
CELL_SIZE&*&2,&CELL_SIZE&*&2&-&10,&Win.hWnd,&0,&hInstance,&NULL); Win.Button&=&CreateWindow(L&Button&,&L&∩_∩&,&WS_CHILD&|&WS_VISIBLE,&(Game.Width&-&2)&/&2&*&CELL_SIZE,
5,&CELL_SIZE&*&2,&CELL_SIZE&*&2&-&10,&Win.hWnd,&0,&hInstance,&NULL); Win.rButton&=&CreateWindow(L&Button&,&L&0&,&WS_CHILD&|&WS_VISIBLE,&(Game.Width&-&2)&*&CELL_SIZE&-&5,
5,&CELL_SIZE&*&2,&CELL_SIZE&*&2&-&10,&Win.hWnd,&0,&hInstance,&NULL); if&((Win.lButton&==&NULL)&||&(Win.Button&==&NULL)&||&(Win.rButton&==&NULL)) {
return&-1; } SetTimer(Win.hWnd,&0,&1000,&NULL);&&//&设置时钟 //&创建按钮,成为雷区 for&(int&y&=&0;&y&&&Game.H&y++)&{
for&(int&x&=&0;&x&&&Game.W&x++)&{
MineField.hWnd&[x][y]&=&CreateWindow(L&Button&,&L&&&,&WS_CHILD&|&WS_VISIBLE,
x&*&CELL_SIZE,&(y&+&2)*&CELL_SIZE,&CELL_SIZE,&CELL_SIZE,&Win.hWnd,&
(HMENU)(y&*&256&+&x),&hInstance,&NULL);
if&(MineField.hWnd&[x][y]&==&NULL)&{
return&-1;
}&&&//&end&if
//&改变按钮消息接收函数地址,在此之前,记录原地址
MineField.Proc&=&(WNDPROC)GetWindowLong(MineField.hWnd&[x][y],&GWL_WNDPROC);
SetWindowLong(MineField.hWnd&[x][y],&GWL_WNDPROC,&(LONG)MineFieldProc);
}&&&//&next&x }&&&//&next&y NewGame(); SetFocus(MineField.hWnd&[0][0]); //&接收消息 while&(GetMessage(&msg,&NULL,&0,&0))&{
TranslateMessage(&msg);
DispatchMessage(&msg); } return&msg.wP}代码很乱,将就看吧;//&&&常量const&int&&&&&&&&&&int&FLAG_QUERY&&&&=&用于InitCommonControls//&&int&CELL_SIZE&&&&&&&&=&1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&警告标记const&&&25;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&雷区最大高度const&&&&&&&&&&&&WS_SYSMENU&&&疑问标记const&int&格子大小//&&&&&struct&&格子无标记const&&&=&0;&&&&&&
&&&&&&&&&&-1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&地雷标记const&nbsp#include&&windows.h&#include&//&&&&&=&3;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&已经打开的格子标记const&int&&&2;&&&&全局变量static&WS_OVERLAPPED&|&&&&30;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&雷区最大宽度const&&&用于InitCommonControls#pragma&comment(lib,&&comctl32;//&&=&25;&&&&&&lt
采纳率:66%
10块钱都没人搞 真心话
c语言编写gui界面程序???开玩笑么
首先我是一个小白,我刚才还百度了一下gui界面是什么,不过我同学自己用C语言遍了一个贪吃蛇出来,不是doc界面哦。
你同学可能用的mfc,或者也想上面那样用win32写的,调用api图形库函数,设计窗口注册窗口什么的,你要单纯用c写,绝对不可能,要写出来的话,你已经进微软了
为您推荐:
其他类似问题
扫雷游戏的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。请问您有C语言编一个9*9的扫雷游戏程序么?_百度知道
请问您有C语言编一个9*9的扫雷游戏程序么?
可以把代码发给我么
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏10(财富值+成长值)
我有更好的答案
百度,或者CSDN里面有资源
为您推荐:
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。21ic官方微信 -->
最新搜索:
您现在的位置是: > > >
推荐星级:
c语言编写的扫雷游戏
c语言编写的一个扫雷游戏,设计非常独到。而且注释明了。方便阅读。
部分文件列表
c语言小游戏代码-扫雷代码.doc
该用户分享的资料
已有 238809 个资源
预算:¥30000
预算:小于¥10000
预算:小于¥10000
预算:¥50505
预算:¥60000}

我要回帖

更多关于 c语言编程扫雷 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信