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

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

Вот такая вот вещь нужна. 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
21.11.2014, 19:18
    #38813667
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тяпничный animated GIF : ChessPlayer
mayton,

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

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

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

Долго делать. Тема избитая. Есть готовое JavaScript-решение: http://chessboardjs.com Лицензия MIT !
...
Рейтинг: 0 / 0
23.11.2014, 16:55
    #38814437
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тяпничный animated GIF : ChessPlayer
Хех... скептики кругом. Ладно подниму краудсорс. Начнём с maven-шаблончика.
...
Рейтинг: 0 / 0
28.11.2014, 12:28
    #38819350
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тяпничный animated GIF : ChessPlayer
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
28.11.2014, 13:01
    #38819414
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тяпничный animated GIF : ChessPlayer
О! Круть ваще. Спасибо Сергей. Как раз скриптинга в SVG мне и не хватало.
...
Рейтинг: 0 / 0
28.11.2014, 15:45
    #38819736
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тяпничный animated GIF : ChessPlayer
mayton,

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

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

Gif позволяет писать изменение части кадра.
...
Рейтинг: 0 / 0
30.11.2014, 01:28
    #38820506
For All
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тяпничный animated GIF : ChessPlayer
Например так
...
Рейтинг: 0 / 0
30.11.2014, 19:30
    #38820821
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тяпничный animated GIF : ChessPlayer
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
Форумы / Java [игнор отключен] [закрыт для гостей] / Тяпничный animated GIF : ChessPlayer / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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