PDA

View Full Version : Помощ моля



IRepzz
05-25-2016, 20:47
Трябва да направя проект за края на годината. Реших да направя кораби с двумерен масив, но стигнах до тук и не работи правилно. Може ли някой да помогне?




Random rnd = new Random();
int k1 = rnd.Next(3,15);

int[,] m = new int[30, 30];

Console.WriteLine("Падна се КВАДАРТ " + k1.ToString());

m[k1 +1, 1] = 1;

m[k1 + 2, 1] = 1;

m[k1 + 1, 2] = 1;

m[k1 + 2, 2] = 1;

m[k1 + 1, 3] = 1;

m[k1 + 2, 3] = 1;

int k2 = 0;

int k3=0;

m[k2 + 1, 1] = 1;

m[k2 + 2, 1] = 1;

m[k2 +3, 1] = 1;

while (k2 == m[k1 + 1, 1] || k2 == m[k1 + 2, 1] || k2 == m[k1 + 1, 2] || k2 == m[k1 +2, 2] || k2 == m[k1 +1, 3] || k2 == m[k1 +2, 3])
{
k2 = rnd.Next(2, 18 );
Console.WriteLine("Падна се квадрат " + k2.ToString());
}

m[k3 + 1, 1] = 1;
m[k3 + 2, 1] = 1;
m[k3 + 3, 1] = 1;
m[k3 + 4, 1] = 1;
while (k3 == m[k1 + 1, 1] || k3 == m[k1 +2, 1] || k3 == m[k1 + 1,2] || k3 == m[k1 +2, 2] || k3 == m[k1 +1, 3] || k3 == m[k1 +2, 3] ||
k3 == m[k2 + 1, 1] || k3 == m[k2 + 2, 1] || k3 == m[k2 +3, 1])
{
k3 = rnd.Next(2, 20);
Console.WriteLine("падна се квадрат " + k3.ToString());
}

int br = 0;
while (br <= 13)
{
k1 = int.Parse(Console.ReadLine());


if (m[k1 + 1, 1] == 1)
{
br++;
m[k1 + 1, 1]=0;
Console.WriteLine("попадение");


}
if (m[k1 + 2, 1] == 1)
{
br++;
m[k1 + 2, 1] = 0;
Console.WriteLine("попадение");
}

if (m[k1 + 1, 2] == 1)
{
br++;
m[k1 + 1, 2] = 0; ;
Console.WriteLine("попадение");
}
if (m[k1 + 2, 2] == 1)
{
br++;
m[k1 + 2, 2] = 0;
Console.WriteLine("попадение");
}
if (m[k1 + 1, 3] == 1)
{
br++;
m[k1 + 1, 3] = 0;
Console.WriteLine("попадение");
}

if (m[k1 + 2, 3] == 1)
{
br++;
m[k1 + 2, 3] = 0;
Console.WriteLine("попадение");
}

if (m[k2 + 1, 1] == 1)
{
br++;
m[k2 + 1, 1] = 0;
Console.WriteLine("попадение");
}


if (m[k2 + 2, 1] == 1)
{
br++;
m[k2 + 2, 1] = 0;
Console.WriteLine("попадение");

}

if (m[k2 + 3, 1] == 1)
{
br++;
m[k2 + 3, 1] = 0;
Console.WriteLine("попадение");
}

if (m[k3 + 2, 1] == 1)
{
br++;
m[k3 + 2, 1] = 0;
Console.WriteLine("попадение");
}
if (m[k3 + 3, 1] == 1)
{
br++;
m[k3 + 3, 1] = 0;
Console.WriteLine("попадение");
}
if (m[k3 + 4, 1] == 1)
{
br++;
m[k3 + 4, 1] = 0;
Console.WriteLine("попадение");

}

else
{
Console.WriteLine("не уцели");
}
Console.ReadKey();

}





}
}
}

JDeel
05-25-2016, 22:12
Не ми се проучва какво искаш да направиш, но тази дълга поредица от повтарящи се неща не е добра практика. Виж как можеш да напишеш всичко с по-малко код. Ползвай for цикли.

SprayPaint
05-26-2016, 00:39
Това за какъв език е? Ако ще пишеш единици и нули в масива, по-добре го направи boolean, с true и false. Измисли някакъв алгоритъм, да се генерират корабчетата, но и да има проверка да не са едно върху друго.