Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尖叫出一些错误/问题_Javascript_Screeps - Fatal编程技术网

Javascript 尖叫出一些错误/问题

Javascript 尖叫出一些错误/问题,javascript,screeps,Javascript,Screeps,我想用SO来指出一些事情 首先,在这个游戏中使用“脚本”有点奇怪,因为与“普通”Javascript脚本不同,执行的方式是不同的。我们都知道,在脚本中,第一件事是首先执行的。因此,如果我有: Game.spawns.Spawn1.createCreep( [Game.WORK, Game.WORK, Game.CARRY, Game.MOVE], 'worker1'); Game.spawns.Spawn1.createCreep( [ Game.TOUGH, Game.TOUGH, Game.

我想用SO来指出一些事情

首先,在这个游戏中使用“脚本”有点奇怪,因为与“普通”Javascript脚本不同,执行的方式是不同的。我们都知道,在脚本中,第一件事是首先执行的。因此,如果我有:

Game.spawns.Spawn1.createCreep( [Game.WORK, Game.WORK, Game.CARRY, Game.MOVE], 'worker1');
Game.spawns.Spawn1.createCreep( [ Game.TOUGH, Game.TOUGH, Game.MOVE, Game.HEAL], 'healer1');
您可以假设将创建worker 1。事实并非如此。治疗者1被创建。它可以帮助人们了解脚本的执行方式。上面的例子基本上很简单,但在我的例子中,我有一大堆陈述,我花了一段时间才弄明白

接下来是爬行的名字。如果一个爬行动物死亡,名字应该是“消失”。我确实勾选了这个名字,这个名字“可用”可以再次使用,但出于某种原因,这个名字只有在勾选了几下后才可用。不是即时的!因此,客户机和“服务器”之间存在差异。现在,通过多次迭代而不是重用名称,这显然是可以修复的。说实话,我更喜欢重复使用名字。为什么?也许你的脚本将运行数年,这将导致像“worker1209128102981209128”这样的名字,这在我的强迫症患者看来不是“好的”。在我的例子中,我等待“name ready is use”错误消失几次,然后创建它。你有点“浪费”时间

Console.log();(空),将导致你的精神崩溃。这种风格会被“窃听”

下一件事:记忆状态在新游戏中并不总是被清除。导致了一些奇怪的事情:你已经在你自己的记忆中有了东西,或者敌人的爬行波已经在波1之外的波上了

我在API中没有发现的另一个东西;爬虫首先在他们的第一个模块上获得命中率。所以,你是聪明的把强硬的第一,因为它是一个“无用”的模块。其次是其他不太有用的模块

现在在游戏模式中,敌人的AI可以被窃听。例如,如果你不移动你的爬虫,敌人就不会攻击你。同样的道理,当你让一个敌人在波浪中活着爬行时,AI可能会被“窃听”。 不确定这是否正常,但过了一会儿我就有了下面的内容;我不能“相信”这么快的速度对抗这么多如此强大的敌人是正常的(看看身体模块已经有了)

最后,我可能想让开发人员做一些我们可以与开发人员交流的事情。尽管stackoverflow很好,但IMO更适合那些希望朝着正确方向稍微推动的人


谢谢,我真的很喜欢这个游戏,我希望它会越来越大!:)

如果CreateScrew一次调用多次,那么只会创建最后一次调用中的Screw。每次调用都将覆盖爬行以创建。但这也有一些问题:

  • 您无法获取是否已在此勾号中调用CreateScrep-将仅在下一个勾号时设置生成属性。所以你必须自己追踪
  • 如果您将内存数据传递给CreateScrew,它将立即在内存中设置,即使实际上不会创建蠕变,因为对CreateScrew的另一个调用重写了它。这会使内存因未使用的数据而变脏,除非您自己跟踪(1)并且在同一个生成上每勾选不调用CreateScrew超过一次

  • 你的第一点不太对。它确实创建了这两个函数,它只是按照调用
    createScrew()
    的顺序将它们添加到堆栈中。后进先出(后进先出),所以您创建的最后一个项目是第一个生成的项目。还有,标题上写的是问题,我错过了吗?我说,你期待。。第一个先出来的。javascript通常就是这样工作的。即使是一般的脚本。生成2个警报或console.log,它将输出脚本中的“第一个”。相反,在这里,典型的“函数调用”或者你应该给它起的名字,都是“后进先出”的。并不是说这是不正确的,但应该提到:)你们说你们会假设工人是被创造出来的,但治疗者是被创造出来的,若你们不是那个意思,你们应该把它改成你们的意思!你的问题是什么?这听起来像是一种评论/半咆哮。您要求SO的全体成员为您回答什么具体问题?因此,这不是一个发布旨在“指出一些事情”的文章的地方;这是一个问答网站,在那里你发布一个问题,人们回答它。