Умная шахматная доска

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Аватара пользователя
АлександрЛ
Друг Кота
Сообщения: 43813
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Re: Умная шахматная доска

Сообщение АлександрЛ »

Никифоров Михаил писал(а):Друзья нужен Ваш совет.
Хочу реализовать умную шахматную доску,
Вы опоздали примерно лет на 30 с лишним..
Всё уже украдено изобретено до нас...
http://www.leningrad.su/museum/show_calc.php?n=299
http://www.leningrad.su/museum/show_calc.php?n=300
http://www.leningrad.su/museum/show_calc.php?n=265
http://www.leningrad.su/museum/show_calc.php?n=69
http://www.leningrad.su/museum/show_calc.php?n=328
http://www.leningrad.su/museum/show_calc.php?n=367
http://www.leningrad.su/museum/show_calc.php?n=570
http://www.leningrad.su/museum/show_calc.php?n=583
На сколько я понимаю, у них фигуры отслеживаются от "начального положения" - в основании фигуры магнит, в клетке - датчик холла или геркон.. Подняли фигуру с её "изначального" места, поставили на клетку- "мозг" понял, что такая- то фигура переместилась с одной клетки на другую.
(видел, ещё в 80-х годах, как с одной из таких "досок" играли.. По- моему, "детский мат" ей поставили, не помню.. )
Денис Комаров
Родился
Сообщения: 12
Зарегистрирован: Сб апр 15, 2017 02:08:10

Re: Умная шахматная доска

Сообщение Денис Комаров »

Насколько я помню, доска в этом компьютере пассивная, сугубо для наглядности и самоконтроля.
Все ходы игрока сообщаются компьютеру с помощью клавиатуры.

Электроника ИМ-05
Аватара пользователя
АлександрЛ
Друг Кота
Сообщения: 43813
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Re: Умная шахматная доска

Сообщение АлександрЛ »

Денис Комаров писал(а):Насколько я помню, доска в этом компьютере пассивная, сугубо для наглядности и самоконтроля.
Все ходы игрока сообщаются компьютеру с помощью клавиатуры.
Ну, эти- наверное, ДА..
А вот которую я видел- там именно фигуры переставляли, и шахматный компьютер это "видел".. И ходы делал- перемигивался светодиодами на клетках с фигурой и куда её переставить.. :dont_know:
Плохо помню, я сам шахматами не увлекаюсь, и это было тридцать лет назад..
Никифоров Михаил
Родился
Сообщения: 7
Зарегистрирован: Ср апр 19, 2017 12:28:20

Re: Умная шахматная доска

Сообщение Никифоров Михаил »

К сожалению зачиповать каждую фигуру тоже не получится. Хочу это реализовать только с помощью переключателей на доске(+/-). Каждая ячейка поля имеет свой адрес, при изначальной расстановке каждая ячейка с фигурой(+ переключателя, фигура на поле) имеет свой идентификатор и запрограммирована на определенные шаги. это будет запрограммировано в микроконтроллер, ему только останется считывать данные, и проверять их, при определённых условиях отправлять сигнал на светодиод. Такое можно реализовать?
Все гениальное - просто!
Денис Комаров
Родился
Сообщения: 12
Зарегистрирован: Сб апр 15, 2017 02:08:10

Re: Умная шахматная доска

Сообщение Денис Комаров »

каждая ячейка с фигурой (+ переключателя, фигура на поле) имеет свой идентификатор и запрограммирована на определенные шаги.
База данных эндшпиля на 6 фигур имеет размер ≈1200 Гигабайт.
Программируйте. :)
Никифоров Михаил
Родился
Сообщения: 7
Зарегистрирован: Ср апр 19, 2017 12:28:20

Re: Умная шахматная доска

Сообщение Никифоров Михаил »

