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++

开发工具及学习视频资料

C语言开发推箱子游戏项目实战相关推荐

  1. c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  2. 初学者一学就会的小程序开发——推箱子

    最经典的推箱子游戏,类似的游戏你一定早就玩过.要控制搬运工上下左右移动,来将箱子推到指定地点. 经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力.在一个狭小的仓库中,要求把木箱放到指 ...

  3. 安卓游戏开发推箱子_保持冷静并砍箱子-开发

    安卓游戏开发推箱子 Hack The Box (HTB) is an online platform allowing you to test your penetration testing ski ...

  4. c 语言推箱子vs,基于C语言实现推箱子游戏

    本文实例为大家分享了C语言实现推箱子游戏的具体代码,供大家参考,具体内容如下 代码在vs2013上测试运行. 思想: 1):地图用二维数组实现,箱子.墙壁.人等事物用不同的数字表示,遍历二维数组,遇到 ...

  5. C语言书写推箱子(坤坤版easyx库)

    C语言书写推箱子(坤坤版easyx库) 游戏效果的展示 运用的知识点(必看) 代码的讲解 游戏地图的实现 地图的初始化 地图图片的加载 地图图片的放置 人物和箱子的移动(重点) 游戏结束的判断 音乐的 ...

  6. 用C语言实现推箱子小游戏基础程序plus

    目录 设计一个简单的推箱子游戏 功能设计要求: 代码实现 数据定义头文件data_def.h 窗口设置头文件WindowsSet.h WindowsSet.cpp 上移函数 矩阵旋转函数 游戏帧 菜单 ...

  7. android开发--推箱子小游戏(二)

    一.前言 迎来第二章的更新啦:使用ListView实现关卡的选择. 本章的内容有点小复杂,毕竟涉及使用了安卓开发中最难用也是最常用的控件之一:ListView 本章可以说是复杂但是单一吧.主要是想大家 ...

  8. c语言程序推箱子详细设计,C语言实现推箱子项目

    本文实例为大家分享了C语言实现推箱子的具体代码,供大家参考,具体内容如下 项目展示 首先介绍结构板,结构版是图形版的逻辑基础: 结构版效果图: 地图: 二维数组储存地图,0代表空地,1代表墙,4代表箱 ...

  9. 语言程序推箱子课设报告_学完C语言,可以去哪些应用领域工作?

    C语言是目前世界上流行.使用非常广泛的高级程序设计语言. 在TIOBE已公布2020年8月的编程语言排行榜.C语言依然保持排行第一! 前20名排行如下: C语言对操作系统和系统使用程序以及需要对硬件进 ...

最新文章

  1. 【转】感知哈希算法——找出相似的图片
  2. 图像处理-PCA人脸识别
  3. ThinkPHP框架学习(二)
  4. Day1 字符串格式化
  5. windows批量添加用户
  6. java javafx webview_基于JavaFX WebView 的采集开发,了解一下?
  7. MySQL 调优/优化的 101 个建议!
  8. CSS-滤镜 -webkit-filter
  9. ASP.NET MVC TagBuilder使用
  10. 通俗讲解c语言指针的作用,C语言指针讲解(史上最通俗最全面最经典)
  11. Python如何提取docx中的超链接
  12. HW Eth-Trunk链路聚合
  13. Appium基础 — APPium安装(二)
  14. mysql chunk_【MySQL参数】-innodb_buffer_pool_chunk_size
  15. 事物(Transaction)
  16. 矩阵相乘的strassen算法_4-2.矩阵乘法的Strassen算法详解
  17. Qt之绘制折线图:图标以及坐标轴设置
  18. 60-硅谷课堂6-硅谷课堂-公众号消息和微信授权-- 笔记
  19. 游戏设计模式-命令模式
  20. 基于BP-Adaboost神经网络的高斯函数模型预测研究-含Matlab代码

热门文章

  1. Java 9中的无限集
  2. Spring框架–应用程序上下文–到达应用程序上下文的三种方法
  3. 终极Java日志字典:开发人员最常记录的单词是什么?
  4. java堆 数据结构 堆_Java中的紧凑堆外结构/组合
  5. hibernate关联映射_具有关联映射的Hibernate Composite ID
  6. jit即时编译_热点中的即时编译器(JIT)
  7. 在JBoss的服务器端正确解码URL参数
  8. MOXy的对象图和动态JAXB
  9. JUnit和Hamcrest:在assertEquals上进行改进
  10. 避免延迟的JPA集合