写一个测试“cookie clicker”游戏

问题描述 投票:1回答:2

在学校我们使用这个名为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上或有适当的按钮来处理事件。)

javascript code.org
2个回答
0
投票

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


0
投票

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

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

// Run auto-clicker every second (every 1000 milliseconds)
setInterval(runAutoClicker, 1000);
© www.soinside.com 2019 - 2024. All rights reserved.