меня тут немного не поняли.
эти шахматы не должны со мной играть, нужно что бы они просто показывали, что я сходил не правильно и всё. Микропроцессор должен дать сигнал на светодиод, если конкретная точка поля сходит не туда.
Например: пешки на поле 3*3
Данное поле состоит из 9 переключаталей с координатами х1у1, х1у2, ..., х3у3. Пешка стоит на переключателе х1у2(+ переключатель замкнут), взяли пешку, переключатель в положение "-", контроллер посчитал куда должна встать пешка(где должен замкнуться переключатель), если совпадает, то идём дальше, если замкнулся другой переключатель, значит подаётся сигнал на диод.
Изначальное положение переключателю будет присвоено значение пешки, которое сохранится для нее в течение всей игры, например П с координатами х1у2, и все её перемещения будут по формуле ХхУу=Х(х+1)У(у-1)илиХ(х+1)У(у)илиХ(х+1)У(у+1)
(нумерацию клеток поля надеюсь поняли)

Вопрос то в том, возможно ли такое реализовать и как это сделать проще?
Все гениальное - просто!
Аватара пользователя
Sergei Frolov
Опытный кот
Сообщения: 769
Зарегистрирован: Вт дек 08, 2009 18:24:20
Откуда: Питер
Контактная информация:

Re: Умная шахматная доска

Сообщение Sergei Frolov »

Там в любом случае будет позиция на доске.
Денис Комаров
Родился
Сообщения: 12
Зарегистрирован: Сб апр 15, 2017 02:08:10

Re: Умная шахматная доска

Сообщение Денис Комаров »

меня тут немного не поняли.
В том и дело, что прекрасно поняли.
нужно что бы они просто показывали, что я сходил не правильно и всё.
Для этого ваша система должна иметь алгоритм всех допустимых ходов для каждой фигуры в каждый момент времени, иначе ей не с чем будет сравнивать, и не от чего отталкиваться.
А искусственный интеллект, к сожалению, ещё не изобрели.
Даже у шахматного компьютера, который упоминался выше, есть своё ПЗУ (хоть и небольшое) с базой дебютов и алгоритмами. При этом безусловно подразумевается, что игрок ходит в соответствии с правилами, иначе у компьютера просто наступает overflow.
возможно ли такое реализовать
Возможно.
Для начала придётся вам написать (либо найти в сети) алгоритм допустимых ходов для МК под ваши условия (только пешки, доска 3х3).
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Умная шахматная доска

Сообщение da-nie »

Вам потребуется микроконтроллер. Вот вам пример моей шахматной программы. Разумеется, там есть контроль правильности ходов.
Общая идея следующая. Поле представляется массивом 16x16 (чтобы удобно было не следить за выходом за границы массива) заданного типа CELL.

Код: Выделить всё

//----------------------------------------------------------------------------------------------------
//Битовые маски
//----------------------------------------------------------------------------------------------------
 
#define BYTE8(b7,b6,b5,b4,b3,b2,b1,b0) ((CELL)((b7<<7)|(b6<<6)|(b5<<5)|(b4<<4)|(b3<<3)|(b2<<2)|(b1<<1)|(b0<<0)))
 
//цвета фигур
#define BLACK BYTE8(0,0,1,0,0,0,0,0)
#define WHITE BYTE8(0,1,0,0,0,0,0,0)

//флаг короткой рокировки
#define CASTLING_O_O (BYTE8(0,0,0,1,0,0,0,0)<<8)
//флаг длинной рокировки
#define CASTLING_O_O_O (BYTE8(0,1,0,0,0,0,0,0)<<8)
 
//структура полей доски:AHIIIIEWB0MFFF
//W-фигура белая
//B-фигуры чёрная
//F-тип фигуры (0-фигуры нет)
//M-ходила ли фигура
//E-край доски
//I-индекс фигуры в массиве для поиска фигур (0-15)
//H-была короткая рокировка (флаг ставится только у короля и ладьи)
//A-была длинная рокировка (флаг ставится только у короля и ладьи)
 
