我一直在尝试制作战舰游戏。这是我的第一次编码,所以我正在尝试学习最好和最有效的编写方式。
基本上,目前我的问题是我有一个名为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个字符串以下,或者如果键入了字符串值,有没有办法我可以轻松地替换它们?
变量各不相同 -这就是为什么它们被称为变量的原因-进行变量更改的方法是使用赋值运算符=。如果您希望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>可以。)