推荐一些适合新手练手的C/C++项目

2018 年 5 月 10 日 算法与数据结构

最好的编程语言是什么?一千个程序员或许会有一千零一种答案:


Python在人工智能时代的风头正盛、Java依旧是市场上的香饽饽、当然还有PHP;JavaScript、C#、Ruby以及Objective-C……每一种编程语言,都有由其打造的顶级应用成果呈现。


根据TIOBE 刚刚发布了 5 月编程语言排行榜,排名前三的依旧有C/C++。而且都出现了不同幅度的增长,C语言增长幅度最高达到7%,C++增长2.92%



C/C++作为元老级的编程语言,任时光更迭依旧屹立不倒,哪怕如今炙手可热的AI,其底层也是用其编写。C/C++可以说是永不过时的语言。


那么作为新手该如何上手这门语言?一切不敲代码的学编程手段都是扯淡,今天小编就推荐一些适合新手练手的C/C++项目。

1

用GDI实现动画效果

GDI是windows与生俱来的图形设备接口(GraphicsDeviceInterface)负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形和图像输出。


部分思路及代码如下

准备一张BMP格式的背景图片,创建一个窗体,在窗体上进行绘制,然后通过GetDC函数来获取窗体的设备环境DC。

获取设备环境后在内存中创建一个设备环境,在内存中画图,画好以后,直接拷贝到窗体的设备环境上。

采用的第二种绘制方式(消息循环),通过一个数组把他们保存起来,然后依次播放。下面是部分代码:

运行效果如下

在开发过程中,我们会用到C/C++语言、Win32窗口创建、消息机制、GDI三缓冲绘图原理等知识点。


●学习过程中你能学会:

1.使用API函数创建好Win32窗口。

2.将准备好的游戏素材加载到程序中。

3.使用GDI图形设备接口函数绘制地图与角色。

4.利用C/C++语法结合数据结构与算法算法处理游戏数据。

5.编写游戏逻辑。


●学习成效:

1.跳出控制台,在界面编程中去锻炼自己的逻辑思维能力。

2.了解windows程序设计的基本框架。

3.可尝试去开发各种界面化的程序,例如雷霆战机,俄罗斯方块,坦克大战等等。


2

C/C++制作益智游戏2048

懂得C语言基本语法即可实现命令行版本的 2048 小游戏,在编写过程中,会运用到数组、界面处理、AI算法等相关知识,能够让初学编程的人在游戏中就能够练习到C++语言的知识,让学习变得更有意思和趣味。


部分思路及代码如下

2048 游戏里最关键的就是消掉方块和在屏幕任意位置输出数据。其中有两个关键点:

一、在满足条件情况下消除方块

二、允许在游戏主界面(16 宫格)中任意一格输出数据

前者实现思路是创建一个与游戏地图相同维数的数组矩阵,通过数组矩阵来维护 2048 游戏中每个格子的数据与状态。从而玩家的移动操作都可以映射为对数组矩阵的操作。第二点借助 ncurses 库可以较容易实现。


基础工作,创建几个全局变量:

为了调用起来方便,我们先声明一下所需要创建的函数原型

init 函数首先初始化屏幕,并且随机生成两个数字 x, y 用于指定方格的位置坐标,并给数组 a[][] 中相应位存入数字 2 ,然后再调用 draw 函数进行绘制相应的字符界面。这部分用于初始化游戏界面

编写 play 函数以及函数用于生成新数字的位置,编译后运行效果如下:

在开发过程中,需要涉及一些数据结构的知识,使用文本界面的屏幕绘图库 ncurses用字符绘图,以及一些 Linux 的系统调用。


●学习过程中你能学会:

1.掌握C/C++的语法、算法,Win技术。

2.学习游戏设计与实现思路,熟悉游戏的编写与运行流程。

3.屏幕绘图库ncurses的使用,熟悉模块与主流程的运行流程。

4.利用C/C++语法结合数据结构与算法算法处理游戏数据。


●学习成效:

学习了一个游戏应该如何编写与运行,学习了绘图库ncurses的使用,随着我们能力的提升,可以将简陋的 ASCII 字符换成漂亮的图片,再加上积分牌等等。


那么最后送给大家一个福利


这个夏天,一起谱写一段关于成长的故事——

免费C/C++技术交流群

进群领取GDI、2048及更多项目学习资料包

不定期有Socket编程和Hook(钩子)编程等网络黑客技术、腾讯内部核心技术比如QQ截图系统、编写雷霆战机等经典游戏的免费知识分享课。

长按识别二维码或

直接搜索QQ群号:335938634

如果你对程序员这份工作满怀热爱,如果你乐意走在技术的最前沿,不妨加入我们,将所有的迷惘一扫而光吧。

 

点击阅读原文,也可以参与哦

登录查看更多
2

相关内容

【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
264+阅读 · 2020年6月10日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
人脸识别入门实战
人工智能头条
4+阅读 · 2018年12月12日
各编程领域最好的入门书籍
程序猿
27+阅读 · 2018年7月29日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python 如何快速入门?
全球人工智能
6+阅读 · 2018年3月15日
各平台的推荐算法,太贴切了!
算法与数据结构
4+阅读 · 2018年1月23日
各厂推荐算法!
程序猿
17+阅读 · 2018年1月13日
Learning Dynamic Routing for Semantic Segmentation
Arxiv
8+阅读 · 2020年3月23日
Arxiv
24+阅读 · 2020年3月11日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
8+阅读 · 2018年3月17日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
264+阅读 · 2020年6月10日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
相关资讯
人脸识别入门实战
人工智能头条
4+阅读 · 2018年12月12日
各编程领域最好的入门书籍
程序猿
27+阅读 · 2018年7月29日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python 如何快速入门?
全球人工智能
6+阅读 · 2018年3月15日
各平台的推荐算法,太贴切了!
算法与数据结构
4+阅读 · 2018年1月23日
各厂推荐算法!
程序猿
17+阅读 · 2018年1月13日
Top
微信扫码咨询专知VIP会员