栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言课设心得之实用工具小总结

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言课设心得之实用工具小总结

C语言课设心得之实用工具小总结

前言:

适用于C语言课设。本文章分享的这些工具都是easyX和Visual Studio头文件里的工具。

目录

1.MessageBox(hWnd, lpText, lpCaption, uType)需要windows.h头文件

2.InputBoxInputBox(接收用户输入的字符的数组, 长度, 窗口内容, 窗口标题)

3.读取图像

4.播放音乐mciSendString(指令, 0, 0, 0);

5.宽窄字符转换器

6.读取键盘鼠标操作


1.MessageBox(hWnd, lpText, lpCaption, uType)需要windows.h头文件

第一个参数是窗口句柄,我们C语言课设一般来说用不到,填写NULL就行

第二个参数是窗口内容

第三个参数是窗口标题

第四个内容是窗口一些属性,可以写很多个,用 | 这个符号来分割(就是或运算“||”的这个竖杠)

第二三个参数,需要传入宽字符字符串数组,也就是WCHAR数组,如果我们没有用多字符集的话,可以通过

_T("你要呈现的字符")

或者

L“你要呈现的字符”

来转换char数组为WCHAR数组

比如我们这么写

MessageBox(NULL, _T("你醒了!"),
            _T("游戏剧情"), MB_SETFOREGROUND);

呈现出来的是上图。

其中第四个参数的意思是窗口置顶,不然的话窗口生成之后是在你的主程序下方(看不见,还得在下方任务栏找)的。第四个参数有好多,都是MB_xxx形式,大家的ide会有提示,参数的名字就是它的功能,比如MB_OKCANCEL就是窗口设置两个按钮,一个是“ok”一个是“cancel”。其他的按钮大家可以在写代码的时候自己调试,探索,非常简单易懂。

这个小工具最适合的就是弹窗告诉用户一些信息,如果想要实现接收用户输入的内容的话,可以用下方的工具

2.InputBoxInputBox(接收用户输入的字符的数组, 长度, 窗口内容, 窗口标题)

同样地,除了长度是int型,其他都是宽字符数组。

这个长度的意思代表的就是,在窗口可输入的字符串长度。如果我们填20,那在窗口么输入的字符串长度最长只能是20 - 1个字符(无论是中文还是英文还是其他字符)

WCHAR string[50];
InputBox(string, 20, _T("请输入您的用户名(不能有空格)"), L"欢迎游玩!!这个是登录界面");

 

这样一来,我们的string就会接收到用户输入的字符了!

我们可以用MessageBox弹窗中展示我们输入的用户名了!

3.读取图像

EasyX只接受jpg格式的图像

IMAGE img_item;    // 创建IMAGE类型变量
loadimage(&img_item, _T(".\Pictures\item.jpg"));

第二个参数是宽字符数组,里面的信息是img_item变量需要存储的jpg图片所在地址。这里我用的是相对路径,绝对路径的话就是从你的图片存在哪个盘一直写到你的文件本名,非常麻烦,移植性也非常差,推荐大家都用相对路径。

".\Pictures\item.jpg"解读:“.”代表了你的exe程序所在的目录,也就是根目录,我们平时用到的路径只有一个“”这里用“\”是转义,否则会引发歧义,无法进入路径。\Pictures是根目录下的一个文件夹,名字叫“Pictures”,然后item.jpg就是你的图像本身了。

如果我们要贴图也很简单

 putimage(0, 0, &img_item);

0,0代表了图片左上角和窗口的哪个坐标对齐,如果是100,30,那就是在x=100,y=30的地方开始从图片的左上角往下绘制,大家可以根据需求来灵活掌握。

注意:

我们贴图的时候,不是说item图片通过IMAGE变量贴在了屏幕上,它就是一个可控制的个体了,NONONO!贴上去的仅仅就是那些破像素点,你如果想通过后续操作,让图片动起来,那就太天真了!每一次item的put都是像素的张贴,而不是对应图像从原来的位置移动到了新的位置,所以如果你想让图片在视觉上移动,那你需要在item贴图到下一位置之前,清除之前位置的item图片。

