Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
14 / 11 / 4
Регистрация: 14.11.2020
Сообщений: 411
WPF

Шахматы, построение поля

14.04.2021, 19:14. Показов 2727. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я решила создать шахматы, используя MVVM. Как я поняла, для начала требуется создать модель ячейки, задать в ней высоту, а так же ширину.

Получилось так:
C#
1
2
3
4
5
6
7
8
9
10
namespace Chess.Models
{
    class CellModel
    {
        private static int Height;
        private int Width;
 
        private Brushes Color;
    }
}
Как мне добавить эту ячейку на поле Canvas? И где нужно задавать размеры?
Моя идея была такой:

1. В модели задать логически размеры (ширину, высоту). Для теста приравняла поле Height к 8.
2. В xaml файле, в Canvas создать Rectangle, и к его высоте привязать через Binding поле Height из CellModel класса.

XML
1
2
3
4
5
<Grid>
        <Canvas>
            <Rectangle x:Name="cell" Height="{Binding CellModel.Height}"></Rectangle>
        </Canvas>
    </Grid>
Но, видимо, что-то я делаю не так. Как добавить ячейки в виде Rectangle на поле Canvas?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.04.2021, 19:14
Ответы с готовыми решениями:

Шахматы: определить поля боя фигуры
Для заданной шахматной фигуры стоящей на заданном поле шахматной доски определить все биты поля этой фигуры(те которые она может...

Шахматы: Выяснить, являются ли поля (k, l) и (m, n) полями одного цвета
Помогите плз создать программу на паскале Поле шахматной доски определятся парой натуральных чисел, каждое из которых не превосходит...

Шахматы. Выяснить, можно ли с поля (к, l) одним ходом слона попасть на поле (m, n)
привет, помогите составить программу. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит...

24
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
15.04.2021, 18:30
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Nuyta Посмотреть сообщение
То есть, создаётся именно ТИП Cell, а не модель?
Здесь путаница в терминологии.
В ADO (при работе с БД) принято называть Моделями сущности для парсинга БД.
А в паттернах для ООП приложений Моделями называется слой с Бизнес Логикой.

Поэтому вам нужно создать класс Cell с указанными свойствами.
И класс ChessModel в которой будет матрица 8х8 этих Cell и вся вышеописанная Бизнес Логика.

Добавлено через 36 секунд
Цитата Сообщение от Nuyta Посмотреть сообщение
Это так выглядит, или я туплю?
Почти правильно.

Добавлено через 1 минуту
Только Board это приватное поле только для чтения:
C#
1
private readonly Cell[,] Board = new Cell[8, 8];
Добавлено через 3 минуты
Так же в Cell не должно прямого указания цвета - это дело Ппредставления.
Нам нужны условно Белый-Чёрный.
Можно использовать bool, но красившее будет создать своё перечисление enum ChessColor {White, Black}

Добавлено через 1 минуту
Для фигуры тоже нужен тип с двумя свойствами.
Цвет фигуры и её номинал.
Для цвета использовать перечисление выше.
Для номинала добавить ещё одно перечисление.
0
14 / 11 / 4
Регистрация: 14.11.2020
Сообщений: 411
15.04.2021, 18:46  [ТС]
Элд Хасп, так-с, мой мозг понемногу ломается, поэтому для начала я хочу просто сделать поле.
Условие для покраски где нужно выписать? В BoardModel?
Так же в BoardModel создать Label, и как раз таки красить его в соответствующий цвет согласно условию?

Условие покраски такое: isFilled = j % 2 == 0 ? i % 2 == 0 : i % 2 != 0;

Или же Label создаётся именно во View, т.е в Game.xaml.cs ?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
15.04.2021, 19:30
Цитата Сообщение от Nuyta Посмотреть сообщение
Так же в BoardModel создать Label, и как раз таки красить его в соответствующий цвет согласно условию?
Нет!
Никаких UI элементов.
Создаёте Board.
Заполняете его Cell с установкой свойств.

Добавлено через 1 минуту
Цитата Сообщение от Nuyta Посмотреть сообщение
Или же Label создаётся именно во View, т.е в Game.xaml.cs ?
В View.
Но не Code Behind, а в XAML.
Будет задаваться шаблон данных и в нём привязка цвета через триггер данных.
0
14 / 11 / 4
Регистрация: 14.11.2020
Сообщений: 411
15.04.2021, 20:31  [ТС]
Элд Хасп, Board как UniformGrid ?

Добавлено через 3 минуты
Элд Хасп,
C#
1
2
3
4
class BoardModel
    {
        public readonly Cell[,] Board = new Cell[8, 8];
    }
XML
1
2
3
 <UniformGrid x:Name="UG_Board" Rows="8" Columns="8">
        <Label></Label>
    </UniformGrid>
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
15.04.2021, 21:02
Nuyta, не лезьте в View пока не будет полностью готова Model.
Это бесполезно, только голову себе задурите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.04.2021, 21:02

Классы, шахматы. Проверить, может ли ферзь перейти с поля p1 на поле p2 за один ход
Шахматы. создайте класс kletka. У него должно быть два поля: vert: (a,b,c...h) и hor: (1,2...8) Реализуйте методы: 0) осуществляющий...

Готические Шахматы и Шахматы Януса
Программы - компьютерные противники, реализующие сабж? - где скачать? (можно лицензионные и платные версии) Уровень их игры - рейтинг ЭЛО?...

Построение корреляционного поля
Тут ошибка: var x,y: array of string; i,j:integer; begin Form4.Show; for i:=0 to j-1 do for j:=0 to i-1 do begin ...

Построение векторного поля
Нужно построить силовые линии вектора H=y0*sin(y)*sin(z)+z0*cos(y)*cos(z), где 0≤y≤pi , 0≤z≤3*pi У меня не получается задать в Маткаде с...

Построение поля из массивов
Добрый день, у меня есть два массива х и у . Мне необходимо построить точечное поле по данным координатам. Я смогла построить только...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru