本次代码的开发环境为VS2013,采用c语言的方式写的一个简单界面的推箱子,里面涉及Easy X图形库,所以需要先安装Easy X图形库。
首先来讲讲需要用到的图形、音乐这些特殊函数吧!
重点:#include
初始化绘图环境:
/***************************************
function:初始化绘图环境
parameter:
width--绘图环境的宽度
height--绘图环境的高度
flag--绘图环境的样式,默认为 NULL
样式值--含义
NOCLOSE--禁用绘图环境的关闭按钮
NOMINIMIZE--禁用绘图环境的最小化按钮
SHOWCONSOLE--保留原控制台窗口
return:创建的绘图窗口的句柄
example:创建一个尺寸为 640x480 的绘图环境--initgraph(640, 480);
note:头文件--graphics.h
**************************************/
HWND initgraph(
int width,
int height,
int flag = NULL
);
关闭图形环境:
void closegraph();//关闭图形环境
设置当前绘图背景色:
/**********************************
function:用于设置当前绘图背景色
parameter:color--指定要设置的背景颜色
return:void
example:setbkcolor(GREEN);//设置图像绿色背景
cleardevice();//清屏方式1
clearcliprgn();//清屏方式2
note:(使用该颜色清空屏幕或裁剪区)
//设置背景后需要******清屏生效******
*************************************/
void setbkcolor(COLORREF color);
清屏:(使背景色生效)
/*******************************
function:用于清空裁剪区的屏幕内容,清空内容后就只剩下背景色了
parameter:void
return:void
*******************************/
void clearcliprgn();
/*******************************
function:清除屏幕内容。具体的,是用当前背景色清空屏幕,并将当前点移至 (0, 0)
parameter:void
return:void
*******************************/
void cleardevice();
加载图像显示在窗口:
/**************************************************
function:从图片文件获取图像显示在窗口中(bmp/gif/jpg/png/tif/emf/wmf/ico)
parameter:
pDstImg--保存图像的 IMAGE 对象指针
pImgFile--图片文件名
nWidth--图片的拉伸宽度
nHeight--图片的拉伸高度
bResize--是否调整 IMAGE 的大小以适应图片
return:void
*************************************************/
void loadimage(
IMAGE* pDstImg,
LPCTSTR pImgFile,
int nWidth = 0,
int nHeight = 0,
bool bResize = false
);
绘制指定图像:
/**********************************
function:当前设备上指定位置绘制指定图像
parameter:
dstX--绘制位置的 x 坐标
dstY--绘制位置的 y 坐标
pSrcImg--要绘制的 IMAGE 对象指针
dwRop--三元光栅操作码
***********************************/
void putimage(
int dstX, // 绘制位置的 x 坐标
int dstY, // 绘制位置的 y 坐标
IMAGE *pSrcImg, // 要绘制的 IMAGE 对象指针
DWORD dwRop = SRCCOPY // 三元光栅操作码(详见备注)
);
画指定图像方式如下所示:(前提:初始化绘图环境和设置好背景)
#include "stdio.h"
#include
#include
IMAGE image[8];//这是一个类初始化对象
int main(void)
{
initgraph(640, 480);
setbkcolor(GREEN);//设置图像背景
//cleardevice();//清屏
clearcliprgn();
//如此直接加载完就显示,不需要后续使用该图像,所以就没有返回图像的 IMAGE 对象指针
loadimage(NULL, "./游戏素材/图片素材/DragonCat.jpg");//显示龙猫
loadimage(&image[0], "./游戏素材/图片素材/1.jpg");//保存 1.jpg(喜羊羊)的指针
putimage(60, 60, &image[0]);//在(60,60)的位置显示喜羊羊
system("pause");//暂停 需头文件:iomanip
return 0;
}
***头文件:#pragma comment (lib,“winmm.lib”)
mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等,下面介绍一下它的使用方法:
/***********************************
function:打开音乐
parameter:
lpszCommand--要发送的命令字符串。字符串结构是:[命令][设备别名][命令参数].
lpszReturnString--返回信息的缓冲区,为一指定了大小的字符串变量.
cchReturn--缓冲区的大小,就是字符变量的长度.
hwndCallback--回调方式,一般设为零
return:函数执行成功返回零,否则返回错误代码
note:头文件:#pragma comment (lib,"winmm.lib")
***********************************/
MCIERROR mciSendString(
LPCTSTR lpszCommand, //MCI命令字符串
LPTSTR lpszReturnString, //存放反馈信息的缓冲区
UINT cchReturn, //缓冲区的长度
HANDLE hwndCallback //回调窗口的句柄,一般为NULL
); //若成功则返回0,否则返回错误码。
使用如下所示:
//加载音乐文件
mciSendString("open ./游戏素材/音乐素材/别看我只是一只羊.mp3 alias BGM", 0, 0, 0);//注意open后的一点和open要隔开,否则没声音
//开始一直播放
mciSendString("play BGM", 0, 0, 0);
同时播放第二个音频:
/***********************
funcion:该函数需自行百度
**********************/
PlaySoundA(
_In_opt_ LPCSTR pszSound,
_In_opt_ HMODULE hmod,
_In_ DWORD fdwSound
);
PlaySoundA使用方法:
注意:只能是wav文件;**
将头文件包含至自己工程:#include “resource.h”
mciSendString("open ./游戏素材/音乐素材/别看我只是一只羊1.mp3 alias BGM", 0, 0, 0);//注意open后的一点和open要隔开,否则没声音
//开始一直播放
mciSendString("play BGM", 0, 0, 0);
PlaySound((LPCTSTR)IDR_WAVE1, NULL, SND_RESOURCE | SND_ASYNC);//同时播放:我一定会回来的
//(LPCTSTR)IDR_WAVE1为强制转换
IDR_WAVE1位于resource.h文件
此时就可以听到两个音乐了,但是“我一定会回来的”播放完即停止。
别急还有最后一个哈!
/***********************
function:WINDOS弹窗口消息
parameter:
lpText--显示内容
lpCaption--显示标题
uType--窗口类型
MB_OK--默认
MB_OKCANCEL--确定取消
MB_YESNO--是否
MB_YESNOCANCEL--是否取消
return:
IDCANCEL--取消被选
IDNO--否被选
IDOK--确定被选
IDYES--是被选
******************************/
int
WINAPI
MessageBoxA(
_In_opt_ HWND hWnd,
_In_opt_ LPCSTR lpText,
_In_opt_ LPCSTR lpCaption,
_In_ UINT uType);
example:
MessageBox(NULL, "击败了灰太狼,进入下一关!", "恭喜你", MB_SYSTEMMODAL);//MB_SYSTEMMODAL--窗口最前置
example:
#include "stdio.h"
#include "string.h"
#include
#include
int main(void)
{
int a = 0;
a = MessageBox(NULL, "击败了灰太狼,进入下一关!", "恭喜你", MB_YESNOCANCEL);//MB_SYSTEMMODAL--窗口最前置
if (a == IDCANCEL)
{
printf("取消\n");
}
if (a == IDNO)
{
printf("否\n");
}
if (a == IDOK)
{
printf("确定\n");
}
if (a == IDYES)
{
printf("是\n");
}
system("pause");
return 0;
}