Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C# Найти минимальный элемент в матрице ... https://www.cyberforum.ru/ csharp-beginners/ thread771523.html
задана матрица А, имеющая n строк и n столбцов. в каждом столбце найти минимальный элемент и продублировать его в следующей строке,сдвинув вниз все эл-ты столбца,начиная с минимального элемента и до последнего эл-та столбца
C# Привязка к клавиатуре
Всем привет! Народ , подскажите как можно кнопки 1,2,3 привязать к программе так , что б если нажималась 1 - происходила первая часть программы , при нажатии 2 - вторая часть , а при нажатии 3 - третья...Код приблизительно такой будет: static void Main(string args) { Console.SetCursorPosition(0, 0); Console.WriteLine("Ответ...
C# Передача данных с class в form1 Всем доброго времени суток,задался вопрос собственно как передать данные с класса в форм1,читал https://www.cyberforum.ru/windows-forms/thread110436.html но толком не понял.... Что находится в Form1 WebRequest request = WebRequest.Create(Auth); Где (Auth) это ссылка на сайт https://www.cyberforum.ru/ csharp-beginners/ thread771464.html C# Составить регулярное выражение нахождения атрибута https://www.cyberforum.ru/ csharp-beginners/ thread771457.html
<%@ Page Title="some text" Description="sometext" MetaDescription ="sometext" MasterPageFile="~/Doc.master" %> надо найти значение Description ,помогите плз
backgroundWorker - прекращение выполнения C#
Доброго времени суток, прошу совета у более просвещённых программистов. Имеется backgroundWorker, который по WMI достает определенную информацию из удаленного компьютера. Бывают ситуации, когда удаленный сервер RPC не отвечает или из за загруженности сети вызов идет очень долго. В таких ситуация хочется иметь метод, мгновенно убивающий выполнение backgroundWorker'а. Использовать CancelAsync()...
C# Работа с разнотипными объектами https://www.cyberforum.ru/ csharp-beginners/ thread771441.html
Здравствуйте. Ситуация примерно следующая: есть несколько написанных классов, есть соответствующие коллекции List этих классов для хранения данных. В части классов есть свойство "ForSelection" (ну, соответственно, в части нет). Нужен метод, который смог бы, вне зависимости от типа, если есть у него вышеуказанное свойство, то изменять значение этого свойства в коллекции.
C# Сильно раздутый switch case Ломаю голову над одной простой задачей. Как красивее и производительнее закодировать тип данных. Есть БД на sql server. В ней несколько таблиц. Таблица1 состоит из "Столбец1, smallint", "Столбец2, nvarchar(10)", "Столбец3, nvarchar(10)", "Столбец4, nvarchar(20)", "Столбец5, nvarchar(3)", "Столбец6, nvarchar(3)", "Столбец7, int", "Столбец8, tinyint". Столбец1 должен содержать закодированное мной... https://www.cyberforum.ru/ csharp-beginners/ thread771432.html C# что означает obj.SomeEvent -= SoveEventFunction
скажите пожалуста , что означает , когда пишут obj.SomeEvent -= SoveEventFunction; вот что означает -= ??? еслиб было obj.SomeEvent += SoveEventFunction; , то я бы понял, что при SomeEvent евенте должен вызыватся функция SomeEventFunction. но что делает -= ????? Спасибо.
C# Программа делает расчеты и выводит результаты на экран К примеру, пользователю необходимо ввести 5 чисел (каждое число в отдельное окошко), а программа произведет необходимые вычисления, допустим вот так a*b+c/d+f. Но при этом одно (несколько) из окошек может быть пустым. Со всеми заполняемыми окошками принцип работы программы понятен, а с пустыми нет. На примере из жизни немного понятнее (для меня уж точно). Петю послали купить 1 кг. сахара, 2... https://www.cyberforum.ru/ csharp-beginners/ thread771386.html C# Как в типе Datetime изменить только минуты Как в новом инициализированном типе Datetime изменить только (например)минуты,т.е назначить сразу,а не прибовлять(через свойства или ини циализировать через новый обьект) и т. д. https://www.cyberforum.ru/ csharp-beginners/ thread771370.html
C# Определить, сколько точек принадлежит кольцу с внешним радиусом R1
Всем добрый вечер Помогите решить задачку хотя бы одно например б 17. Даны последовательности A1, А2,...,А20; B1,...,B20. Считая Аi и Вi координатами точки на плоскости определить: a) сколько точек принадлежит кольцу с внешним радиусом R1 и внутренним радиусом R2 и с центром в точке (x, y); b) точку, для которой ро и фи максимальны ро=корень квадратный(а квадрате + б в квадрате) );...
C# Массив с задаваемым размером Задача: Багаж пассажиров задан кол-вом вещей и общим весом вещей каждого пассажира. Найти среднее кол-во вещей у пассажира и средний вес вещи во всём багаже. Количество пассажиров (от 1 до 5) задаётся пользователем, как и параметры их багажа. Отсюда и вопрос: как реализовать массив с задаваемым размером? Простая переменная в размере работает некорректно. https://www
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
25.01.2013, 20:16 0

Paintbox или же лабиринт - C# - Ответ 4052946

25.01.2013, 20:16. Показов 2875. Ответов 4
Метки (Все метки)

Ответ

