Веб-разработка

индекс
236,88

Javascript играет в шахматы — размер скрипта 1 KB!



Javascript в работе использует уже чуть ли не каждый веб-разработчик. Но пока только мексиканцу Оскару Толедо удалось упихнуть в один килобайт кода на Javascript самый настоящий шахматный алгоритм.

По ссылке можно сразиться с компьютером прямо в окошке браузера, а также ознакомиться с мозгодробильным весьма заковыристым кодом скрипта.
+113
6 сентября 2010, 21:58
61

комментарии (140)

+26
webrover #
про рокеровку программер забыл. пичально
+4
ITProfi #
Не забыл, а скорее не смог вписать в идеологически красивый размер 1К
+6
Remper #
А так же в размер не вписалось:
1) Останов игры после мата
2) Пат
3) Игнор невозможности ходить некоторыми фигурами (например, иногда ходит, когда фигура связана)
4) Взятие на проходе
5) Пешка превращается только в ферзя

Но в целом занимательно.
0
RomanL #
лично я про взятие на проходе узнал только год назад вообще :(
+4
Stepler #
кстати, это правило сравнительно «недавнее» ))) было введено в шахматы в XV веке одновременно с другим правилом, которое разрешало делать первый ход пешкой сразу на два поля вперёд. типа, пешка не может перемещаться без риска, когда поле прохода находится под боем. а до этого спорили, может ли пешка дойдя до 8-ой горизонтали превратиться в фигуру противоположного цвета.
+1
darkfrei #
«противоположного цвета»? 0_о
+2
Stepler #
немного по-пробовали, но правило не прижилось. отменили. крайне редко бывают позиции, когда от мата может спасти превращение своей пешки на вражескую фигуру.
+2
xn__p2a #
Т.е. бывают случаи, когда шахматисту может быть выгоднее, доведя пешку до 8-й горизонтали, превратить её не в свою фигуру, а в фигуру соперника?
Можете смоделировать пример?
0
Stepler #
увы, я посредственно играю, мало опыта, знаний и шахматного зрения.
+1
xn__p2a #
Во, я придумал ситуацию.

Ход белых. Единственная возможность избежать пата — это провести пешку и выставить при этом на поле фигуру соперника (любую чёрную).
chess: black or white
0
MiXei4 #
А как может получиться такая ситуация? По-моему не получается промотать назад.
+1
xn__p2a #
А что именно тут кажется нереальным?
Допустим, предыдущим ходом чёрная пешка съела белую фигуру b6-a5.
Дальше тоже могу без проблем отмотать.
0
darkfrei #
до e2-e4? :)
+1
Dromok #
Лично я узнал об этом правиле, прочитав комментарий выше 0_о
0
xdevel #
играл. долго не мог понять почему у компа появляются 2 королевы.
+2
xn__p2a #
Это очень удивительно, учитывая, что в шахматах нет такой фигуры вообще.
0
xdevel #
не играл в шахматы лет 15. Пусть будет ферзь. Все равно не понимаю почему у компа их 2.
0
lasthero #
Воспользуюсь случаем, хочу спросить есть хорошие книги обучающие игре в шахматы? Играть умею, но хочется основы защиты/нападения. По наитию сложно играть.
+4
char #
Тысячи их. Я читаю на мобильнике, хотя лучше шахматную литературу проходить с доской под рукой.

Вот хорошие подборки:

webchess.ru/ebook/
www.chesszone.net.ru/lib/lib.html
0
lasthero #
Спасибо.
0
DmitriKadykov #
Полным-полно тут rutracker.org/forum/viewtopic.php?t=1612870
+2
lasthero #
Спасибо, конечно, но найти на торрентах подборку книг по шахматам я и сам могу. Я за всю жизнь не осилю прочесть практически 1 гигабайт книжек.

Мне бы 1-2 книги, но самые самые.
+1
DmitriKadykov #
Самые-самые — в плане чего? По теории дебютов, эндшпилей, миттельшпилей? По позиционной игре или больше по тактике? Немаловажен также и уровень игры. Если их всех гамбитов вы слышали лишь про турецкий — можете почитать например «Учебник шахматной игры», Капабланки. Логично, последовательно доступно обо всем что есть в шахматах.
0
lasthero #
Научился играть в шахматы в 5 лет, много играл до 7 лет с папой. Сейчас играю плохо, выигрываю только таких же новичков, а хочется поднять свой уровень.
«Учебник шахматной игры» для меня будет самое оно. С азов. Этого я и хотел, ещё раз спасибо.
0
imobz #
такая же история ходил в кружок до 8 лет, потом бросил, может рубанёмся? (в личку)
0
DmitriKadykov #
Да, забыл сказать — эта книга есть в списке по той ссылке с рутрекера.
0
Kastrulya0001 #
Просто играй почаще. Я себя чувствовал примерно как и ты пару лет назад. Но повадился играть с соседом по вечерам, к нему еще и гости периодически заскакивают, тоже любители шахмат и пива =) И вот, начал уверенно выигрывать у мужиков, которые считались хорошими игроками. Поиграв с годик можно уже и за книжку браться с разборами партий и ситуаций.
+1
dyakov #
Согласен с предыдущим автором, в том что учебник Капабланки — одна из лучших книг для начала, если дальше первого разряда не хотите лезть
+2
Kolegg #
Очень помогают шахматные видеоуроки — они помогают понять основные идеи дебютов, что является самым сложным для новичка. На том же рутрекере их десятки по разным дебютам.
0
lasthero #
Спасибо. Не знал, буду смотреть.
0
ITProfi #
А вот кстати, не убивает ли желание играть в шахматы тот совершенно улетный уровень, который необходимо наработать, чтобы играть профессионально? Лет 100-200 назад шахматы еще оставались игрой, в которой любитель мог освоиться за несколько лет, и даже выигрывать турниры. А сейчас уровень настолько вырос, что надо очень сильно погрузиться в это дело, и явно иметь некоторый талант, чтобы играть серьезно.
0
yudinetz #
без рокировки херово конечно. и еще я не знал, что ему можно детский мат ставить, поэтому на втором ходу пошел Nf3.
потом выиграл в течение минуты примерно)
раньше был кандидатом в мастера. и да, улетный уровень гроссов убивает желание играть.
чтобы чего-то достичь в этой игре (топ-30 в мире), нужно начинать усиленно заниматься с 3-4 лет.
0
variable #
начинайте с авербуха, классика для начинающих…
+2
Self_Perfection #
Не реализована не только рокировка, но и взятие на проходе, о чём честно написано в Description.
+2
xn__p2a #
> про рокеровку программер забыл

Рокеровка — это, наверное, какая-то тусовка рокеров?
Одновременный ход королём и ладьёй в шахматах называется рокировка.

P.S. Кстати, пользуясь случаем, поздравляю вас с Международным днём грамотности.
0
webrover #
не забудьте поставить мне плюс, за то что дал Вам возможность поумничать )
+15
MikeGav #
Детский мат поставил :)
+1
napster #
5 раз подряд
0
IVN_SPB #
e2-e4,f1-g4,d1-f3,f3-f7 — мат))))
и я поставил
0
smartov #
f1-g4
Круто у вас слон ходит.

f1-c4 будет получше :)
0
IVN_SPB #
да, именно так f1-c4
+1
Nikitian #
Похвальный минимализм.
Рокировку короткую не поддерживает (
0
webrover #
длинную не проверял…
НЛО прилетело и опубликовало эту надпись здесь
+4
ITProfi #
Главное, что я первую партию этому тупому алгоритму сдул вчистую. Хотя честно, не шахматист, и фигуры в руки не брал уже много лет :-)
0
darkfrei #
Лучше вместо книжек разобраться в алгоритме, хорошо играет, чертяка)
0
NightWriter #
и длинную, проверил
+2
tion #
Мат в 5 ходов отдает всегда))
+3
pivasyk #
там в 3 делается легко )
+1
alexleo #
Пощадите, не дайте умереть от любопытства :) _как_ в три хода поставить мат, если нужно а) вывести пешку; б) вывести ферзя; в) вывести фигуру? Или я слишком шаблонно думаю?
0
pivasyk #
Туплю, Вы правы. Детский мат 4 хода, я его имел ввиду
+4
xn__p2a #
Пощадите, не дайте умереть от любопытства :) _как_ в три хода поставить мат
Мат возможен даже в два хода:

chess-mat-v-dva-hoda
+2
kovyrlo #
Классно, однако. Так классно, что буритто захотелось…
0
defrost #
мат в 3 моих хода)
0
Olostan #
Если не шутка, то запостите плиз ваши ходы… просто интересно :)
+2
GreenAngel #
Я ему мат в 4 хода поставил…
E2-E4
D1-H5
F1-C4
H5-F7
habreffect.ru/c3c/8812803bc/12.jpg
+4
GreenAngel #
Но 1кб — это здорово)
+1
Tronum #
Аналогично: «детский мат» оно ну ни в какую не может побороть.
Ну и пусть то ходит он хоть рандомно, но впихнуть логику хотьбы всех фигур в 1Кб прикольно. В 2Кб наверное он начнет ставить половину в тупик ))) А уэ если ему дадут разгульнутся на целый Мб…
+1
GreenAngel #
Ну я не игрок) О детском мате конечно слышал, но суть его не поленился узнать только сейчас.
По-моему — это как с кубиком-рубиком. Гораздо интереснее и приятнее если действуешь не по формуле.
+1
smind #
После шахмат на 1С, написанных на спор NS-сом за неделю, меня вряд ли что то удивит…
–5
veter #
Алгоритмом это назвать сложно, потому что играет он крайне слабо. Примерно на уровне Monkey из некоторых версий Chessmaster'а.
–13
OpenMinded #
Слабоват противник.
+7
235 #
если слабоват, что ж он тебя большинство фигур снес? )) он действительно слаб, но этот скрин указывает что не всегда)
0
DmitriKadykov #
На самом деле, если удается выиграть пожертвовав пол-комплекта а то и более, то речь как правило идёт о каком-нибудь шедевре :)
ru.wikipedia.org/wiki/%D0%91%D0%B5%D1%81%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D1%8F

Текста партии пользователя OpenMinded не видел, сомневаюсь что там есть что-то интересное, но мало ли? Вобщем смысл такой — о классе игры белых судить по тому скриншоту преждевременно.
0
OpenMinded #
Класс игры белых никуда не годится. Белые принципиально не думали более чем на 1 ход вперед. Однако черных это не спасло.
0
dmitrek #
Не каждый день так быстро удаётся выиграть :)
+51
zamaza #
блин, я ему проиграл :(
0
valerad12 #
ну и код…
–2
ihoru #
Очень легкий противник:
a.imageshack.us/img811/1757/123ny.jpg
Я никогда не обыгрывал «нормальный» компьютер.
0
RiderSx #
Долго Вы с ним возились, не в обиду сказано :)
+7
darkfrei #
— Какая у вас собака умная, в шахматы играет!
— Почему это умная? 5:2 в мою пользу!


0
ihoru #
Я далек от совершенства в шахматах.
0
Blackside #
интересно, где этот алгоритм можно будет использовать.
+8
Omni #
Я ему проиграл!

Пол-партии валял дурака, а потом стало поздно. Когда-то был первый разряд… :-))))

Пойду выпью 1024 грамм.
+1
TycoooN #
Как это работает-то?
+6
matich #
Это чёрная магия.
+5
Yanovsky #
Пока не выйграю, спать не лягу!
+32
wdiablo #
1кб кода умнее меня :(
0
AHTOLLlKA #
я даже себя УГ почуствовал((
+3
Voviandr #
автору респект. алгоритм очень заинтересовал, чувствую что пока не разберу его от и до, меня от монитора за уши не оттащить. добавил в избранное.
+6
Devgru #
С вас статья :)
+1
Irokez #
+4
filippoff #
ну а вы че хотели, каспарова в 1 кб? :)) я тож просрал за 5 мин, хорошо на душе стало
0
NeLexa #
И «битое поле» не работает ((
–1
Vizakenjack #
1 килобайт кода не прощает ошибок -(
0
charon #
я проиграл (
0
dyakov #
играет слабо конечно, но все равно для килобайта кода довольно разумно
0
TravisBickle #
Я тоже продул =) Обидно.
0
DnV #
После мата можно дальше ходить, но для строчки кода — простительно )
+3
volos #
у меня что-то с кодировкой на страничке, фигуры не отображаются кликанье меню «вид» в браузере не помогло.
0
xn__p2a #
Шрифт в вашей системе не содержит юникодных символов шахматных фигур. У вас Win2k или WinXP наверное?
0
volos #
точно, win XP SP3
поиграю в Linux Mint
+1
AntonDiaz #
Там еще одни шахматы есть: js1k.com/demo/373

Но в 1 Кб уместился только 3Д-эффект с поворотом камеры. Там не то что AI отсутствует, даже правила ходов не действуют)
+3
Amlor #
Это правильные шахматы. В реальности тоже нет никакого AI и никаких правил ходов — всё в голове :)
0
IchWill #
А еще они кушают свой цвет, и короля можно замышить за край доски
0
_Felix_ #
Очень впечатляет. Правда, после объявления шаха алгоритм почему-то отказывался ходить — наверное ждал, пока я сделаю более подходящий ход.
Кстати дождался. Когда я решил, что он завис и стал кликать мышкой — быстренько походил туда моим ферзем и сразу же его съел.
–5
volanddd #
0
GreenAngel #
Забавно было бы устроить конкурс на самую длинную партию.
–1
Vladson #
Со стороны программирования вещь шикарная, но увы сложность игры сильно хромает, даже новичок ему не проиграет…
img265.imageshack.us/img265/7905/clipboard01fgm.jpg
+2
ITProfi #
Я самонадеянно — продул :-) Алгоритм удивительный, особенно если учесть, что кроме основной функции он еще и правильность перемещения фигур проверяет, т.е. сходить пешкой на три клетки вперед не получится. А ведь на такие вещи можно было и забить ради краткости.
–1
LavrenovNN #
Нет рокировки, и взятий на проходе…. Выиграл легко (у меня в детстве был КМС)… но всё равно молодцы!!! Глядишь, со временем и Рыбку (лучший шахматный движок последних 3-4 лет), портируют на javascript.
0
Delfino #
я ужасно играю ))) но обыграл! использовал перманентное желание скрипта — взять фигуру
0
tibalt #
кстати, 10-килобайтовый конкурс по джаваскрипту то уже закончился?
+1
Vladson #
Кстати есть у этого автора и более хорошая версия шахмат, но больше размером в 2-3кб
nanochess.110mb.com/archive/toledo_javascript_chess_3.html
(есть и рокировка, и.т.д. да и играет чуть посильнее)
0
charon #
У меня в Хроме там все фигуры в виде одинаковых квадратиков
+1
ITProfi #
Я сейчас из Хрома пишу, проверил — все фигуры отображаются корректно. Может обновить версию?
0
charon #
у меня 6.0.472.53. Хром говорит, что это и так последняя, нечего обновлять.
0
ITProfi #
Ого, так это я получается, на старье сижу :-) У меня 5.0.375.127
0
darkfrei #
Сижу на 7.0.503.0 dev, всё в порядке, фигуры нормальные.
+1
Vladson #
Версия не при чём, шрифта не хватает какого-то… (название не знаю)
0
darkfrei #
Word говорит что это MS Mincho.
0
ztarlitz #

Детский мат поставить не дал, вот самая короткая партия, что получалась. А еще я пять ферзей проводил, кто больше?
+2
Tant #
Я шесть провел, вышло бы семь, но обезумевший компьютер набросился последним слоном на мою пешку, оставив голого короля, которому на тот момент ничего не угрожало.
В целом, защищается от прямых атак более-менее, но если делать «тихие ходы», то компьютер или делает ужасные ошибки, или тупо переставляет туда-сюда фигуры в тылу.
+7
ztarlitz #

Пол часа мучений, ну что кто больше сможет?
Тут вся сложность в том, как бы ему случайно мат не поставить или в пат не загнать над этим много думать приходится. Пешку мне гаденыш срубил в середине партии тоже слоном при том за зря отдав своего слона)))
0
ITProfi #
Впечатляет :-)
+7
Tant #
Убил пол-рабочего дня, но, попытки с двадцатой, провел все 8 пешек:
0
ztarlitz #
зачет! Еще и ферзя сохранил)))
+2
Tant #
Да, в принципе, это не сложно, я просто невнимательный, зеваю фигуры под стать этому компу, поэтому долго воевал. А так, это легко, главное свои пешки вперед не выводить. Я делал так: 1. a2-a4. 2. h2-h4. 3. Л a1-a3. А дальше, как повезет, но комп, дай ему волю, зачем-то пытается все пешки выдвинуть как можно дальше, просто выстраивает их все на 5-й линии, а то и на 4-ю двигает, и даже не смотрит, что некоторые без защиты от моей ладьи (королевская особенно). Если повезет, то 1-2 пешки сразу можно захавать. А дальше дело техники. Аккуратно, не подставляясь, выводить остальные фигуры. Комп сам не атакует, только нападает на одинокие фигуры впереди. Ну, и подставляется при этом постоянно.
0
Tant #
Скрипт обновился. Потолстел на 4 байта (1014 -> 1018). Подсвечивает последюю ходившую фигуру противника. Поумнел. Не намного, но детский мат уже не проходит, дурацких ошибок меньше. Да и пешки уже просто так не отдает.
0
Arkan_86 #


а у меня так)))
+9
pomkaster #
ваш коммент и предыдущий теперь можно будет использовать вместо ).

А вообще мне даже немного обидно, что 1кб текста, какие-то 1024 буковки, выиграли меня в шахматы.
Пусть нету всяких рокировок, взятий на проходе и других вещей о которых я даже не додумался бы проверить, но Оскар Толедо крутой чувак!
+7
Chvanikoff #
После этого кода всякие 10K Apart — детские развлечения…
–4
avatarmov #
Обыграл. Конечно, неплохо написан ИИ, но никакой ИИ не сможет сравниться с разумом человека)
0
TycoooN #
В шахматах уже давно сравнился, и даже, кажется, превзошел.
А чтобы обыграть алгоритм размером 1КБ, много ума не надо…
0
avatarmov #
Как будто я говорил, что это не так. Ума много не надо, но иногда делает неплохие ходы.
–1
ITProfi #
На сайте программера лежит также Picochess — версия на языке Си, тоже размером до 1К: nanochess.110mb.com/chess3.html

У меня, правда, не компилируется, gcc на Windows выдает ошибки, посмотрел код, действительно, в первой же строке перечисление переменных без типа, как оно должно работать, непонятно…
0
lany #
В классическом K&R C и в ранних стандартах Ansi допускался тип по умолчанию — int. Затем это убрали.
0
entze #
C килобайтом конечно сильно, но вообще не новость. 5к шахматы победили в конкурсе на 5килобайтную страничку. Сейчас есть проект на соусфордже — p4wn.sourceforge.net/5k/
0
ztarlitz #
на соусфордже я сразу влепил детский мат, а вот этот 1 кб вариант мне такого не позволял.
0
darkfrei #
В комментариях выше этому однокилобитному все детский мат ставили. Видимо чуть подправили код уже.
0
darkfrei #
*килобайтному
0
NeonMercury #
>> однокилобитному
а было бы круто :)
НЛО прилетело и опубликовало эту надпись здесь
+1
Boiler #
Это первые шахматы, в которые я выиграл у компа :)
Только если поставить мат, комп просто пропускает ход и дает заново походить
0
DmitriKadykov #
Лично для меня мало-мальский интерес в плане игры представляет разве что только если сразу с первых ходов отдать ему ферзя. Попутно возникло желание написать своего :)
0
algo #
Прикольно! Я бы оценил уровень на 3 разряд.
0
darkfrei #
А как он оценивается? Каждая партия уникальна, тут выиграл/проиграл — единственный результат.
0
xn__p2a #
Надо устроить программе турнир с участием игроков разных разрядов. И по пропорции игроков-участников разных разрядов и по отношению побед/поражений в играх с разными игроками по результатам турнира вычисляется разряд.
0
ykrop #
ололо поставил детский мат.

habrastorage.org/storage1/a63ecb9f/a2d2ae66/aa5aec7b/57af5d54.jpg
0
Illorian #
Это всё-таки великий труд. Я думаю, такое стоит внимания

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.