我喜欢讲述这个故事,这既突出了我作为程序员的旅程的起点,又因为事后看来很有趣。
当我大概14岁的时候,我真的很喜欢在线回合制游戏。 我认为它叫做MechG。 在这个游戏中,我有自己的战斗机器人(机械手),可以训练,购买武器并与其他机械手作战。
与许多游戏一样,该游戏也可以收集资源以在游戏内市场购买武器和盔甲。 每天允许您几次开采这种矿物的方法。 您会看到25 x 25的正方形网格。 大多数正方形是黑色的,没有价值。 但是,有些正方形被涂成金色或铜色,代表相应的金属,您可以单击一个5 x 5的正方形部分,您将获得这25个正方形内的所有资源。 您可以执行几次此操作,然后在一天中的晚些时候再做一次。
这些矿物很重要,因为它们既可以用于升级武器和装甲,也可以在市场上以货币出售。 显然,目标是使您开采的黄金和铜的量最大化,而不是更昂贵的黄金。
当时14岁的我一直在研究C ++(那是14岁的孩子对吗?),我一直在寻找编写程序的真正问题。 有一天,我对自己想,如果我只能编写一些程序来检测该25 x 25网格上的金和铜的位置,那么我将节省大量时间,试图找出最佳的开采地点。
..所以我打开了Google。 我搜索了如何在C ++中检测屏幕上的颜色。 得到它了。 我可以调用一个函数来检测RGB像素值。
我搜索了RGB的含义。 得到它了。 像素在红色,绿色和蓝色方面就是什么颜色。
我搜索了如何在命令行上接受用户输入并检测屏幕位置。 甜。 现在,用户可以告诉我屏幕上第一个正方形的坐标,并且我可以对每个正方形的宽度以及网格列和行的数量进行硬编码,以开始在25 x 25网格中搜索铜和金。
我编写了一些循环。 对于25 x 25网格上的每个5 x 5选择,确定产生金和铜最大组合值的像素坐标。 确定后,将光标移动到该位置。
废话 我如何获取程序来移动光标……Google。 K.明白了。
将光标移动到最佳位置,等待用户单击,等待几秒钟以刷新并重复网格。
我设法做到了所有这些。 在这一点上,我认为我是一名编码专家。 我已经充分利用Google创建半自治矿工的方式。 太棒了
像游戏中的其他所有人一样,我在一个战队中,一个共享武器和盔甲的团队,还与其他氏族作战。等等。自然,我不得不自夸自己的创造力。 就像您期望的那样,其他氏族成员也希望参与其中。 因此,我第一次使用DRM。 如果我将此程序提供给其他人,如何阻止他们在我不知道的情况下将其发送给其他人,包括竞争对手。 我最后想要的是该程序可以在网站上免费运行。 毕竟这是我的程序。
Google:“我如何唯一地识别C ++中的计算机?”
答:“每台计算机都有唯一的标识符,这是用C ++调用的函数。”
好的。 因此,我要做的就是创建一个单独的程序,首先将其提供给其他人,该程序将读出其PC的唯一标识符,然后将该标识符硬编码到实际的半自动采矿程序中,以便该程序可以仅在他们的PC上运行。 简单吧? 是的 这就是我所做的。
在为同族氏族成员进行了大约十二次之后,有消息说我们的族群正在欺骗并使用一个神秘的自动采矿机。 游戏的创建者直接向我发送了消息。
“我们收到的消息是您写了一个自动矿工,该矿工正在欺骗并违反我们网站的规则。”(措辞)
“没有。 它不是自动矿工。 这是半自动的。 用户现在仍然必须单击。“我对此充满信心,显然我没有违反任何规则。
“什么是半自动的? 这听起来仍然像是对我的欺骗。”
然后,我继续解释该程序的实际作用,如何采取措施防止未经我同意而传播它,以及为什么我不觉得它在作弊。 在这一点上,我为他一再声称自己在作弊感到紧张。 坦白说,我14岁那年想要的最后一件事是,在一场针对回合制在线游戏中使用机器人的战斗中遇到了法律纠纷。 他不会对我叫警察,对吗?
“它仍然在作弊。 您需要摆脱采矿计划。”
“我可以删除我的副本,但无法从氏族成员的计算机中删除它。”
“但是我可以告诉您如何禁用它。 它基于RGB值工作,因此,如果您将金和铜图像的颜色更改很小,就会破坏其他挖掘程序。”
“大。 谢谢。”
就是这样。 我的第一个合法程序实际上已被其他人使用,并为其用户产生了有用的价值,但是在页面重新加载并且几乎与法律失之交臂之后,我立即被认为是无效的(我想过)。
我当时实际上退出了比赛,因为我感到沮丧和失败。 但是我迷上了编程。 我要求计算机为我做某事,并且做到了。 如果我能找出解决问题的步骤,并且知道如何将其转换为计算机代码,那么我可以使一个程序做任何事情! 今天,在解决问题和编写代码时,我仍然感到很兴奋,这就是我确信自己做出了正确的职业选择的方式。