C# 我的代码在接受输入时遇到问题,并且在点击按钮两次之前不会开始递增或递减,我的 ><= 语句也不起作用



以下是正在发生的事情。

第一个问题是:

我需要按两次方向按钮来开始递增和/或递减x和y变量。

如果我改变前的方向

从右到左,x变量将在开始递减之前再次递增。

第二期:

我有基于玩家当前x和y的时间。

然而,当我超过2000年时,时间直到2001年才改变。

如果我回到1999年,时间直到1998年才改变…

即使我的代码显示,这也是一样的

if(y>=0 && y< 2000)这也是同样的问题,我认为2000年到1999年会解决这个问题,但事实并非如此。

我不知道是什么导致了这两个问题,我试图弄清楚。。。如果有人知道为什么会这样,我很想知道。

int x = 1995;
int y = 0;
int time = 0;
Console.WriteLine("X: 0Y: 0Time: 0");
while(true){
ConsoleKey key = Console.ReadKey().Key;
Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop -1);
Console.WriteLine($"X: {x,6} Y:{y,6} Time: {time,3}");
Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop +1);
//Change Timezones
if (x >=0 && x< 1999){
time=0;
}
else if (x>=2000 && x< 3999){
time=1;
}
....
//Movement   
if (key == ConsoleKey.LeftArrow){
x=x-1;
}
else if (key == ConsoleKey.RightArrow){
x=x+1;
}
....
}

问题1">从右到左,x变量将在开始递减之前再次递增";

这是因为您打印的是上一次迭代的值,而不是新的值。将您的Console.WriteLine移动到脚本的末尾,它将向您显示更新后的值

问题2">然而,当我超过2000时,时间直到2001年才改变;

这很可能是由与问题1相同的原因引起的。这也可能是由于您可能在运行更改时区代码块后更改x的值。确保你的逻辑顺序是正确的。

问题3">如果我回到1999年,时间直到1998年才改变";

你的逻辑中的价值观之间存在差距。您的第一个时区代码块中有x < 1999,第二个时区码块中有x >= 2000。这意味着,例如,如果您从2003开始并降低值,则由于x < 1999部分的原因,只有当您到达1998时,时间才会发生变化。有一个值在递减或递增时都不会触发更改,1999

问题1:

Console.SetCursorPosition(Console.CursorLert, Console.CursorTop, -1);

不编译,因为它必须是Console.CursorLeft

问题2:

SetCursorPosition()的任何重载都不需要3个参数。也许你想要

Console.CursorTop -1

问题3:

变量xytime未初始化,因此不能在行中使用

Console.WriteLine($"X: {x,6} Y:{y,6} Time: {time,3}");

问题4:

C#中的比较要求行两边都有一个变量

else if (x>=2000 && < 3999){

尝试

else if (x>=2000 && x<3999){

问题5:

你的定义有差距:

x< 1999 // ... 1997, 1998
x>=2000 // 2000, 2001, ...

所以你忽略了1999年

相关内容

  • 没有找到相关文章