推箱子1--c语言

本次代码的开发环境为VS2013,采用c语言的方式写的一个简单界面的推箱子,里面涉及Easy X图形库,所以需要先安装Easy X图形库。

特殊函数

首先来讲讲需要用到的图形、音乐这些特殊函数吧!

绘图

重点:#include <graphics.h>
初始化绘图环境:

/***************************************
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 <iomanip>
#include <graphics.h>

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,等等,下面介绍一下它的使用方法:

扫描二维码关注公众号,回复: 9141904 查看本文章
/***********************************
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 <iomanip>
#include <graphics.h>

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;
}

效果图:
在这里插入图片描述
在这里插入图片描述
暂时就写到这里,嘻嘻!

发布了10 篇原创文章 · 获赞 1 · 访问量 437

猜你喜欢

转载自blog.csdn.net/qq_36561846/article/details/103464096