C语言能做什么?
相信学过C语言的各位都会有一个疑问,我们学了C语言到底可以做什么?或许有人会说做系统开发、驱动开发等等,但是这个感觉离我们好远,甚至于我们学C语言都仅仅是为了用程序做数学题,要不就是用C语言来实现数据结构。可是这样的学习是非常无趣的,那么大家接下来可以看看我们学了的C语言到底可以做些什么有意思的事情吧!
一、图形界面开发
说到图形界面开发可能大家听起来比较陌生,因为平常做编程题所用到的都是Windows控制台应用程序,也就是大家经常所说的的“黑窗口”,这个“黑窗口”即不好看,也无法更改,一点都没意思,那么要怎么做图形界面开发呢?
下面我们开始创建一个图形界面窗口:
示例代码:
#include <graphics.h>
#include <stdio.h>
int main()
{
// 创建界面, (540,540)是窗口的大小
initgraph(540, 540);
// 更换背景颜色并刷新
setbkcolor(WHITE);
cleardevice();
// 关闭图形界面窗口
closegraph();
return 0;
}
二、添加资源素材图片
只有纯色窗口太单调了怎么办?
示例代码:
#include <graphics.h>
#include <stdio.h>
int main()
{
// 创建界面, (540,540)是窗口的大小
initgraph(540, 540);
// 更换背景颜色并刷新
setbkcolor(WHITE);
cleardevice();
// 加载素材图片并显示
loadimage(&img[0], L"./res/0.jpg");
putimage(0,0,&img[0]);
// 关闭图形界面窗口
closegraph();
return 0;
}
三、添加游戏音乐
有了界面和图片素材之后确实好看了很多,但是总是缺少了什么。没错,就是游戏的音乐,我们玩的的游戏都是有音乐的,那么怎么使用C语言代码来播放音乐呢?
示例例题:
#pragma comment (lib,"winmm.lib")
int main()
{
// 播放背景音乐
mciSendString(L"open music.mp3 alias BGM ", 0, 0, 0);
mciSendString(L"play BGM", 0, 0, 0);
return 0;
}
好了,音乐播放也搞定了,那么下面就是游戏的结构设计了,这里就不详细描述了,大家可以看下面的完整项目代码。
四、完整代码
代码示例:
// 判断游戏是否过关
int Victory(int map[9][9])
{
for (int x = 0; x < 9; x++)
{
for (int y = 0; y < 9; y++)
{
if (map[x][y] == 2)
{
return 0; // 如果还有炸弹,游戏还要继续
}
}
}
return 1; // 没有炸弹,进入下一关
}
// 玩游戏
int PlayGame(int map[9][9])
{
loop = 0;
Print(map);
Find(map);
do
{
switch (_getch())
{
case 72: Move(map, -1, 0); break; // ↑
case 75: Move(map, 0, -1); break; // ←
case 77: Move(map, 0, 1); break; // →
case 80: Move(map, 1, 0); break; // ↓
case ' ': loop = 1; return 0; // 复位
case 27: exit(0); break; // 按下esc键结束
}
} while (!Victory(map)); // 通过Victory函数来判断是否通关
Sleep(2000);
princess(60 * x1, 60 * y1); // 公主出现
Sleep(2000);
MessageBox(0, _T("公主已经被抓走了"), _T("坏消息"), MB_SYSTEMMODAL);
return 0;
}
// 5.游戏地图关卡
void GameMap()
{
// 定义一个三维地图数组
int OneMap[5][9][9] = {
{ {6, 6, 6, 6, 6, 6, 6, 6, 6 },
{6, 6, 6, 3, 6, 6, 6, 6, 6 },
{6, 6, 6, 0, 6, 6, 6, 6, 6 },
{6, 6, 6, 2, 0, 2, 3, 6, 6 },
{6, 3, 0, 2, 1, 6, 6, 6, 6 },
{6, 6, 6, 6, 2, 6, 6, 6, 6 },
{6, 6, 6, 6, 3, 6, 6, 6, 6 },
{6, 6, 6, 6, 6, 6, 6, 6, 6 },
{6, 6, 6, 6, 6, 6, 6, 6, 6 },},
{ {6, 6, 6, 6, 6, 6, 6, 6, 6 },
{6, 1, 0, 0, 6, 6, 6, 6, 6 },
{6, 0, 2, 2, 6, 6, 6, 6, 6 },
{6, 0, 2, 0, 6, 6, 6, 3, 6 },
{6, 6, 6, 0, 6, 6, 6, 3, 6 },
{6, 6, 6, 0, 0, 0, 0, 3, 6 },
{6, 6, 0, 0, 0, 6, 0, 0, 6 },
{6, 6, 0, 0, 0, 6, 6, 6, 6 },
{6, 6, 6, 6, 6, 6, 6, 6, 6 } },
{ {6, 6, 6, 6, 6, 6, 6, 6, 6 },
{6, 6, 1, 0, 6, 6, 6, 6, 6 },
{6, 6, 0, 2, 0, 0, 6, 6, 6 },
{6, 6, 6, 0, 6, 0, 6, 6, 6 },
{6, 3, 6, 0, 6, 0, 0, 6, 6 },
{6, 3, 2, 0, 0, 6, 0, 6, 6 },
{6, 3, 0, 0, 0, 2, 0, 6, 6 },
{6, 6, 6, 6, 6, 6, 6, 6, 6 },
{6, 6, 6, 6, 6, 6, 6, 6, 6 },},
{ {6, 6, 6, 6, 6, 6, 6, 6, 6 },
{6, 6, 0, 1, 3, 3, 3, 6, 6 },
{6, 6, 0, 0, 0, 6, 6, 6, 6 },
{6, 6, 6, 2, 0, 0, 0, 0, 6 },
{6, 0, 0, 0, 6, 2, 6, 0, 6 },
{6, 0, 2, 0, 6, 0, 0, 0, 6 },
{6, 0, 0, 0, 6, 6, 6, 6, 6 },
{6, 6, 6, 6, 6, 6, 6, 6, 6 },
{6, 6, 6, 6, 6, 6, 6, 6, 6 },},
{ {6, 6, 6, 6, 6, 6, 6, 6, 6 },
{6, 6, 0, 1, 0, 6, 6, 6, 6 },
{6, 6, 0, 6, 2, 0, 0, 6, 6 },
{6, 0, 5 ,3, 0, 3, 0, 6, 6 },
{6, 0, 0, 2, 2, 0, 6, 6, 6 },
{6, 6, 6, 0, 6, 3, 6, 6, 6 },
{6, 6, 6, 0, 0, 0, 6, 6, 6 },
{6, 6, 6, 6, 6, 6, 6, 6, 6 },
{6, 6, 6, 6, 6, 6, 6, 6, 6 },}
};
// 设置当前地图
int map[9][9];
for (int i = 0; i < 5; i++)
{
do
{
loop = 0;
for (int j = 0; j < 9; j++)
{
for (int k = 0; k < 9; k++)
{
map[j][k] = OneMap[i][j][k]; // 对地图赋值
}
}
// 6.调用玩游戏的函数
PlayGame(map);
} while (loop);
}
}
int main()
{
// 1.创建界面
initgraph(540, 540);
// 2.更换背景颜色
setbkcolor(WHITE);
cleardevice();
// 3.播放背景音乐
mciSendString(_T("open ./res/超级玛丽.mp3 alias BGM "), 0, 0, 0);
mciSendString(_T("play BGM"), 0, 0, 0);
// 4.加载图片
loadimage(&img[0], _T("./res/0.jpg"));
loadimage(&img[1], _T("./res/1.jpg"));
loadimage(&img[2], _T("./res/2.jpg"));
loadimage(&img[3], _T("./res/3.jpg"));
loadimage(&img[4], _T("./res/4.jpg"));
loadimage(&img[5], _T("./res/5.jpg"));
loadimage(&img[6], _T("./res/6.jpg"));
loadimage(&img[7], _T("./res/7.jpg"));
// 5.调用游戏地图关卡
GameMap();
closegraph();
return 0;
}
另外本程序还需要一部分头文件,想要领取可以在公众号的群聊分类中加群领取。
完
关注它,
你就可以得到
很多你想要的C/C++
开发工具及学习视频资料