# :telescope: 宠物项目 宠物项目是学习编程语言、库和/或框架的实践经验的绝佳机会。它们还可以作为面试的起点,并帮助开启工作机会。 找到并选择适合宠物项目的正确想法可能具有挑战性。为了帮助克服这一问题,我们已经编制了一个链接和想法列表,以便让您开始。阅读完此列表后,您应该能够选择最合适的想法或受到启发创建自己的想法! ## :arrows_counterclockwise: 外部链接 * [Google Summer of Code](https://summerofcode.withgoogle.com/archive) 各种公司和社区提供了一系列项目,作为年度 Google 学生实习计划的一部分。存档包含近年来的项目,其中有大量针对 C++ 语言可用的项目。您可以在自己练习中找到感兴趣的东西或考虑尝试未来实习。 * [基于项目学习 - C++](https://github.com/practical-tutorials/project-based-learning#cc) 该存储库保存了不同编程语言(包括 C++)的一组小型项目集合,并提供广泛且详细清单。 * [Programming challenges](https://challenges.jeremyjaydan.com/) - [PNG image](https://challenges.jeremyjaydan.com/media/programming-challenges-v4.0.png) Pet Projects 想法轮盘允许您设置所需复杂性级别并旋转轮盘。旋转结果将随机选择要解决任务:) ## :boom: 宠物 - 项 目 列 表 ### :arrow_forward: 游戏 以下是不包含复杂 AI 或动态世界生成内容但可作为起点实现游戏功能列表。你可以在进展过程中改善额外功能。对于图形库,你可以使用易于使用且提供足够特色以创建简单 2D 或 2.5D 图形接口(使用精灵)的[SFML](https://www.sfml-dev.org/) 。如果你想做更多与应用 物理相关方面,则可以从简单引擎如[Box2D](https://box2d.org/) 开始,也可以学习更高级引擎 如[Cocos2D](https:/ /www.cocos.com/en/) 和[Unreal Engine](https://www.unrealengine.com/en-US/)。记得遵循“从简单到复杂”的规则,先从简单游戏开始,然后逐渐增加难度。 * 贪吃蛇 * 俄罗斯方块 * 生命游戏 * 十五数码问题 * 打砖块 * 扫雷 * 2048 * 纸牌接龙 * 蜘蛛纸牌接龙 * 弹球 * 奇才大冒险 * 迷宫 * 面向两个至四个玩家网络游戏:弹球、扑克、国际象棋、海战等 建议阅读以下源代码,其中包含有关 gamedev 各种算法信息。他们可能对上述任何一个游戏或者你自己构思出来都非常有用: - https://www.redblobgames.com/ - http://www.squidi.net/three/ --- ### :arrow_forward: 应用程序 创建应用程序时,从最简单的实现开始,例如控制台应用程序。完成每个步骤后,设置更复杂的任务,例如添加图形界面、使应用程序使用 HTTP 请求从源请求数据,然后将接收到的数据写入/读取到文件/数据库等。始终遵循“由简至繁”的原则。 以下是一些适合初学者的潜在项目示例: * 网络聊天(原始套接字或使用[gRPC](https://grpc.io/docs/languages/cpp/quickstart)) * 计算器 * 文件管理器 * 货币转换器 * 从任何 Github 存储库检索“pull-request”或“issue”列表 * 自动化常规任务,如各种计算和生成表格形式的报告。 --- ### :arrow_forward: 学生申请 以下示例更适合已经学习过或最近学习过基础课程(如线性代数、解析几何、数学分析、物理等)的学生。涉及应用他们所学理论知识的任务可以帮助他们实现两个目标:通过实际应用巩固知识,并练习编程。这条路不限于其他人,但对于学生来说比较容易因为他们对于这些科目有着新鲜记忆。 * 开发一个线性代数库,包括矩阵,向量和执行计算。 * 建模各种进程,如物理和理论力学。 * 实施数字方法,包括积分,微分,近似和插值 --- [**返回主页**](README.md)