powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Тяпничный animated GIF : ChessPlayer
16 сообщений из 16, страница 1 из 1
Тяпничный animated GIF : ChessPlayer
    #38813304
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здарова други!

Поздравляю с пятницей и вот он - хакатон.

Вот такая вот вещь нужна. WebApp. Или даже rest.

Нотация:
Код: java
1.
2.
3.
4.
e4 e5
Qh5?! Nc6
Bc4 Nf6??
Qxf7# 1–0 



В виде урл.

http://127.0.0.1:8080/ChessPlayer/animate?arg=e4 e5,Qh5?! Nc6,Bc4 Nf6??,Qxf7# 1–0


Должен быть вот такой вот респонс.



Полезные юникод-симолы до кучи http://en.wikipedia.org/wiki/Chess_symbols_in_Unicode
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38813667
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Нынче в моде svgz с embeded javascript, который по DOM фигурки перекидывать будет. :)
делаешь у клеточек id клетка 'kletkaE5', а у фигур 'figE2'.
парсишь текст 'e2 e4' - ишешь 'figE2' удаляешь ее из 'E2'
удаляешь фигуру из 'e4'
у фигуры из 'figE2' меняешь id на 'figE4'
добавляешь в 'kletkaE4' 'figE4'.
запуск следующего хода через паузу.

Все что надо сделать на сервере добавить в подготовленный svg в код определение массива ходов, пожать gzip и отправить клиенту.
Не интересно.
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38813924
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38813944
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Долго делать. Тема избитая. Есть готовое JavaScript-решение: http://chessboardjs.com
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38813946
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usmanmayton,

Долго делать. Тема избитая. Есть готовое JavaScript-решение: http://chessboardjs.com Лицензия MIT !
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38814437
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хех... скептики кругом. Ладно подниму краудсорс. Начнём с maven-шаблончика.
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38819350
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

на тебе в качестве заготовки. :)
Нотация ходов упрощена. Проверок нет. Фигура только одна и нарисована символически.
Если включать то
Код: html
1.
<object data="chess.svg" type="image/svg+xml" height="300px" width="300px">


или inline.
Если сжимать до svgz то
Код: java
1.
response.addHeader("Content-Encoding", "gzip")



на правах Public Domain, as is, prove fact
Код: xml
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.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100" onload="initBoard();" id="chessBoard_01">
<rect id="Border" x="0" y="0" width="100" height="100" fill="none" stroke="black"/>
<g id="board_01"/>
<script type="application/ecmascript">
<![CDATA[
 var unicPrefix  = '_01';
 var klekaColors = ["#FFFACD","#DAA520"];
 var kletkaChars = ['A','B','C','D','E','F','G','H'];
 var peshkaPath  = "M2 8 A1.5,1.5 0 0,1 3.5,6 A1.5,4 0 0,1 6.5,6 A1.5,1.5 0 0,1 8 8 z";
 var nextStep    = 0;
 var moves       = ['E2E4','D7D5','E4D5','E7E5','D5E6E5','F7E6']; 

 function kletkaXY(kletka){
  return {"x":(kletka.toUpperCase().charCodeAt(0)-64)*10,"y":(9-kletka.substring(1,2))*10};
 }

 function createFig(path,color){
     var fig = document.createElementNS("http://www.w3.org/2000/svg",'path');
     fig.setAttribute('d',path);
     fig.setAttribute('fill',color?'white':'black');
     fig.setAttribute('stroke',color?'black':'white');
     fig.setAttribute('stroke-width','0.3');
     return fig;
 }

 function initBoard(){
  var svg=document.getElementById("board"+unicPrefix);
  while (svg.hasChildNodes()) {  
    svg.removeChild(svg.firstChild);
  }
  var color = 1;
  for (var i=0;i<kletkaChars.length;i++) {
   for (var j=1;j<=8;j++) {
    var kletkaNum=kletkaChars[i]+j+unicPrefix;
    var kletka = document.createElementNS("http://www.w3.org/2000/svg",'g');
    kletka.id ='kletka'+kletkaNum;
    var rect = document.createElementNS("http://www.w3.org/2000/svg",'rect');
    rect.setAttribute('stroke','black');
    rect.setAttribute('fill',klekaColors[color]);
    rect.setAttribute('width',10);
    rect.setAttribute('height',10);
    var x = (i+1)*10;
    var y = 90-j*10;
    rect.setAttribute('x',x);
    rect.setAttribute('y',y);
    kletka.appendChild(rect);
    if (j==2) {
     var peshka = createFig(peshkaPath,true);
     peshka.id = 'fig'+kletkaNum;
     peshka.setAttribute('transform','translate('+x+' '+y+')');
     kletka.appendChild(peshka);
    }
    if (j==7) {
     var peshka = createFig(peshkaPath,false);
     peshka.id = 'fig'+kletkaNum;
     peshka.setAttribute('transform','translate('+x+' '+y+')');
     kletka.appendChild(peshka);
    }
    svg.appendChild(kletka);
    color ^= 1;
   }
   color ^= 1;
  }
  nextStep = 0;
  setTimeout(nextMove,1000);
 }

 function nextMove() {
  if (nextStep<moves.length) {
   frm = moves[nextStep].substring(0,2);
   tto = moves[nextStep].substring(2,4);
   ddl = moves[nextStep].substring(4,6);
   var fig = document.getElementById("fig"+tto+unicPrefix);
   var kletkaTo = document.getElementById("kletka"+tto+unicPrefix);;
   if ((fig!=null)&&(kletkaTo!=null)) {
    kletkaTo.removeChild(fig);
   }
   fig = document.getElementById("fig"+frm+unicPrefix);
   var kletkaFrom = document.getElementById("kletka"+frm+unicPrefix);;
   if ((fig!=null)&&(kletkaTo!=null)&&(kletkaFrom!=null)) {
    kletkaFrom.removeChild(fig);
    fig.id="fig"+tto+unicPrefix;
    var xy = kletkaXY(tto);
    fig.setAttribute('transform','translate('+xy.x+' '+xy.y+')');
    kletkaTo.appendChild(fig);
   }
   fig = document.getElementById("fig"+ddl+unicPrefix);
   kletkaTo = document.getElementById("kletka"+ddl+unicPrefix);;
   if ((fig!=null)&&(kletkaTo!=null)) {
    kletkaTo.removeChild(fig);
   }
   nextStep++;
   setTimeout(nextMove,1000);
  } else {
   setTimeout(initBoard,3000);
  }
 }

 function refreshBoard() {
  var svg=document.getElementById("chessBoard"+unicPrefix);
  svg.innerHTML = svg.innerHTML;
 }
]]>
</script></svg>

