没有合适的资源?快使用搜索试试~ 我知道了~
Win-Tc(C语言)小游戏编程实例(扫雷游戏升级版).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 100 浏览量
2022-12-17
14:44:03
上传
评论
收藏 322KB PDF 举报
温馨提示
试读
23页
..
资源推荐
资源详情
资源评论
Win-Tc (C 语言) 小游戏编程实例(扫雷游戏升级版)
扫雷游戏的游戏界面采用 3D 窗体显示,用鼠标操作实现整个游戏过程。
图1、3D 窗体扫雷游戏界面 图2、游戏中打开非雷方块
游戏规则
游戏开始时,系统会在布雷区小方块中随机设置游戏级别中规则的雷体个数。布好雷后系统
会在非雷方块中填上表示其周围8个方块中有多少雷体的数字,(如图2所示)。玩家用鼠标
左键点开布雷区方块后开始计时,玩家可根据非雷方块中数字正确判断打开所有非雷方块
后,游戏胜利结束,系统会自动打开所有雷方块,并显示胜利会话框。在游戏过程中,如果
提前打开雷方块则立即失败,游戏结束(如图3所示)。游戏计时为 999 秒,如果时间到了
系统会自动结束游戏。
图 3、提前打开雷方块 图 4、打开 Game 按钮子菜单
Game 按钮单击事件
鼠标左键单击 Game 按钮会打开如图4所示的子程序选择会话框,玩家可选择5种功能中的
某一项来实现某种功能。5种功能分别如下所示:
BEGIN 按钮―――――――开局(重新开始)
PRIMARY 按钮―――――――初级(级别)
INTERMEDIATE―――――――中级(级别)
HIGH 按钮――――――――――高级(级别)
EXIT――――――――――――-返回操作系统(退出应用程序)
程序基本流程如下:
开始――调用鼠标程序(如果调用失败退出)――创建并显示窗体――布雷(初始化设
置)――游戏(玩家操作(打开非雷方块、提前打开雷方块游戏结束、Game 事件(重新开
始))――判断胜利(胜利(显示胜利会话框)、Game 事件(重新开始))――Close 按钮事
件(退出应用程序返回操作系统)
图 5、显示胜利会话框 图 6、按任意健关闭胜利会话框
扫雷游戏程序源码清单如下:
#include <graphics.h>
#include <stdlib.h>
#include <bios.h>
#include <dos.h>
#define PRIMARY 1 /*初级标识符*/
#define PRIMARYCOLUMN 9 /*初级布雷区列数*/
#define PRIMARYROW 9 /*初级布雷区行数*/
#define PRIMARYMINE 10 /*初级布雷区雷的数目*/
#define INTERMEDIATE 2 /*中级标识符*/
#define INTERMEDIATECOLUMN 16 /*中级布雷区列数*/
#define INTERMEDIATEROW 16 /*中级布雷区行数*/
#define INTERMEDIATEMINE 40 /*中级布雷区雷的数目*/
#define HIGH 3 /*高级标识符*/
#define HIGHCOLUMN 30 /*高级布雷区列数*/
#define HIGHROW 16 /*高级布雷区行数*/
#define HIGHMINE 99 /*高级布雷区雷的数目*/
#define GAMEOVER 1 /*游戏结束标识符*/
/*定义鼠标数据类型*/
typedef struct MOUSE
{
int mx; /*鼠标 x 坐标值*/
int my; /*鼠标 y 坐标值*/
int mkey;/*鼠标按钮状态*/
char fillcolor[16][16];/*鼠标覆盖下的颜色*/
}Mouseh;
/*定义按钮数据类型*/
typedef struct BUTTON
{
int left;
int top;
int right;
int down;
char *caption;/*按钮标题标识*/
char table[100];/*按钮目录标题标识*/
int fillcolor;/*按钮面颜色标识*/
int fontcolor;/*按钮面字体颜色标识*/
}BUTTON;
/*定义窗口数据类型*/
typedef struct WINDOW
{
int left;
int top;
int width;
int height;
int backcolor;/*窗体背景颜色*/
char *caption;/*窗体标题*/
BUTTON close;/*窗体关闭按钮*/
BUTTON game;/*游戏按钮*/
BUTTON help;/*帮助按钮*/
BUTTON settime;/*显示时间按钮*/
BUTTON minenumber;/*显示游戏区间雷体数目按钮*/
}Hwnd;
/*定义布雷区数据类型*/
typedef struct MINEFIELD
{
int left;
int top;
int right;
int down;
int status; /*是否有雷的标识状态符*/
int openst; /*雷区是否打开的标识符*/
int minenumbers;/*雷区周围有多少雷的标识符*/
}MINEFIELD;
/*-=-=-=-=-=-=-= 全局变量 -=-=-=-=-=-=-=-=-*/
/*鼠标屏幕绘码*/
char MouseMask[]={
0x00,0x00,0x40,0x00,0x60,0x00,0x70,0x00,
0x78,0x00,0x7c,0x00,0x7e,0x00,0x7f,0x00,
0x7f,0x80,0x7f,0xc0,0x6c,0x00,0x46,0x00,
0x06,0x00,0x03,0x00,0x01,0x80,0x00,0x00
};
/*鼠标屏幕绘码边框码*/
char MouseMaskE[]={
0xc0,0x00,0xa0,0x00,0x90,0x00,0x88,0x00,
0x84,0x00,0x82,0x00,0x81,0x00,0x80,0x80,
0x80,0x40,0x80,0x20,0x93,0xf0,0xa9,0x00,
0xc9,0x00,0x04,0x80,0x02,0x40,0x01,0xc0
};
int newx=0,newy=0;/*定义鼠标(x,y)坐标状态变量*/
MINEFIELD Mine[HIGHROW][HIGHCOLUMN];/*布雷区域大小数组*/
Hwnd hWnd;/*窗口句柄*/
Mouseh *hw;/*鼠标句柄*/
int row;/*雷区行标识*/
int column;/*雷区列标识*/
int mine;/*雷区雷数标识*/
int end;/*游戏结束标识*/
int begin;/*游戏开始标识*/
int mtime;/*游戏用时标识*/
int active;/*当前活动窗体标识*/
/*Game 按钮子菜单项目录*/
static char *MENU[5]={"BEGIN","PRIMARY","INTERMEDIATE","HIGH","EXIT"};
/*间接递归 Select()函数*/
void SelectLoop(int r,int c);
/*--------------------- DrawGraph ---------------------*/
/*绘制直线*/
void DrawLine(int x1,int y1,int x2,int y2,int color)
{
int dr;
float r,c,k;
k=0;
r=y2-y1;
c=x2-x1;
if(c!=0)
k=r/c;
if(c>0)
{
for(dr=0;dr<=c;dr+=1)
putpixel(x1+dr,y1+dr*k,color);
}
if(c<0)
{
for(dr=c;dr<=0;dr+=1)
putpixel(x1+dr,y1+dr*k,color);
}
if(c==0)
{
if(r>0)
{
for(dr=0;dr<=r;dr+=1)
putpixel(x1,y1+dr,color);
}
if(r<0)
{
for(dr=r;dr<=0;dr+=1)
putpixel(x1,y1+dr,color);
}}
if(r!=0)
k=c/r;
if(r>0)
{
for(dr=0;dr<=r;dr+=1)
putpixel(x1+dr*k,y1+dr,color);
}
if(r<0)
{
for(dr=r;dr<=0;dr+=1)
putpixel(x1+dr*k,y1+dr,color);
}}
/*绘制并填充矩形图*/
void DrawRectangle(int x1,int y1,int x2,int y2,int color,int fillmode)
{
int r,c;
DrawLine(x1,y1,x2,y1,color);
DrawLine(x1,y2,x2,y2,color);
DrawLine(x1,y1,x1,y2,color);
DrawLine(x2,y1,x2,y2,color);
剩余22页未读,继续阅读
资源评论
G11176593
- 粉丝: 6709
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 苹果CMS红色red1电影影视主题网站模板
- 光大证券-20170725-阻力支撑相对强度(RSRS)选股-技术指标系列报告之三.pdf
- EMV 4.4 Book 1~4
- 1_pt_cfix .xlsx
- EMV 4.3 Book 1~4
- EMV 4.2 Book 1~4
- EMV 4.1 Book 1~4
- 基于Python实现的遥感图像的语义分割,分别使用Deeplab V3+和unet模型+源代码+文档说明+数据集.zip
- Python基于Django服装仓库进销存库存管理系统+源代码+文档说明+数据库(高分毕设)
- 2024魔改php版大屏微信墙互动展示系统 大屏幕互动系统程序动态背景图和配乐素材含搭建教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功