我自己的课设,偷了个懒:背景是纯色,每一个可移动的个体,它的背景也是同样的纯色,又因为人物是固定坐标移动,所以每次移动之后,原位置贴一块背景纯色块就解决问题了。这节省了做遮罩图的精力和时间,实现了同等的功能。

大家根据自己的游戏需求,动一动自己的脑筋,相信大家也能找到诀窍的!遮罩图可以看看b站河海大学的课程(搜“EasyX”),有讲到,不过图片还是得自己做,用PS。

4.播放音乐mciSendString(指令, 0, 0, 0);

后三个参数我们用不到,都写0即可。第一条指令我们也是固定用那么几条,看下面代码:

mciSendString(L"open .\Musics\VICTORY.mp3 alias v", 0, 0, 0);
mciSendString(L"play v", 0, 0, 0);    // mciSendString(L"play v repeat", 0, 0, 0);
mciSendString(L"close v", 0, 0, 0); 

open是打开音乐文件,格式可以是mp3,wav等等。

alias + 一串字符,这个意思就是给我们读取的音乐起一个别名,方便后面的操作,比如第一行代码的v换成C,那么第二行第三行的v也都要换成C。

play顾名思义,如果要循环播放,写成注释那样即可

close单次播放的音乐,播放完最好close一下,方便下一次的播放。(跟文件差不多,用完就close,避免很多奇怪的错误)

5.宽窄字符转换器

我也是从网上找的,不过网上找的代码有一部分参数不太对,我给调好了,大家改个变量名就行

宽字符:WCHAR        窄字符:char

宽字符转窄字符

// WCHAR转换为CHAR
// 假设我们有一个char name_string[50]和一个WCHAR string_trans[50](长度最好一样)
memset(name_string, 0, wcslen(string_trans) * 5 + 1);
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, string_trans, wcslen(string_trans)
	, name_string, sizeof(*name_string) * 50 / sizeof(name_string[0]), NULL, NULL);

窄字符转宽字符

// CHAR转换为WCHAR
memset(string_trans, 0, sizeof(string_trans));
MultiByteToWideChar(CP_ACP, 0, step_string, strlen(name_string) + 1, string_trans,
            sizeof(string_trans) / sizeof(string_trans[0]));

6.读取键盘鼠标操作

这俩我放到一起写了,由于操作是一直有的,所以我们需要把键盘鼠标判断的代码放进while循环,具体一些小贴士我会只写写在下面代码里,作为注释。

void play()
{
    MOUSEMSG m{};     // 记录鼠标消息
    char input; // 按键输入
    while(1)
    {
        if (MouseHit())    // 判断鼠标是否点击
        {
            m = GetMouseMsg();
            if (m.uMsg == WM_LBUTTONDOWN)    // 如果点击左键
            // 输入WM之后,ide就会展开,这些参数同样是顾名思义,挺好理解的
            {
                // 游戏反馈
            }
        }
        if (_kbhit())
        {
            input = _getch();   
            // 如果写的是getchar()的话,按下s之后需要回车才能把键盘输入真正传给input变量,而_getch()只会判断按下了什么键,然后直接把识别到的按下的键返回
            if (input == 's' || input == 80)// s键或者↓键
            if (input == 'w' || input == 72)// w键或者↑键
            if (input == 'd' || input == 77)// d键或者→键
            if (input == 'a' || input == 75)// a键或者←键
            // 还有很多键位的ASCII码,大家的课设指导书结尾都会列出来,大家自行查询
        }
    }
}

文章到这里就告一段落啦!感谢大家阅读!

特别鸣谢:

我的祖国

CSDN各位大佬的小教程帮助我完成了课设

C语言课设课及指导老师

河海大学童老师的网课

和我讨论的同学们,太多了,不列举了哈哈

需要视频教程的话,可以反馈给我,感谢!

我的b站UID:23415007

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863861.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号