Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
1

Сапёр как расставлять цифра количества мин.

25.02.2011, 22:09. Показов 3496. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сапёр как расставлять цифра количества мин.
накалякал код небольшой который просто по массиву разбрасывает рандомно мины.
но как сделать так что бы указывалось сколько мин в округе не знаю...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Массив_сапёра
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 10;
            int[,] pole = new int[n,n];
            Random rand = new Random();
            int x=0,y=0;
            for (int i = 0; i <= n; i++)
            {
                x = rand.Next(0, 9);
                y = rand.Next(0, 9);
                pole[x, y] = 9;
            };
 
            for(int i=0; i<n; i++){
                for (int j = 0; j < n; j++)
                    Console.Write("{0,2}", pole[i, j]);
                    Console.WriteLine();
                }
            Console.ReadLine();
 
        }
    }
}
Ps потом буду переносить на вин.форм если пойму принцип расстановки и как это делается....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2011, 22:09
Ответы с готовыми решениями:

Расстановка мин в игре "Сапёр"
Я делаю игру &quot;Сапер&quot; (точнее уже сделал, теперь исправляю найденные ошибки и баги) Вот один из...

как правильно расставлять кавычки в php
Объясните, как правильно расставлять кавычки, а то метод подбора отнимает время например на этом...

как правильно расставлять ссылки на сайт?
Зравствуйте Сэошники)... вопрос заключается вот в чем: как правильно крутить сайт? У меня...

Как именно нужно расставлять ключи и связи?
Народ не могу понять как именно нужно расставлять ключи и связи! нуждаюсь в помощи) а то...

6
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
25.02.2011, 23:47 2
Kill100, вокруг клеточки с цифрой может распологаться до 8 мин, проходишь циклом все поле и для каждой клетки смотришь есть ли мины (все координаты вокруг +-1).
1
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
26.02.2011, 10:52  [ТС] 3
Цитата Сообщение от nio Посмотреть сообщение
Kill100, вокруг клеточки с цифрой может распологаться до 8 мин, проходишь циклом все поле и для каждой клетки смотришь есть ли мины (все координаты вокруг +-1).
Пробовал но так в 99% получается что выход за приделы массива..
и креш.
0
25 / 25 / 5
Регистрация: 11.11.2009
Сообщений: 56
26.02.2011, 11:13 4
Сделай массив на больше чем само поле, т.е. если поле 10 на 10, то массив будет 12х12 и первая видимая ячейка будет с адресом [1,1], а последняя [10,10]. В самых крайних элементах массива мин не должно быть.
0
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
26.02.2011, 12:11  [ТС] 5
ExkaliBur,
о я по другому сделал ) Хотя не знаю правильно или нет...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 //проставляю колличевство мин
            for(int i=0; i<n; i++)
                for (int j = 0; j < m; j++)
                {
                    if (pole[i, j] == 9) {
                        //вертикаль горизонталь
                        if (i > 0 && i < n && pole[i - 1, j] != 9) { pole[i - 1, j] += 1; };
                        if (i > 0 && i < n && pole[i + 1, j] != 9) { pole[i + 1, j] += 1; };
                        if (j > 0 && j < m && pole[i, j - 1] != 9) { pole[i, j - 1] += 1; };
                        if (j > 0 && j < m && pole[i, j + 1] != 9) { pole[i, j + 1] += 1; };
                        //диагонали
                        if (i > 0 && i < n && j > 0 && j < m && pole[i - 1, j - 1] != 9) { pole[i - 1, j - 1] += 1; };
                        if (i > 0 && i < n && j > 0 && j < m && pole[i + 1, j + 1] != 9) { pole[i + 1, j + 1] += 1; };
                        if (i > 0 && i < n && j > 0 && j < m && pole[i + 1, j - 1] != 9) { pole[i + 1, j - 1] += 1; };
                        if (i > 0 && i < n && j > 0 && j < m && pole[i - 1, j + 1] != 9) { pole[i - 1, j + 1] += 1; };
                    }
 
                };
Добавлено через 34 минуты
бл верхний код не верный верный этот..
Поч не могу изменить сообщение после 10 мин?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 //проставляю колличевство мин
                for (int i = 0; i < n; i++)
                    for (int j = 0; j < m; j++)
                    {
                        if (pole[i, j] == 9)
                        {
                            //вертикаль горизонталь
                            if (i > 0 && pole[i - 1, j] != 9) { pole[i - 1, j] += 1; };
                            if (i < n - 1 && pole[i + 1, j] != 9) { pole[i + 1, j] += 1; };
                            if (j > 0 && pole[i, j - 1] != 9) { pole[i, j - 1] += 1; };
                            if (j < m - 1 && pole[i, j + 1] != 9) { pole[i, j + 1] += 1; };
                            //диагонали
                            if (i > 0 && j > 0 && pole[i - 1, j - 1] != 9) { pole[i - 1, j - 1] += 1; };
                            if (i < n - 1 && j < m - 1 && pole[i + 1, j + 1] != 9) { pole[i + 1, j + 1] += 1; };
                            if (i < n - 1 && j > 0 && pole[i + 1, j - 1] != 9) { pole[i + 1, j - 1] += 1; };
                            if (i > 0 && j < m - 1 && pole[i - 1, j + 1] != 9) { pole[i - 1, j + 1] += 1; };
                        }
 
                    };
0
48 / 47 / 4
Регистрация: 26.05.2010
Сообщений: 230
26.02.2011, 16:39 6
сапер
1
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
26.02.2011, 17:38  [ТС] 7
Цитата Сообщение от cpentyc Посмотреть сообщение
не я по другому реализовываю сапёра...
Пытаюсь чрез массив кнопок...
Тем более мне с битмапом подружиться не удалось совсем...

Сей час другая проблема создал динамичиский массив из кнопок но как отловить клик по кнопке в массиве хз...

Причем отловить так что бы узнать какая она в массиве по номеру [i,j]
0
26.02.2011, 17:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2011, 17:38
Помогаю со студенческими работами здесь

Игра морской бой - как расставлять корабли
Решил написать игру чтоб опыта набраться. Вот возникла проблема: в верху формы расположены 4...

Cтрока: Вывести значение арифметическое выражение вида «<цифра>±<цифра>±…±<цифра>»...
Дана строка, изображающая арифметическое выражение вида «&lt;цифра&gt;±&lt;цифра&gt;±…±&lt;цифра&gt;», где на месте...

Как нужно расставлять формы (вложенные формы не работают)
Извечная проблема. Необходимо использовать другие формы на странице, но все элементы должны уже...

Дана строка <цифра>+<цифра>-.+<цифра> посчитать сколько получиться
дана строка &lt;цифра&gt;+&lt;цифра&gt;-....+&lt;цифра&gt; посчитать сколько получиться


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru