我正在尝试使用Cookie Clickers在C#中为我的大学工作重新创建一个应用程序。我现在要做的就是拥有它,所以当我按下我的应用程序上的升级按钮时,它将像Cookie Clicker一样工作,它首先增加2,然后在3次点击该按钮后,它将从2增加到4并且继续这样做。我目前得到了这个,但由于某种原因,它只是一个固定数量的'15',并没有增加。现在我不完全理解这种方法是如何工作的,但我也希望有人可以为我详细说明。
这是功能:
static double GeometricSeries(double a, double r, int n)
{
return a * (1 - Math.Pow(r, n + 1)) / (1 - r);
}
以下是我执行该功能的方法:
double x = GeometricSeries(1, 2, 3);
GV.CpsCostAmount = x;
(实施例) 为了详细说明我的问题,我想知道如何改变这一点,以便在升级的每一定时间内,它将使价格增加x金额,并且在x金额升级之后增加它。很难用言语解释我的意思,但是如果你看到游戏,那么你理解我的意思的最佳方式。
升级按钮功能:
private void button2_Click(object sender, EventArgs e)
{
double a = 2;
double r = 3;
int n = 4;
double x = GeometricSeries(a, r, n);
GV.CpsCostAmount = x;
//Finder
if (GV.TotalMoneyValue < GV.CpsCostAmount)
{
//Return Error
tmrErrorShow.Enabled = true;
lblErrorMessage.Text = "You don't have enough money for that.";
return;
}
else if (GV.TotalMoneyValue >= GV.CpsCostAmount)
{
//Minus Money
int ToDecreaseBy = Convert.ToInt32(GV.CpsCostAmount);
GV.TotalMoneyValue -= ToDecreaseBy;
lblMoney.Text = string.Format("{0}{1:#,0}", GV.MoneyPrefix, GV.TotalMoneyValue);
//Update Button Text
btnUpgradeCps.Text = string.Format("{0}{1}", GV.UpgradeCpsPrefix, GV.CpsCostAmount);
//Increase CPS
int ToIncreaseBy = GV.TotalCPSValue += GV.CPSIncrease;
lblClicksPerSecond.Text = string.Format("{0}{1:#,#}", GV.CpsPrefix, GV.TotalCPSValue);
//Check Total Damage and set
int TotalDamage = GV.TotalDPSValue + GV.TotalCPSValue;
lblTotalDamage.Text = string.Format("{0}{1:#,#}", GV.TotalPrefix, TotalDamage);
}
else
{
tmrErrorShow.Enabled = true;
lblErrorMessage.Text = "Something went quite very wrong.";
return;
}
}
答案 0 :(得分:0)
数字1,2和3称为“文字”,这意味着GeometricSeries方法将始终接收这些数字作为输入。 为了使mehod得到与15不同的结果,你需要将变量传递给方法,并且在你点击升级按钮时以某种方式改变这些变量。
double a = 1;
double r = 2;
int n = 3
double x = GeometricSeries(a, r, n);
现在,如果修改变量a,r或n,该方法将返回不同的值。
编辑:尝试在方法之外声明三个变量,并且只在单击按钮时递增它们。声明方法内部的变量将使方法在单击按钮时始终使用相同的数字,因此需要在外部声明变量,仅使用方法来增加它们。
double a = 2;
double r = 3;
int n = 4;
private void button2_Click(object sender, EventArgs e)
{
n++; // For instance
double x = GeometricSeries(a, r, n);
GV.CpsCostAmount = x;
//The rest of your code...
}
答案 1 :(得分:0)
我不知道Cookie Clickers是什么。
“它首先增加2,然后在该按钮点击3次后,它将从2增加到4并继续这样做”
如果您希望每三次点击加倍,为什么不这样做呢?
int numClicks=0;
void OnUpgrade()
{
numClicks++;
if (numClicks == 3)
{
GV.CpsCostAmount = GV.CpsCostAmount * 2;
numClicks = 0;
}
}