首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ReadKey()实现移动槽阵列

用ReadKey()实现移动槽阵列
EN

Stack Overflow用户
提问于 2015-11-06 01:10:00
回答 1查看 89关注 0票数 2

在开始时,我将告诉您,我是C#和编程新手。试着一个人尽可能多地学习。我的第一个学习项目很简单。移动槽阵列10x10使用"W,S,A,D“。这是“游戏”,让用户移动他的角色槽阵列。问题是,我希望“我的性格”移动,只要他的位置将超出范围。所以,我想我是在尝试做一个不确定的循环,就是打印位置,让我们继续前进。例如,如果我使用的是do{}while(true),则在按一个键后,位置一直在变化。我正在寻找建议,我应该如何构造循环为这种“运动”。我正在附加我的代码,负责移动字符。

代码语言:javascript
复制
int axisx = 0;

int axisy = 0;
var movement = Console.ReadKey();
int[,] level = new int[10, 10];
if (movement.Key.ToString() == "W"){axisy = axisy+1;}
else if (movement.Key.ToString() == "S"){axisy = axisy-1;}
else if (movement.Key.ToString() == "D"){axisx = axisx+1;}
else if (movement.Key.ToString() == "A"){axisx = axisx-1;}
Console.WriteLine("{2} is on position:{0},{1}", axisx, axisy, Player1.getBuilderName());

if (movement.Key == ConsoleKey.Escape)
{
    Console.WriteLine("You pressed Escape, Goodbye");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-06 01:20:30

您可以使用while(true)循环:

int轴=0,int轴= 0;

代码语言:javascript
复制
while (true)
{
    var movement = Console.ReadKey();
    if (movement.KeyChar == 'W' || movement.KeyChar == 'w')
    {
        axisy += 1;
    }
    else if (movement.KeyChar == 'S' || movement.KeyChar == 's')
    {
        axisy -= 1;
    }
    else if (movement.KeyChar == 'D' || movement.KeyChar == 'd')
    {
        axisx += 1;
    }
    else if (movement.KeyChar == 'A' || movement.KeyChar == 'a')
    {
        axisx -= 1;
    }
    Console.WriteLine("{2} is on position:{0},{1}", axisx, axisy, Player1.getBuilderName());

    if (movement.Key == ConsoleKey.Escape)
    {
        Console.WriteLine("You pressed Escape, Goodbye");
        break;
    }
}

中断;在ConsoleKey.Escape块中,将使您脱离循环。您还可以使用movement.KeyChar而不是movement.Key.ToString(),字符串在.NET中是不可变的,所以每次执行ToString()时都要创建一个新字符串。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33557808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档