游戏模拟器超时

时间:2013-02-25 02:06:38

标签: google-apps-script

这是我在这里发表的第一篇文章。提前感谢您抽出宝贵时间阅读我的问题。

我是新手编码员。我有十年前的计算机科学辅修课。我想要做一些简单的编码,并且有机会,所以我做到了!

在开发游戏时,我想运行一个程序来确定给定参数的给定结果的可能性。我兴奋地达到了这一点,但Google Scripts无法处理运行60,000,000个可能的场景以计算胜利%。

我得到了,“错误:超过最长执行时间。”

我只是想找到我和运行这个程序之间的最短路径。思路:

1)有没有办法删除最长的执行时间,让它只需要一整天?还有其他方法可以让它在Google脚本中运行吗? 2)也许我可以通过输入随机数来运行较少数量的试验。有没有办法在Google脚本中生成随机数? 3)除了Google Scripts之外,我应该做些什么吗?如果是这样,我应该研究一款适用于Mac的免费/价格合理的编译器吗?我尝试将它导入Xcode,但我很困惑,似乎无法进入一个简单的编译位置。此外,将其导入“C”会产生一些兼容性问题;虽然我可能只需要把它搞砸并在这里重组它。

作为参考,以下是将其计时的功能:

function dieFeeder(winCount, fSkill, fMagnitude, fHeart, fDie1, fDie2, fDie3, fDie4,   fDie5, cSkill, cMagnitude, cHeart, cDie1, cDie2, cDie3, cDie4, cDie5){
// a parent function to function questionMatrix, feeds the changing dice into it

 var matrixWinner;  

//This 'for' clause keeps going until all dice permutations have been tried out

 for (var i=0; i<60466176; i++){
//This part changes the dice to go through all combiations in a way similar to counting in base 6

if (cDie5 == 7){
  cDie5 = 1;
  cDie4 = cDie4+1;
}

if (cDie4 == 7){
  cDie4 = 1;
  cDie3 = cDie3 +1;
}  

if (cDie3 == 7){
  cDie3 = 1;
  cDie2 = cDie2 +1;
}  

if (cDie2 == 7){
  cDie2 = 1;
  cDie1 = cDie1 +1;
}  

if (cDie1 == 7){
  cDie1 = 1;
  fDie5 = fDie5 +1;
}  

if (fDie5 == 7){
  fDie5 = 1;
  fDie4 = fDie4 +1;
}  

if (fDie4 == 7){
  fDie4 = 1;
  fDie3 = fDie3 +1;
}  

if (fDie3 == 7){
  fDie3 = 1;
  fDie2 = fDie2 +1;
}      

if (fDie2 == 7){
  fDie2 = 1;
  fDie1 = fDie1 +1;
}  

cDie5 = cDie5 + 1;

//This part checks to see who wins and increases the winCount if it was the Favorite

matrixWinner = questionMatrix(fSkill, fMagnitude, fHeart, fDie1, fDie2, fDie3, fDie4, fDie5, cSkill, cMagnitude, cHeart, cDie1, cDie2, cDie3, cDie4, cDie5);

if (matrixWinner == 'favorite'){

  winCount = winCount +1;

}

}

  return winCount;

}

1 个答案:

答案 0 :(得分:0)

  1. 无法解除最长执行时间。有限制,以便其他用户(像我一样)也有时间运行我们的脚本!解决这个问题的方法是将你的问题分解成许多子问题。

    • 一种解决方案是在运行时间低于某个阈值(例如3分钟)时继续执行脚本(即跟踪脚本运行的时间)。然后保存与脚本相关的所有状态(变量等)。将这些保存到ScriptDb。然后让您的脚本在5分钟的触发器上运行。当您的脚本再次运行时,它会从ScriptDb读取值并从中断处继续。
  2. 如果您要查找随机数,请使用Math.random()。 Google Apps脚本是基于javascript构建的,因此可以使用基本的javascript函数。

  3. 关于我对#2的回答,您所展示的内容完全是javascript,因此您只需将代码复制到某个网页即可运行。 (For testing, you can use jsfiddle)。 您还需要定义if (cDie5 == 7){