//сдвиг индекса
#define INDEX_SHIFT 8
//маска белых
#define MASK_WHITE      WHITE
//маска чёрных
#define MASK_BLACK      BLACK
//маска цвета
#define MASK_COLOR      (MASK_WHITE|MASK_BLACK)
//маска типа
#define MASK_TYPE       BYTE8(0,0,0,0,0,1,1,1)
//маска границы
#define MASK_BORDER     BYTE8(1,0,0,0,0,0,0,0)
//маска,ходила ли фигура
#define MASK_IS_MOVED   BYTE8(0,0,0,0,1,0,0,0)
//маска индекса фигуры в массиве
#define MASK_INDEX      ((BYTE8(0,0,0,0,1,1,1,1))<<INDEX_SHIFT)
//маска рокировки
#define MASK_CASTLING (BYTE8(0,0,1,1,0,0,0,0)<<8)
 
//----------------------------------------------------------------------------------------------------
//Типы данных
//----------------------------------------------------------------------------------------------------
//полное значение ячейки
#define CELL_FULL_VALUE 0xffffffff
//тип фигуры
#define FIGURE_TYPE  long
#define FIGURE_COLOR long
#define COORD        long
#define CELL         long
#define ENGINE_BOOL  long
#define ZOBRIST_COLOR long
#define ENGINE_TRUE  1L
#define ENGINE_FALSE 0L
#define ZOBRIST_BLACK 0
#define ZOBRIST_WHITE 1
 
#define CELL_EMPTY  0
#define CELL_ATTACK BYTE8(0,0,0,0,1,0,0,0)
 
//----------------------------------------------------------------------------------------------------
//Типы фигур
//----------------------------------------------------------------------------------------------------
//король
#define FIGURE_TYPE_KING   1
//ферзь
#define FIGURE_TYPE_QUEEN  2
//ладья
#define FIGURE_TYPE_ROOK   3
//слон
#define FIGURE_TYPE_BISHOP 4
//конь
#define FIGURE_TYPE_KNIGHT 5
//пешка
#define FIGURE_TYPE_PAWN   6
Получается вот такой вот массив CELL Board[256];//шахматная доска с полем посередине (16x16)

Ходы фигур описываются как

Код: Выделить всё

//----------------------------------------------------------------------------------------------------
//ходы фигур
//----------------------------------------------------------------------------------------------------
long KingMove[9]={16,-16,1,-1,17,-17,15,-15,0};//ходы короля
long QueenMove[9]={16,-16,1,-1,17,-17,15,-15,0};//ходы ферзя
long RookMove[5]={16,-16,1,-1,0};//ходы ладьи
long BishopMove[5]={17,-17,15,-15,0};//ходы слона
long KnightMove[9]={32+1,32-1,16+2,16-2,-(32+1),-(32-1),-(16+2),-(16-2),0};//ходы коня
А дальше вам потребуется разобраться с функцией Move_MoveOn.
К сожалению, переделать её под вас мне сейчас некогда, тем более, что всё это делалось для компьютера, а не для микроконтроллера. Тут много нужно вспоминать даже мне, хоть я и автор. :) Впрочем, может быть, я это и сделаю позже.
Вообще, в книжке Корнилова "Программирование шахмат" это есть.
Chess-E1.rar
(422.44 КБ) 154 скачивания
Добавлено after 37 minutes 56 seconds:
В принципе, выкинул всё ненужное. Осталась только обработка ходов. Правда, для микроконтроллера потребуется много памяти - в этом плане нифига не оптимально. Сперва собирается список ходов, а потом ваш ход ищется среди них.
Chess-Board.rar
(325.06 КБ) 170 скачиваний
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Денис Комаров
Родился
Сообщения: 12
Зарегистрирован: Сб апр 15, 2017 02:08:10

Re: Умная шахматная доска

Сообщение Денис Комаров »

da-nie
а ваш алгоритм учитывает текущие позиции других фигур на доске?
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Умная шахматная доска

Сообщение da-nie »

Разумеется, учитывает. :) Это полная шахматная программа с уровнем игры примерно соответствующим КМС. Для этого и нужен массив Board[256].
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Денис Комаров
Родился
Сообщения: 12
Зарегистрирован: Сб апр 15, 2017 02:08:10

Re: Умная шахматная доска

Сообщение Денис Комаров »

полная шахматная программа с уровнем игры примерно соответствующим КМС.
Чем же тогда объясняется, что другие программы пользуются гигантскими базами, занимающими многие серверные стойки?
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Умная шахматная доска

Сообщение da-nie »

Тем, что в дебюте и в эндшпиле просчитать исход партии очень сложно. Тот же эндшпиль имеет окончания на десятки ходов. Для этого применяют таблицы Налимова - это резко улучшит игру программы в началах и в окончаниях.
И, кстати, уровень КМС - это весьма немного. :)
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: Умная шахматная доска

Сообщение Alkul »

Денис Комаров писал(а):Для этого ваша система должна иметь алгоритм всех допустимых ходов для каждой фигуры в каждый момент времени, иначе ей не с чем будет сравнивать, и не от чего отталкиваться.
Я думаю, тут все проще, просто тредстартер не может свою мысль выразить.
Скорее всего, под "неправильным" ходом он имеет в виду ходы, не разрешенные для фигуры правилами шахмат. Например, конь ходит буквой "Г" и любой корректный ход система должна разрешать, а если коня переставить на клетку рядом - должна выдать ошибку. Слон ходит по диагонали, а ладья - по прямой, соответственно, попытка поставить слона по прямой, а ладью - по диагонали должна пресекаться.
Непонятно только, зачем это надо - для детского шахматного кружка?
Последний раз редактировалось Alkul Пн май 01, 2017 14:35:54, всего редактировалось 2 раза.
Аватара пользователя
B@R5uk
Собутыльник Кота
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Re: Умная шахматная доска

Сообщение B@R5uk »

[uquote="Alkul",url="/forum/viewtopic.php?p=3094205#p3094205"]Скорее всего, под "неправильным" ходом он имеет в виду ходы, разрешенные для фигуры правилами шахмат. Например, конь ходит буквой "Г" и любой корректный ход система должна разрешать, а если коня переставить на клетку рядом - должна выдать ошибку.[/uquote]В этих правилах нет понятия "связывания" фигуры. А оно не менее важное.
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: Умная шахматная доска

Сообщение Alkul »

B@R5uk писал(а):В этих правилах нет понятия "связывания" фигуры. А оно не менее важное.
Не понял термин. Я не шахматист, в общем-то...
Аватара пользователя
Maykill
Друг Кота
Сообщения: 73964
Зарегистрирован: Вт дек 20, 2011 12:46:51
Откуда: Петроград
Контактная информация:

Re: Умная шахматная доска

Сообщение Maykill »

- Только что здесь стояла ладья,
а теперь ее уж нет? - Значит и не было.
- Куда же она девалась, вы ее выиграли?
- Выиграл.
- На каком ходу?
(12 стульев)
https://www.int-s.spb.ru
" Можно я лягу?"(C)
Аватара пользователя
B@R5uk
Собутыльник Кота
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Re: Умная шахматная доска

Сообщение B@R5uk »

[uquote="Alkul",url="/forum/viewtopic.php?p=3094790#p3094790"]Не понял термин.[/uquote]Ладья (слон или ферзь) нападает на пешку/коня (или ещё чего). За этой пешкой/конём стоит король. Двигать эту фигуру по правилам нельзя.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Умная шахматная доска

Сообщение Jack_A »

Квжется, лет ...дцать тому назад я встречал подобную бредятину: доска - 64 октальные панельки, у фигуры в нижней части - в ламповом цоколе перемычками закодирован тип и цвет. Со считыванием проблем нет. Другой вопрос - а на хрена?
СпойлерЗавидую автору белой завистью: сколько у чела свободного времени, чтоб хернейтворчеством заниматься! Я вот вроде на пенсии, а весь день крутиться приходится: уборка, мелкий ремонт, покормить котов и себя, стирка, в магазины, аптеки... Вот выберешь часок в форум забежать..
Изображение
troyep
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пт июл 20, 2012 01:15:23

Re: Умная шахматная доска

Сообщение troyep »

Ответить

Вернуться в «Умные мысли»