...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38819414
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Круть ваще. Спасибо Сергей. Как раз скриптинга в SVG мне и не хватало.
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38819736
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

D принципе, наверное, можно через http://www.w3.org/TR/SVG/animate.html#AnimateTransformElementanimateTransform, тогда скрип не нужен будет и, наверное, в <img> заработает.
Но тут все ходы для все фигур надо прописать на сервере.
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38819751
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевНынче в моде svgz с embeded javascript, который по DOM фигурки перекидывать будет. :)Сервис отдающий визуализацию в виде gif-ки тоже может быть полезен (не только ж в браузере gif-ку показывать может быть нужно)
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38819757
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моя Nokia гифки умеет показывать. А вот SVG... хрен там.
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38819769
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немножечко гугла и находим реализацию формирования гифки из пачки каринок. Завернуть это все в REST - уже дело техники
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38819777
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For AllНемножечко гугла и находим реализацию формирования гифки из пачки каринок. Завернуть это все в REST - уже дело техники
Спасибо за идею. Я возьму ее за базовый вариант. Но хотелось-бы не писать
"видео" целиком. А только "доску" и "фигурки".

Боюсь "лопнет" моя Nokia.
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38819789
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Gif позволяет писать изменение части кадра.
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38820506
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так
...
Рейтинг: 0 / 0
Тяпничный animated GIF : ChessPlayer
    #38820821
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For AllНапример так
По поводу анимации по ссылке http://boiling-plateau-5120.herokuapp.com/e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7

Здесь не вополощена идея экономии места. Кадрый записываются в полном формате.
По сути это видео-запись. Отчёт ImageMagic/identify насколько я разбираюсь, подтверждает это.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
identify e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7.gif 

e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7.gif[0] GIF 208x208 208x208+0+0 8-bit sRGB 256c 69KB 0.000u 0:00.000
e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7.gif[1] GIF 208x208 208x208+0+0 8-bit sRGB 256c 69KB 0.000u 0:00.001
e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7.gif[2] GIF 208x208 208x208+0+0 8-bit sRGB 256c 69KB 0.000u 0:00.001
e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7.gif[3] GIF 208x208 208x208+0+0 8-bit sRGB 256c 69KB 0.000u 0:00.001
e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7.gif[4] GIF 208x208 208x208+0+0 8-bit sRGB 256c 69KB 0.000u 0:00.001
e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7.gif[5] GIF 208x208 208x208+0+0 8-bit sRGB 256c 69KB 0.000u 0:00.001
e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7.gif[6] GIF 208x208 208x208+0+0 8-bit sRGB 256c 69KB 0.000u 0:00.001
e2e4-e7e5-d1h5-b8c6-f1c4-g8f6-h5f7.gif[7] GIF 208x208 208x208+0+0 8-bit sRGB 256c 69KB 0.000u 0:00.001


Это не то что я хотел.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Тяпничный animated GIF : ChessPlayer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]