【发布时间】:2012-12-27 18:10:39
【问题描述】:
我正在尝试创建一种“你击沉了我的战舰”的游戏。 到目前为止,我有两个数组: 1. 棋盘(桌子)——玩的表面 2. 船(Avion)——在这种情况下是飞机
我想要实现的是创建一个包含整个表面并将平原放在其中的第三个数组。
所以我有 飞机:
0 0 1 0 0
1 1 1 1 1
0 0 1 0 0
0 0 1 0 0
0 1 1 1 0
和表面:
1 2 3 4 5 6 7 8 8 10
A 0 0 0 0 0 0 0 0 0 0
B 0 0 0 0 0 0 0 0 0 0
C 0 0 0 0 0 0 0 0 0 0
D 0 0 0 0 0 0 0 0 0 0
E 0 0 0 0 0 0 0 0 0 0
F 0 0 0 0 0 0 0 0 0 0
G 0 0 0 0 0 0 0 0 0 0
H 0 0 0 0 0 0 0 0 0 0
I 0 0 0 0 0 0 0 0 0 0
J 0 0 0 0 0 0 0 0 0 0
我想要实现的是:
1 2 3 4 5 6 7 8 8 10
A 0 0 1 0 0 0 0 0 0 0
B 1 1 1 1 1 0 0 0 0 0
C 0 0 1 0 0 0 0 0 0 0
D 0 0 1 0 0 0 0 0 0 0
E 0 1 1 1 0 0 0 0 0 0
F 0 0 0 0 0 0 0 0 0 0
G 0 0 0 0 0 0 0 0 0 0
H 0 0 0 0 0 0 0 0 0 0
I 0 0 0 0 0 0 0 0 0 0
J 0 0 0 0 0 0 0 0 0 0
int counterAvion = 0;
int counterTable = 0;
int[,] Table = new int[10, 10];
int[,] Avion = new int[5, 5];
int[,] Combined = new int[10, 10];
// Table[][]
//rowA
Table[0, 0] = 0; Table[0, 1] = 0; Table[0, 2] = 0; Table[0, 3] = 0; Table[0, 4] = 0;
Table[0, 5] = 0; Table[0, 6] = 0; Table[0, 7] = 0; Table[0, 8] = 0; Table[0, 9] = 0;
//rowB
Table[1, 0] = 0; Table[1, 1] = 0; Table[1, 2] = 0; Table[1, 3] = 0; Table[1, 4] = 0;
Table[1, 5] = 0; Table[1, 6] = 0; Table[1, 7] = 0; Table[1, 8] = 0; Table[1, 9] = 0;
//rowC
Table[2, 0] = 0; Table[2, 1] = 0; Table[2, 2] = 0; Table[2, 3] = 0; Table[2, 4] = 0;
Table[2, 5] = 0; Table[2, 6] = 0; Table[2, 7] = 0; Table[2, 8] = 0; Table[2, 9] = 0;
//rowD
Table[3, 0] = 0; Table[3, 1] = 0; Table[3, 2] = 0; Table[3, 3] = 0; Table[3, 4] = 0;
Table[3, 5] = 0; Table[3, 6] = 0; Table[3, 7] = 0; Table[3, 8] = 0; Table[3, 9] = 0;
//rowE
Table[4, 0] = 0; Table[4, 1] = 0; Table[4, 2] = 0; Table[4, 3] = 0; Table[4, 4] = 0;
Table[4, 5] = 0; Table[4, 6] = 0; Table[4, 7] = 0; Table[4, 8] = 0; Table[4, 9] = 0;
//rowF
Table[5, 0] = 0; Table[5, 1] = 0; Table[5, 2] = 0; Table[5, 3] = 0; Table[5, 4] = 0;
Table[5, 5] = 0; Table[5, 6] = 0; Table[5, 7] = 0; Table[5, 8] = 0; Table[5, 9] = 0;
//rowG
Table[6, 0] = 0; Table[6, 1] = 0; Table[6, 2] = 0; Table[6, 3] = 0; Table[6, 4] = 0;
Table[6, 5] = 0; Table[6, 6] = 0; Table[6, 7] = 0; Table[6, 8] = 0; Table[6, 9] = 0;
//rowH
Table[7, 0] = 0; Table[7, 1] = 0; Table[7, 2] = 0; Table[7, 3] = 0; Table[7, 4] = 0;
Table[7, 5] = 0; Table[7, 6] = 0; Table[7, 7] = 0; Table[7, 8] = 0; Table[7, 9] = 0;
//rowI
Table[8, 0] = 0; Table[8, 1] = 0; Table[8, 2] = 0; Table[8, 3] = 0; Table[8, 4] = 0;
Table[8, 5] = 0; Table[8, 6] = 0; Table[8, 7] = 0; Table[8, 8] = 0; Table[8, 9] = 0;
//rowJ
Table[9, 0] = 0; Table[9, 1] = 0; Table[9, 2] = 0; Table[9, 3] = 0; Table[9, 4] = 0;
Table[9, 5] = 0; Table[9, 6] = 0; Table[9, 7] = 0; Table[9, 8] = 0; Table[9, 9] = 0;
// Avion[][]
//head
Avion[0, 0] = 0; Avion[0, 1] = 0; Avion[0, 2] = 1; Avion[0, 3] = 0; Avion[0, 4] = 0;
//wings
Avion[1, 0] = 1; Avion[1, 1] = 1; Avion[1, 2] = 1; Avion[1, 3] = 1; Avion[1, 4] = 1;
//mid_1
Avion[2, 0] = 0; Avion[2, 1] = 0; Avion[2, 2] = 1; Avion[2, 3] = 0; Avion[2, 4] = 0;
//mid_2
Avion[3, 0] = 0; Avion[3, 1] = 0; Avion[3, 2] = 1; Avion[3, 3] = 0; Avion[3, 4] = 0;
//tail
Avion[4, 0] = 0; Avion[4, 1] = 1; Avion[4, 2] = 1; Avion[4, 3] = 1; Avion[4, 4] = 0;
// Output Avion[][]
Console.WriteLine("\nAirplane:\n");
foreach (var item in Avion)
{
counterAvion++;
Console.Write(item.ToString() + " ");
if (counterAvion == 5)
{
Console.WriteLine("\n");
counterAvion = 0;
}
}
// Output Table[][]
Console.WriteLine("\nTable:\n");
Console.WriteLine(" 1 2 3 4 5 6 7 8 9 10\n");
int counterColumn = 1;
foreach (var item in Table)
{
counterTable++;
//Console.WriteLine(counterColumn);
switch (counterColumn)
{
case 1:
Console.Write("A ");
break;
case 12:
Console.Write("B ");
break;
case 23:
Console.Write("C ");
break;
case 34:
Console.Write("D ");
break;
case 45:
Console.Write("E ");
break;
case 56:
Console.Write("F ");
break;
case 67:
Console.Write("G ");
break;
case 78:
Console.Write("H ");
break;
case 89:
Console.Write("I ");
break;
case 100:
Console.Write("J ");
break;
default:
break;
}
Console.Write(item.ToString() + " ");
if (counterTable == 10)
{
Console.WriteLine("\n");
counterTable = 0;
counterColumn++;
}
counterColumn++;
}
Console.ReadLine();
我是 C# 新手,到目前为止我很喜欢它,但它.. 嗯.. 与我很久以前玩的 BorlandC 不同。
那么,关于如何实现这一点的任何想法?
我也知道到目前为止我的代码有点混乱,所以对此的任何输入都表示赞赏。
【问题讨论】:
-
你试过
Array.Copy()吗? -
1.数组的值被初始化为零,因此您不需要指定所有这些值。 2. 查找“集合初始化器”以获得用于初始化数组的更短语法,或者更好的是,从文件中读取初始值。 3. 你应该将你的行为部分提取到方法中,而不是把所有东西都扔到一个巨大的
Main中。 4. 你不需要switch来写出 A-J,只需将这些字母放入一个集合中并对其进行迭代或对其中的位置持有一个计数器。 5. 在提出 SO 问题时,尽量只包含您真正需要的代码。 -
@tpaksu 只有当它们的大小相同时才会起作用。事实上,由于一个是二维空间中另一个的子集
Array.Copy无法处理它(我认为)。 -
我更喜欢使用面向对象编程
-
正如我所说,这基本上是一个学习项目。感谢您的提示。我知道在那里构建代码的其他方法,但这是第一次出现,因为这是我在 c# 中的第二天