【发布时间】:2014-03-06 06:11:12
【问题描述】:
我正在使用 C# 在控制台模式下编写战舰。
当我放下我的船时,它们会相互交叉,所以我有一个类案例(棋盘的均方)和一个包含布尔属性 Used 的 Listposition。
这是部分代码:
bool isok;
do
{
isok = true;
Console.WriteLine("Donner la position du haut de votre " + bat.Name + " en X");
int y = int.Parse(Console.ReadLine());
Console.WriteLine("Donner la position du haut du navire en Y");
int x = int.Parse(Console.ReadLine());
Console.WriteLine("Positionnement Vertical (1) ou Horizontal (2) ");
int direction = int.Parse(Console.ReadLine());
var essay = b1.Position.Select(e=>e.Used);
bool overlap = false;
for (int i = y; i <= y + bat.Size - 1; i++)
overlap = overlap || b1.Position.Exists(c => c.Y == y && c.X == x && c.Used);
switch (direction)
{
case 2:
{
if ((y + bat.Size - 1 > 9) || overlap)
{
isok = false;
}
{
isok = false;
}
else
{
for (int i = y; i <= y + bat.Size-1 ; i++)
{
b1.Position.Add(new cases(x, i, true, false, false, false));
b1.changetype(x, i);
b1.changeUsed(x, i);
b2.changetype(x, i);
}
}
break;
}
}
}
public cases(int x , int y, bool target, bool touch, bool played, bool used)
{
this.x = x;
this.y = y;
this.target = target;
this.touch = touch;
this.played = played;
this.used = used;
}
public void changetype(int x,int y)
{
vue[x, y].Target = true;
}
public void changeUsed(int x, int y)
{
vue[x, y].Used = true;
}
public List<cases> Position
{
get
{
return position;
}
set
{
position = value;
}
}
它是法语,但它只是要求输入两个坐标(x 和 y)来获取船的起始位置。我的问题是我可以在if 条件下使用哪种可扩展方法?事实上,我希望在放置船之前阅读的列表在 if 行中有一个保留帮助我填写。
【问题讨论】:
标签: c# linq list extension-methods conditional-statements