替换功能查询

Its*_*ate -1 c#

我一直在尝试制作战舰游戏。这是我的第一次编码,所以我正在尝试学习最好和最有效的编写方式。

基本上,目前我的问题是我有一个名为A1to 的字符串A10,我有一些可以随机选择A1-的代码A10。我想发生的事情是当选择了一个坐标即时A5,它将随后将的值更改A5为X或H,但是我在执行此操作时遇到了问题。

我已经尝试过使用A1.Replace("0", "1")它作为测试,但是它不起作用。

var A1 = "0";
var A2 = "0";
var A3 = "0";
var A4 = "0";
var A5 = "0";
var A6 = "0";
var A7 = "0";
var A8 = "0";
var A9 = "0";
var A10 = "0";

string[] DestroyerC = { "A1", "A2", "A3", "A4","A5","A6","A7",A8","A9",A10"};

// Create a Random object  
Random rand = new Random();
// Generate a random index less than the size of the array.  
int index = rand.Next(DestroyerC.Length);

var CoordinatesD1 = ($"{DestroyerC[index]}");

string letters = string.Empty;
string numbers = string.Empty;

foreach (char c in CoordinatesD1)
{
    if (Char.IsLetter(c))
    {
        letters += c;
    }
    if (Char.IsNumber(c))
    {
        numbers += c;
    }
}

int number = int.Parse(numbers);

String Ship1 = CoordinatesD1;
String Ship2 = (letters + (number + 1));
String Ship3 = (letters + (number + 2));
String Ship4 = (letters + (number + 3));

// Enter Code A1, A2, A3

String Shot;

Shot = Console.ReadLine().ToUpper();

// Hit or Miss
if (Shot == CoordinatesD1)
{
    BackgroundColor = ConsoleColor.Green;
    WriteLine("Hit!");
    Console.ResetColor();
    // Replace Sting with new value
    A1.Replace("0","X");
}
else
{
    BackgroundColor = ConsoleColor.DarkRed;
    WriteLine("Miss!");
    Console.ResetColor();
    A1.Replace("0","M");
Run Code Online (Sandbox Code Playgroud)

所以我想在此代码中发生的是玩家输入代码时,即A1我希望字符串A1从0更改为X(对于命中)和M(对于未命中)。有没有办法我可以将所有这些代码链接到1个字符串以下,或者如果键入了字符串值,有没有办法我可以轻松地替换它们?

Eri*_*ert 8

变量各不相同 -这就是为什么它们被称为变量的原因-进行变量更改的方法是使用赋值运算符=。如果您希望A1变成“ 1”,请说

A1 = "1";
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用A1.Replace("0", "1")它作为测试,但是它不起作用。

这是一个常见的初学者错误,有时也会由专家犯。 Replace不会改变任何东西。Replace 产生一个具有替换的新字符串。因此,A1.Replace(whatever)意味着“进行替换,然后忽略它”。你说过

A1 = A1.Replace("0", "1");
Run Code Online (Sandbox Code Playgroud)

那样你就可以得到你想要的,但这只是一个太复杂的说法

A1 = "1".
Run Code Online (Sandbox Code Playgroud)

顺便说一句,今天将是学习数组和列表的好日子。您的代码通常按照以下方式编写:

var locations = new List<string>{"0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
Run Code Online (Sandbox Code Playgroud)

要么

var locations = new []{"0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
Run Code Online (Sandbox Code Playgroud)

现在不用A1 = whatever;你说locations[0] = whatever;。列表和数组为您提供了一组从零开始的编号位置。(不同之处在于数组(第二个示例)不允许您更改其中的元素数量,但是List<string>可以。)

  • @ItsOliMate:绝对有!我是初学者的忠实拥护者,尽早学习正确的做事方式。但是在尝试跑步之前,还有一个关于走路的论点。但是,请继续保持这些想法,特别是:*是否有一种方法可以使代码更像基础概念一样阅读*,并且*是否有可以将我转移到执行该操作的类或方法上的操作?*重复应用这两个方法原则就是我们如何获得易于理解的代码。 (2认同)