C语言:植物大战僵尸库函数解析

C语言课设:植物大战僵尸-优快云博客

目录

C语言课设:植物大战僵尸-优快云博客

贝塞尔曲线

IMAGE类

图片显示

loadimage()

putimage()

initgraph()

sprintf_s()

缓冲

鼠标消息

peekmessage ()

ExMessage类

memset()

FILE类

fopen()

fclose()

LOGFONT类

抗锯齿

outtextxy

MessageBox()

exit()

播放音乐

mciSendString()(音乐略有延迟)

PlaySound()


贝塞尔曲线

Bézier curve(贝塞尔曲线) 是应用于二维图形应用程序的数学曲线。 曲线定义:起始点、终止点(也称锚点)、两个控制点。通过调整控制点,贝塞尔曲线的形状会发生变化。 1962年,法国数学家Pierre Bézier第一个研究了这种矢量绘制曲线的方法,并给出了详细的计算公式,因此按照这样的公式绘制出来的曲线就用他的姓氏来命名,称为贝塞尔曲线。

利用贝塞尔曲线的原理可以绘制出一条光滑的的曲线

IMAGE类

IMAGE类似声明结构体,IMAGE imgBg可以定义变量
对图片进行操作用IMAGE定义变量
IMAGE* img
getwidth()返回指定图片的宽度,gethight()返回指定图片的高度
引用方式img->getwidth(),表示获得img中存储的图片信息

图片显示

loadimage()

函数的作用是从图片文件提取图片从而显示图片

代码实现:通过路径将图片存进变量imgBg

//加载单张图片
IMAGE imgBg;
loadimage(&imgBg, "res/bg.jpg");

加载多张图片时可搭配sprintf_s()和for循环使用

for (int i = 0; i < 10; i++)
{
	sprintf_s(name, sizeof(plant_name), "res/sunshine/%d.png", i + 1);//生成文件名
	loadimage(&img[i], name);
}

加载图片所在的文件夹必须和main.cpp在同一个文件内

putimage()

函数的作用是打印图片,传参是图片打印大小,是由坐标确定的,这个函数的几个重载用于在当前设备上绘制指定图像。

putimage(x坐标, y坐标, img);

initgraph()

函数用于创建图形窗口,参数是高和宽(第三个参数可写可不写)

//在屏幕上绘制一个高600,宽900的窗口
initgraph(600, 900, 1);//第三个参数可默认为1

sprintf_s()

sprintf()函数这个函数的作用是将一些数据,格式化的组织成字符串
第一个参数是字符串保存的空间,第二个参数是格式化,第三个参数是需要被组织的数据
sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险。
其返回值是字符个数

sprintf_s(格式化的地址, 格式化大小,"路径")

缓冲

BeginBatchDraw(开始缓冲)和EndBatchDraw(结束缓冲)都是easyx中的两个函数,返回值均为void
运行BeginBatchDraw后,所有的绘图都不再显示在屏幕上,而是在内存中进行
直到碰到EndBatchDraw,之前所有在内存中绘图的成品将一并展示在屏幕中
 

鼠标消息

基本鼠标消息
WM_LBUTTONDOWN - 鼠标左键按下
WM_LBUTTONUP - 鼠标左键抬起
WM_RBUTTONDOWN - 鼠标右键按下
WM_RBUTTONUP - 鼠标右键抬起
WM_MOUSEMOVE - 鼠标移动消息

peekmessage ()

看看消息堆栈中有没有消息。不管有没有,获取结果以后,立即返回(不阻塞)

ExMessage类

ExMessage用于保存鼠标消息

定义变量

ExMessage msg;

msg.message 是消息结构体中的一个字段,用于指定接收到的消息的类型或标识符。
msg.x当前鼠标 x 坐标(物理坐标)。
msg.y当前鼠标 y 坐标(物理坐标)。
Windows 操作系统中有很多不同类型的消息,例如鼠标事件、键盘事件、窗口事件等等,每种消息都有自己的标识符。当接收到消息时,可以通过检查 message 字段的值来判断接收到的是哪种类型的消息,从而采取相应的处理方式。
 

memset()

memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。

void *memset(void *s, int c, size_t n); 

s指向要填充的内存块。
c是要被设置的值。
n是要被设置该值的字符数。
返回类型是一个指向存储区s的指针。

通常用于对数组的整体初始化

IMAGE img[10];//定义IMAGE类型的数组
memset(img, 0, sizeof(img));

FILE类

对图片进行操作用FILE定义变量

fopen()

用指定的形式打开文件——即fopen(需要打开文件的文件名,打开文件的方式)

fopen(_In_z_ char const* _FileName,_In_z_ char const* _Mode);

即fopen(需要打开文件的文件名,打开文件的方式)
需要打开文件的文件名:
需要和exe文件在同一目录下,或者写出相对路径或绝对路径
fopen的返回值是对应文件的指针,如果打不开文件则返回NIULL指针

打开方式:

1.“r” 以"读"的方式打开一个文本文件(只能读)。
2.“r+” 在"r"的基础下增加了"写"。
3.“rb” 以"读"的方式打开一个二进制文件(只能读)。
4.“rb+” 在"rb"的基础下增加了"写"。
5.“w” 以"写"的方式创建一个文本文件,
如果这个文件已经存在,就会覆盖原来的文件。
6.“w+” 在"w"的基础下增加了"读"。
7.“wb” 以"写"的方式创建一个二进制文件。
8.“wb+” 在"wb"的基础下增加了"读"。
9.“a” 以"尾部追加"的方式打开一个文本文件(只能写)。
10.“a+” 在"a"的基础下增加了"读"。
11.“ab” 以"尾部追加"的方式打开一个二进制文件(只能写)。
12.“ab+” 在"ab"的基础下增加了"读"。

fclose()

关闭文件——fclose(FILE* name)参数是将要关闭的文件指针

fclose(_Inout_ FILE* _Stream);

在文件操作完成后需将文件关闭,即fclose(文件名)

LOGFONT类

LOGFONT 结构定义字体的属性。
lfHeight:字体的字符单元格或字符的高度
lfWeight:字体的粗细
fFaceName:指向NULL结尾的字符串的指针,此字符串即为所使用的字体名称,其长度不能超过32个字符,如果为空,则使用系统默认的字体。
lfQuality指定文字的输出质量。
gettextstyle(指针)这个函数用于获取当前文字样式。
settextstyle() 设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小。
SetBkMode(TRANSPARENT):设置绘图dc的背景模式为透明模式

LOGFONT f;//设置更改字体格式的变量
gettextstyle(&f);//获取字体的文本格式
f.lfHeight = 30;//字体高度30
f.lfWeight = 15;//设置字体的粗细
strcpy(f.lfFaceName, "Segoe UI Black");//设置字体格式
f.lfQuality = ANTIALIASED_QUALITY;//抗锯齿
settextstyle(&f);
setbkmode(TRANSPARENT);//设置字体背景透明
setcolor(BLACK);//设置字体颜色(黑色)

抗锯齿

抗锯齿是一种图像处理技术,用于减少图像边缘处出现的锯齿状的走样现象  在字体渲染中,如果没有启用抗锯齿功能,那么在字体边缘处会出现锯齿状的边缘,影响视觉效果和清晰度。而启用了抗锯齿功能后,字体边缘处的锯齿状边缘会被平滑处理,使得整个字体看起来更加流畅、清晰、自然

outtextxy

这个函数用于在指定位置输出字符串。

此函数仅在图形模式下生效

outtextxy (int x , int y , "Text");

MessageBox()

MessageBox指的是显示一个对话框

参数:

MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)
  • hWnd:

    此参数代表消息框拥有的窗口。如果为NULL,则消息框没有拥有窗口。

  • lpText:

    消息框的内容。

  • lpCaption:

    消息框的标题。

  • uType:

    指定一个决定对话框的内容和行为的位标志集。

exit()

  • exit() 结束当前进程/当前程序

  • exit(1)表示进程正常退出. 返回 1;

  • exit(0)表示进程非正常退出. 返回 0.

播放音乐

mciSendString()(音乐略有延迟)

头文件#include <mmsystem.h>
库#pragma comment(lib,"winmm.lib")
 mciSendString函数的参数(一共有4个参数):
mciSendString(操作指令 , 获取返回的信息(字符串) , 返回信息的长度 , 窗口句柄(一般为NULL));

mciSendString("play 音乐路径", 0, 0, NULL);

常用命令:

1.打开(Open)

2.播放(Play)

3.暂停(Pause)

4.继续(Resume)

5.停止(Stop)

6.关闭(Colse)

PlaySound()

BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);

PlaySound是Windows中用来播放声音的API
PlaySound只能播放WAV文件。

使用PlaySound函数时要包含以下头文件:

#include\<windows.h>
#include\<Mmsystem.h>
#pragma comment(lib,"winmm.lib")
using namespace std;

而且顺序不能错,“windows.h”要在“Mmsystem.h”前面。

参数如下:

PlaySound("音乐路径", NULL, SND_FILENAME | SND_ASYNC);

hmod一般设置为空(NULL)

  • SND_APPLICATION 用应用程序指定的关联来播放声音。

    SND_ALIAS pszSound参数指定了注册表或WIN.INI中的系统事件的别名。

    SND_ALIAS_ID pszSound参数指定了预定义的声音标识符。

    SND_ASYNC 用异步方式播放声音,PlaySound函数在开始播放后立即返回。

    SND_FILENAME pszSound参数指定了WAVE文件名。

    SND_LOOP 重复播放声音,必须与SND_ASYNC标志一块使用。

    SND_MEMORY 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。

    SND_NODEFAULT 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。

    SND_NOSTOP PlaySound不打断原来的声音播出并立即返回FALSE。

    SND_NOWAIT 如果驱动程序正忙则函数就不播放声音并立即返回。

    SND_PURGE 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NiKo_sx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值