创天中文vc++6.0能运行的一百行代码的小游戏
扫雷游戏代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<graphics.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
#define Row 10 //行、列
#define COL 10
#define MINE 10 //雷的数量
#define SIZE 50 //图片宽度
@int map[ROW][COL];//全局变量自动初始化为0
【//定义图片数组,保存图片
IMAGE img[12];
//游戏胜利与否
int flag;
//游戏数据初始化
Ovoid GameInit()
mciSendString("open ./image/start.mp3 alias Bem", 0, 0, 0);
mciSendString("play BGM", 0, 0, 0):
//设置随机数种子
srand((unsigned)time(NULL));
//初始化数组
for (int i = 0; i < ROW;i++)
for (int j = 0; j < COL: j++)
map[il[jl= 0;
//埋雷,-1表示雷 10个雷
for (int i = 0; i < MINE;)
int r = rand() % 10;//0 9
int c= rand() % 10;
if (map[r][c]== 0)//还没有设置为雷
map[r][e]=-1;
i++;//每埋雷一次,就加1
时
//把以雷为中心的九宫格数据加1,雷除外
for (int i = 0; i < ROW;i++)
for (int j = 0;j < COL; j++)
//判断是不是雷-1
if(map[i][j]==-1)
//遍历雷所在的九宫格
for (int m = i - 1; m <= i + 1; m++)
国
园
for (int n = j - 1; n <= j + 1; n++)
if((m >= 0 && m <RoW && n >= 0 && n 〈CoL)&& map [ml[n]!=-1)
圈
map [m][n]+= 1;
为include中文
//加载图片
for (int i = 0; i < 12;i++)
char file[50]=“";
sprintf(file,"./image/Md. jpg", i);
1oadimage(&ing[i], file,SIZE, SIZE);
//加密格子
for (int i = 0; i <ROW; i++)
for (int j = 0; ji< COL;j++)
//map[i][ji]+= 20;
//绘制界面
Evoid GameDraw()
cleardevice();
for (int i = 0; i <ROW; i++)
for (int j= 0; j < COL; j++)
if(map[i][j]==-1)
putimage(j* SIXE, i * STZE, &ing[9]);//绘制雷
else if (map[i][j]>=0 && map[i][j]<=8)//把其他数字一并处理01 2 3 4 5 6 7 8
putimage(j * SIZE, i * SIZE, &img[map[i][j]]);
else if (map[i][j]>= 19 &A map[i][ji]<= 28)
putimage(j * SIZE, i * SIZE, &img[10]);
else if (map[i][jl>30)//标记
putimage(j * SIZE, i * SIZE,&img[11]);
void openNull(int row, int col);
//鼠标操作
gint
MouseContro1()
(MouseHitO)//判断有没有鼠标消息
MOUSEMSG msg = GetMouselsg();//鼠标所在的 x,y
int row = msg.y / SIZE;//把鼠标坐标转换成,数组下标
int col= msg.X / SI2E;
//对鼠标消息进行分发
switch (msg.ulisg)
case WM_LBUTTONDOWN://鼠标左键点击
if (map[row][col]>8)//如果没有打开就打开
mciSendString("close click", 0, 0, 0);
mciSendString("open ./image/click.wav alias click", 0, 0, 0):
mciSendString("play click", 0, 0, 0);
map[row][co1]-= 20;
flagtt;
openMul1(row, col);
break;
case WM_RBUTTONDOWN://鼠标右键点击
if (map[row][col]〉 8 && map[row][co1]<= 28)//如果没打开,且未被标记
map[row][col]+= 20;
else if(map[row][col]>28)//只有没打开的才可以取消标记和标记
map [row][col]-= 20;
break;
return map[row][col];
//打开所有以空白为中心的九宫格
日void openNul1(int row,int col)
if (map[row][col]== 0)//点击的是空白
for (int m= row - 1;m<= row + 1; mt+)
for (int n = col - 1; n <= col + 1; nt+)
if ((m >= 0 && m 〈 RoW && n >= 0 && n < COL) &&
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论