1

在学校,我们使用这个名为 code.org 的编码网站。它非常方便,似乎可以做普通编码软件可以做的任何事情,只是对于像我这样的初学者来说更容易消化。我在问一个我不确定甚至可以回答的问题。在游戏中,我试图弄清楚如何将 cps(每秒 cookie)添加到计数器。我的问题是这可以在循环中完成,但其他事情需要在循环之外发生。所以我不确定如何添加它们,但仍然能够运行其他代码而不会陷入循环。代码将在底部发布。这个项目只是为了好玩,我不打算把这个工作当作我自己的。谢谢您的帮助!

(请注意,这是我到目前为止的全部代码......)

var cookies = 0;
var incriment = 1;
var cps = 0;
var autoClickers = 0;
var autoClickerCost = 1;
var autoClickerAdd = 0.50;
var upgradeClickCost = 100;
setText("upgradeClickCostText","cost: "+ upgradeClickCost);
setText("autoClickerCostText", "cost: " + autoClickerCost);
onEvent("image1", "click", function() {
  cookies = cookies + incriment;
  console.log("you have: "+cookies+" cookies");
  setText("cookieNumber", "Cookies: " + cookies);
});
onEvent("upgradeClick", "click", function() {
  if(cookies >= upgradeClickCost){
    cookies = cookies - upgradeClickCost;
    console.log("you have: "+cookies+" cookies");
    setText("cookieNumber", "Cookies: " + cookies);
    incriment = incriment * 2;
    upgradeClickCost = upgradeClickCost * 2;
    setText("upgradeClickCostText", "cost: "+ upgradeClickCost);
  }
});
onEvent("shopScrnBtn", "click", function() {
  setScreen("shop_screen");
  console.log("went to shop!");
});
onEvent("gameScrnBtn", "click", function() {
  setScreen("game_screen");
  console.log("went to cookie!");
});
function addCookies(){
  cookies = cookies + cps;
}

onEvent("buyAutoClicker", "click", function() {
  if(cookies >= autoClickerCost){
    cookies = cookies - autoClickerCost;
    autoClickers++;
    console.log("you have: "+cookies+" cookies");
    setText("cookieNumber", "Cookies: " + cookies);
    autoClickerAdd = autoClickerAdd * autoClickers;
    cps = cps + autoClickerAdd;
  }
  console.log("auto clicker purchased");
});

(另请注意,此代码段无法正常工作,因为您不会在 code.org 上或没有适当的按钮来处理事件。)

4

2 回答 2

0

我在这里没有看到任何循环,只需单击事件。我错过了什么吗?如果有一个循环,我们可以看到里面的内容和外面的内容。if通常,您使用条件语句在循环中处理变量更改(而不是更改它们) 。

于 2018-11-26T15:12:58.323 回答
0

您正在寻找的功能可能是每n毫秒setInterval运行一个函数。

function runAutoClicker() {
  cookies = cookies + cps;
}

// Run auto-clicker every second (every 1000 milliseconds)
setInterval(runAutoClicker, 1000);
于 2019-03-11T22:29:29.530 回答