理工科大一往往会学习C/C++,期末会有大作业。这篇文章就是一个简单的C++大作业程序。我也是大一,所以觉着哪里写得不好欢迎在评论区提出。程序总体上讲是个“总分总”结构。
一 实现这个程序要八步。
第一步 程序的功能设计
程序的目标有两个。一是辅助我备考四六级,帮助生活和提高效率。二是提供一些娱乐活动。
针对这两个目标,我设计了六个功能---单词助手、计划待办、密码库、聊天室、3D坦克大战、趣味围棋。
其中单词助手、计划待办、密码库为备考四六级和提高账户管理效率而做的。聊天室、趣味围棋和3D坦克大战是为娱乐而设计的。
以下分别通过图片展示

想出一个复杂的密码和账户总是非常麻烦,要记住密码就更麻烦了。而简单的密码也不安全。这部分功能就可以解决这个问题。

计划本。因为我经常忘事情所以需要个计划本。(PS:不过我觉着计划还是记了纸上更有效)

单词本,是为了9月的四级考试而准备的。

趣味围棋,我是围棋两段来着。现在还经常看看围棋视频。不过棋力不行了。另外这个程序的提子,数气,判断胜负之类的都没做,应该说是个五子棋比较合适。以后再完善,现在就这样吧。

聊天室,本来想做进行安全加密的聊天室,然后可以在外网联络的那种。但是时间不够。所以只是一个简单的聊天室。

这个是我用unity做的游戏。动画、模型、声音来自unity官方教程。我也是照着教程来的。PS:期间我还尝试过UE4开发游戏,不过时间不够没有做出一个比较好的作品。Unity是C#,UE4是C++。不知道C#的可不可以交C++的作业。
功能很杂是因为把一些以前的程序也整合了整合放进去了,所以有点不伦不类。

其实上图的文件只能实现前四个功能,后两个功能是直接调用了一些以前写的程序来完成的。分开是因为聊天室功能还要分成客户端和服务端,不方便弄成一个,而3D坦克大战是用Unity做的游戏,放不进去。
第二步 搭好基础设施
对于前三个功能,我们可以看到都属于增删改查类型的,所以考虑先设计一个类模板,提供共同的操作,这样不管是扩展程序,deBug还是写程序都会简单很多。然后本着练习的原则,没有选择STL,而是自己做一个链表模板。
下面是链表模板的介绍(list.h)。
首先是节点Node类,这里为了方便写代码所以用的双向的。单向的实现一些功能会更麻烦。
template
接着是List类了,需要注意的是类模板声明和定义最好都写在一起。
//remove()要求超载==
这样第一个文件"list.h"就OK了。有了类模板作为基础设施,之后的工作就十分简单了。
第三步 设置各个独立的上层建筑
上层建筑是指三个类。Password类,Word类,Plan类
下面是Password类
“password.h”
#pragma warning(disable:4996)
"password.cpp"
#include
Word类,这个类直接迁移自我以前写的程序,所以一些没用到的数据成员其实是懒得改了。功能上做了很多简化,大家有兴趣可以接着完善之类的。按理说声明和定义最好分开,不过因为分开写麻烦所以就没分了。。。。
"word.h"
#pragma once
“word.cpp”
#include
最后就是Plan类了
“plan.h”
#pragma once
"plan.cpp"
#include
其实写Plan类时没有测试,不过我觉着应该没问题,大概,吧。。。。
至此三个上层建筑就已经搭建完了,因为有链表类模板,再进行扩展也是很轻松的事情。
但这三个类只能实现前三个功能,之后三个功能将在另一部分讲。
第四步 对上层建筑做个总结的类(语文不好见谅)
“user.h”
#pragma once
"user.cpp"
#include
做完了这个类,我们就只需要用一个User类就够了,接下来就是main()函数了
第五步 main.cpp
//命名:驼峰式
补充一下,之前代码中看到的“common.h”
#pragma once
用处就是把很多文件共有的东西提出来放一起,这样只用写一份就够了
用的IDE是Visual Studio 2019,编译完成后没有错误和警告,简单的测试也没问题。不过没有特别细致的测试,说不定会有什么严重的BUG。
第六步 聊天室的开发
我用的方法是B站搜索聊天室,然后会有很多教程,跟着做一做就OK了,看不懂再换一个,网上资源很丰富。其实一开始的目标是用自己的加密算法加密聊天信息,并且实现外网的聊天。但是因为要准备考试,还有N多作业要做,精力不够就没做下去。。。。
此外这里比较令我惊奇的是改一下头文件的先后顺序就会出现很多错误,我对这个事情还做了几次实验,但也没弄明白怎么回事,总之非常玄学。
第七步 3D坦克大战的开发
首先要下一个unity, 了解一下C#,接着B站搜索相关教程。(PS,官网上有这个3D坦克大战的教程,而且提供模型和声音,动画资源)。剩下的就是折腾了。生命在于折腾。如何折腾比较靠谱请参阅官方教程以及B站的N多教程。
第八步 方圆围棋
这块也是直接迁移以前的程序。当时是初学,对GUI有执念,找到了easyX和网上的教程做的。网上资源很丰富,如果GUI不能满足你,我推荐用UE4做个3D效果的围棋程序。在B站上有人发过UE4做的3D效果的围棋,可以搜到,可以在那里学习。
虽然说是围棋,其实只弄了个壳子,并没有实现提子,数气,判断胜负。一些函数也没有写好,围棋这部分也是直接从以前写的程序里搬过来的,参考的B站上的教程,所以B站真是个学习网站,好东西不少。注意,这部分要求在目录里有一张名字为“1.jpg”的背景图片,大家可以按照自己的爱好画一画。此外在选择方圆围棋功能后会导致控制台被关闭,其实也有方法解决这个问题,大家可以百度一下如何解决,这里就不解决了,因为我也累了。另外这里用到了easyX(就是“<graphics.h>”),不知道easyX或者没有的可以百度一下下载一个,过程很简单,我就不细说了。
"go.h"
#pragma once
"go.cpp"
#include
到这里程序就结束了,还不满足的可以尝试制作二维码程序,实现扫码,和生成二维码。这个在github上有很多教程和范例可以参考,还有学长在github上放出来二维码的项目,为学弟学妹们扫清道路。B站up回形针的视频也有对二维码的简单介绍。教程多数用Qt的。
二 文件结构
估计这么长,大家应该是直接不看了或者直接翻到底吧。
