.NET 4.x Морской бой: генератор кораблей работает нелогично - C#

Узнай цену своей работы

Формулировка задачи:

Проблема такая, не строит корабли так как надо. Либо консоль зависает, либо пропускает некоторые корабли. Где ошибка ? Скинул генератор кораблей.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace mds
{
    class Program
    {
        static void Main(string[] args)
        {
            string[,] A = new string[25, 25]; //создаём массивы
            string[,] B = new string[25, 25];
            int k = 4, z = 1, x, y, xt, yt, xd, yd, xd1, yd1; //создаём переменные
            bool clear = true; // создаём переменную типа "условие"
            Random rand = new Random(); //создаём обьект класса .рандом.
//---------------------------------------------------------------------------------//
            for (int i = 0; i <= 11; i++) //заполняем массив
            {
                for (int n = 0; n <= 11; n++)
                {
                    A[i, n] = "*";
                    B[i, n] = "*";
                }
            }
//---------------------------------------------------------------------------------//
            
            while (k >= 1) 
            {
                if (k == 4) { z = 1; } // к - количество клеток. z - количество кораблей.
                if (k == 3) { z = 2; }
                if (k == 2) { z = 3; }
                if (k == 1) { z = 4; }
 
                for (int u = 1; u <= z; u++)
                {
                Start:
                    clear = true;
                    x = rand.Next(2, 9);   //случайно выбираем позицию для корабля.
                    y = rand.Next(2, 9);
                    xt = x;
                    yt = y;

                    for (int i = 1; i < k; i++) //проверям, есть место для коробля или нет по вертикали.
                    {
                        if (A[yt, xt] == "*")
                        {
                            yt++;
                            clear = clear && true;
                        }
                        else
                        {
                            yt++;
                            clear = clear && false;
                        }
                    }

                    if (clear == false) // если по вертикали нету места, проверем по горизонтали.
                    {
                        clear = true;
                        yt = y;
                        for (int i = 1; i <= k; i++)
                        {
                            if (A[yt, xt] == "*")
                            {
                                xt++;
                                clear = clear && true;
                            }
                            else
                            {
                                xt++;
                                clear = clear && false;
                            }
                        }
                    }
 
                    if (clear == true) // проверяем, нет ли рядом кораблей.
                    {
                        xd = x - 1;
                        yd = y - 1;
                        xd1 = xt + 1;
                        yd1 = yt + 1;
                        for (int i = yd; i <= yd1; i++)
                        {
                            for (int n = xd; n <= xd1; n++)
                            {
                                if (A[i, n] == "*")
                                {
                                    clear = clear && true;
                                }
                                else
                                {
                                    clear = clear && false;
                                }
                            }
                        }
                        if (clear == true) // если нету кораблей, ставим корабль на своё место.
                        {
                            for (int i = y; i <= yt; i++)
                            {
                                for (int n = x; n <= xt; n++)
                                {
                                    A[i, n] = "#";
                                }
                            }
 
                        }
                        else
                        {
                            goto Start;
                        }
                        Console.WriteLine(x + "" + y);
                    }
                }
                k--;
            }
            for (int i = 1; i <= 10; i++)
            {
                Console.WriteLine(A[i,1]+""+A[i,2]+""+A[i,3]+""+A[i,4]+""+A[i,5]+""+A[i,6]+""+A[i,7]+""+A[i,8]+""+A[i,9]+""+A[i,10]);
            }
                Console.ReadLine();
        }
    }
}

Решение задачи: «.NET 4.x Морской бой: генератор кораблей работает нелогично»

textual
Листинг программы
List<string> freeCells = new List<string>();
 
            for (int l = 0; l < 9; l++)
            {
                for (int m = 0; m < 9; m++)
                {
                    freeCells.Add(String.Format("{0}{1}", l, m));
                }
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы