KWoC’18 | 项目报告

关于科华

KWoC — Kharagpur代码冬季课程是为期5周的在线课程,面向刚接触开源软件开发的学生。

KWoC由Kharagpur开源协会(KOSS),IIT Kharagpur组织。 KWoC为导师提供了一个平台,供其开设对初学者友好的开源项目,并为学生提供编程和构建编程技能的平台。该平台是远程执行的,大部分代码都托管在GitHub上。

选择项目

这些项目和导师于12月1日向学生开放。 网站上提供的所有项目都非常有趣。 我想为每个人都做出贡献,但是我意识到,为了学习某些东西,我可能不得不选择一个项目并尽力做到最好。 我选择了BALL SACKER ,该项目的指导者是Arnav Tiwari

它是在OpenCV中创建的自上而下的2d游戏,OpenCV可能根本不适合创建游戏,但它为我提供了一个机会,可以根据我们的需要更改为完全不同的工作负载实现的软件。 我自己是一名游戏玩家,也激发了我选择项目的兴趣。 因为我们可以实际可视化代码,并且在为项目学习时也很有趣。

我的经验

KWoC为我提供了一个将我的语言技能应用到实际应用程序中的机会,任何编程知识为零的人都可以将其可视化。 对项目BALL SACKER感兴趣,我立即克隆了存储库并尝试运行初始代码,以查看发生什至在我向指导者发送邮件之前,我想为该项目做出贡献的情况。 发现该代码不起作用后,我通过电子邮件发送了我的导师,并尝试修复该代码,这就是我在12月1日自己在GitHub上进行第一个非常简单的Pull Request的方式。

从那时起,我尽我最大的努力跟上工作并为该项目做出贡献。 我的许多提交未显示在统计信息表中,因为它是在12月5日之前完成的,尽管我知道我的提交不会在该表中显示,但我仍然对代码有所贡献,因为我真的很想在代码表上工作。项目。 我遇到了问题,并在聊天论坛中适当地问了他们,​​我的导师在这里澄清了所有问题。 无论我在哪里遇到问题,我都会查看有关Interent的教程,仔细研究问题并思考,直到我对实现功能或解决问题有了正确的想法。

总体而言,KWoC帮助我学习了OpenCV,也使我对开放源代码的工作方式有了深刻的了解。 我在KWoC方面确实有一个有趣且知识丰富的经验,我希望有更多的机会,因为这些机会将使学生为开源做出积极的贡献。

合并公关

1.将’nullptr’更改为’NULL’

在我的第一个PR中,我将代码中的所有预设“ nullptr”更改为“ NULL”,因为编译器无法检测到“ nullptr”。

用Ishan1742将’nullptr’替换为’NULL’·拉取请求#18·arnav-t /射击游戏
更改Makefile以在Ubuntu 16.04 KWoC github.com中运行

当我得到我的第一个LGTM并合并我的提交时,这非常令人满足。 最终,游戏在初始阶段至少开始工作。

2.将FrameRate锁定为60 fps

最初,我尝试将时间延迟增加固定数量,以使代码以60 fps的速度运行。 关于在我的硬件中以0 fps运行的某些东西在其他硬件中可能无法以60 fps运行的想法是错误的,因此我必须设置delay变量以解决此问题。

为了测试代码,我必须编写自己的函数(用作fps计数器)并将其打印在控制台上。 感谢StackOverflow😜为我提供了有关如何创建自己的fps计数器的信息。

通过Ishan1742将帧速率锁定为60 fps·拉取请求#27·arnav-t /射击游戏
fps不会超过 60。github.com

我收到了另一个LGTM,现在东西变得很有趣。 我更彻底地了解了代码,并开始处理其他问题。

3.使玩家比弹丸更大

使玩家变大,通过Ishan1742修复缩进·拉取请求#36·arnav-t /射击游戏
GitHub是超过2800万开发人员的家,他们共同致力于托管和审查代码,管理项目以及构建…… github.com

我增加了球员的人数,也使他们的身体更大。 我在这里面临的问题是,射弹正在打击自己的创造者。 因此,继续进行修复。

4.添加游戏标志

游戏结束符号的添加使游戏看起来像是游戏结束,并且有赢家和输家。 我想在代码中添加半透明的氛围,从而学会了如何添加图像并打印这些图像的平均值。 因为如果您输了,游戏中就会有敌人互相残杀。

通过Ishan1742添加了游戏结束标志·拉取请求#44·arnav-t /射击游戏
GitHub是超过2800万开发人员的家,他们共同致力于托管和审查代码,管理项目以及构建…… github.com

5.减少对玩家的伤害

游戏在某些方面很难玩。 因此减少了玩家伤害,但敌人伤害保持不变,因此玩家可以在死亡前杀死至少一个敌人。

通过Ishan1742减少玩家的hitDamage·拉取请求#55·arnav-t /射击游戏
将玩家的hitDamage减半。 需要15枪杀死而不是10枪。github.com

6.更改了重新加载栏和健康栏的外观,以增加光晕

为了强调失去多少生命值以及何时失去生命以及玩家充电武器时,发光被添加到重新加载栏和生命栏上。

在重新装填时发光并受到Ishan1742的伤害·拉取请求#68·arnav-t /射击游戏
GitHub是超过2800万开发人员的家,他们共同致力于托管和审查代码,管理项目以及构建…… github.com

7.给玩家增加阴影

迄今为止,要实现对玩家投射的光线的阻挡是最难理解的逻辑及其实现方法。 编码部分非常简单。

通过Ishan1742向角色添加阴影·拉取请求#76·arnav-t /射击游戏
GitHub是超过2800万开发人员的家,他们共同致力于托管和审查代码,管理项目以及构建…… github.com

结论

非常感谢Arnav Tiwari指导我完成该计划,澄清并解决了我所有的疑问,并在需要时提供了宝贵的意见。 再次感谢! 😃

还要感谢KOSS的IIT Kharagpur举办了一个计划,该计划教授有关FOSS的宝贵知识并保持其对初学者的友好性。

总体而言,我期待以更多的方式为开源软件世界做出更多贡献。