lirkangel, логика должна быть отделена от изображения, для этого тысячи людей трудились над паттернами вроде MVC, MVVM,... Создайте класс, в котором есть массив булевских выражение: true если можно туда пойти и false если нельзя. Определите координаты входа и выхода и хотя бы сделайте, чтобы машина отвечала, можно ли пройти из начала в конец или нельзя. После этого можно уже добавлять вывод на экран. Для этого напишите отдельный класс визуализатора, который будет получать игровой массив как параметр, и выводить карту в виде картинки. Вот например у меня в игре это так реализовано:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
 
namespace Snake
{
    public enum TerrainInfo
    {
        LastHead,
        Food,
        NewHead,
        Tail,
    }
 
    public class Visualizer
    {
        public int CellSize { get; private set; }
        public Size MapSizeInPixels { get; private set; }
        private readonly Color backgroundColor = Color.Black;
        private readonly Color barrierColor = Color.Red;
 
        private readonly Dictionary<TerrainInfo, Color> dict;
 
        private Bitmap map;
 
 
        public Visualizer()
        {
            dict = new Dictionary<TerrainInfo, Color>
                       {
                           {TerrainInfo.Tail,  backgroundColor},
                           {TerrainInfo.Food, Color.Blue},
                           {TerrainInfo.LastHead, Color.Green}, 
                           {TerrainInfo.NewHead, Color.GreenYellow},
                       };
            MapSizeInPixels = new Size();
            CellSize = 10;
        }
 
        public Bitmap PaintBackground(IEnumerable<Point> list, HashSet<Point> barriers, Point foodStartCoords)
        {
            if (map == null)
                map = new Bitmap(MapSizeInPixels.Width, MapSizeInPixels.Height);
            using (var g = Graphics.FromImage(map))
                g.Clear(Color.Black);
            foreach (var p in barriers.Select(barrier => new Point(barrier.X*CellSize, barrier.Y*CellSize))) //переводим точку из игровых координат в абсолютные
            {
                for (int i = 0; i < CellSize; i++)
                    for (int j = 0; j < CellSize; j++)
                        map.SetPixel(p.X + i, p.Y + j, barrierColor);
            }
            DrawCell(foodStartCoords, TerrainInfo.Food);
            return map;
        }
 
        public Bitmap PaintTurn(SnakeTurnInfo turnInfo)
        {
            DrawCell(turnInfo.TailToClean, TerrainInfo.Tail);
            DrawCell(turnInfo.OldHeadToClean, TerrainInfo.LastHead);
            DrawCell(turnInfo.NewHead, TerrainInfo.NewHead);
            DrawCell(turnInfo.NewFood, TerrainInfo.Food);
            return map;
        }
 
 
        private void DrawCell(Point? coords,TerrainInfo terrain)
        {
            if (coords == null)
                return;
            var p = new Point(coords.Value.X * CellSize, coords.Value.Y * CellSize);
            for (int i = 1; i < CellSize - 1; i++)
                for (int j = 1; j < CellSize - 1; j++)
                    map.SetPixel(p.X + i, p.Y + j, dict[terrain]);
        }
 
 
        private void GetCellSize(bool zoom)
        {
            CellSize = zoom ? 15 : 10; //Устанавливаем размер ячейки
        }
 
        public void Initialize(Size size, bool zoom)
        {
            GetCellSize(zoom);
            MapSizeInPixels = new Size(size.Width * CellSize, size.Height * CellSize);
        }
    }
}
Добавлено через 3 минуты
Быдлокод еще тот, но в принципе смысл в нем какой-то имеется.
В частности строчка 46. Мы получаем массив игровых координат (номеров ячеек), после этого номер ячейки переводим в координаты относительно битмапа и рисуем. Но сама игра не знает, что мы делаем с этими ячейками. Так и проявляется отделение логики от изображения. Отсутствие привязки к логики значит, что вы можете изменить виндовое приложение на консольное ничего не переписывая в классе игры, изменив только класс визуализатора. Это называется принцип закрытости/открытости и принцип единственности ответственности (SRP)

Вернуться к обсуждению:
Paintbox или же лабиринт C#
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2013, 20:16
Готовые ответы и решения:

Как сместить Canvas в PaintBox не смещая PaintBox?
Как сместить например на 3 пикселя весь рисунок в PaintBox, не изменяя при этом размеров и позиции...

Игра лабиринт. ИИ в лабиринте. Как задать лабиринт
У меня есть следующее задание: Дано: - робот - лабиринт Задание: - Нужно реализовать...

Сделал лабиринт, оцените кто нибудь уровень говнокода, и что бы подправить тут или изменить
karta.txt положить в диск С #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt;...

Paintbox
здравствуйте,я делаю что-то вроде пэинта в делфи,в качестве холста я использую пэинтбокс,можете...

4
25.01.2013, 20:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2013, 20:16
Помогаю со студенческими работами здесь

PaintBox
Как нарисовать линию или прямоугольник на PaintBox?

PaintBox
В моей программе 2 проблемы, нуждаюсь в вашей помощи.. Первая проблема - PaintBox разных...

PaintBox
Доброго времени суток, мне нужно нарисовать в PaintBox чёрный квадрат (10х10 пикселей), но моё...

Paintbox
Подскажите как быть если в paintbox нирисовал линию а потом открыл другое приложение допустим папку...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru