2012-01-04 43 views
5

Trước khi chúng ta thực hiện riêng của chúng ta, có một đoạn Java mã nguồn mở hiện tại có một chuỗi cờ FEN và chuyển đổi nó thành một biểu diễn HTML của bàn cờ không?FEN (Ký hiệu cờ vua) cho trình tạo HTML? Mã nguồn mở Java

Một FEN mã trông như thế này: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

Kết quả sẽ là một cái gì đó giống như <table><tr><td>♘</td><td>♛</td><td>...

Một giải pháp biểu tượng dựa trên, hoặc thậm chí là một giải pháp mà tạo ra một hình ảnh lớn thay vì HTML, có thể chấp nhận quá . Đó là để tích hợp vào một ứng dụng Android.

(Here is an implementation in Python)

+1

Tại sao lại là hình ảnh? Không phải là biểu tượng cờ vua một phần của Unicode? –

+0

@KerrekSB: Thật vậy! Điều đó cũng ổn thôi. Đang cập nhật câu hỏi của tôi. –

+0

Hm, có vẻ như là một gói LaTeX tốt ("skak"), và luôn có LaTeX2HTML, nhưng điều đó có vẻ lãng phí. Một giải pháp trực tiếp-HTML sẽ được tốt đẹp. –

Trả lời

5

Tôi tìm thấy một số CSS3 hữu ích từ nơi này: http://designindevelopment.com/css/css3-chess-board/
Vì vậy, tôi đã đưa ra như sau:

<html> 
<head> 
    <style type="text/css"> 
     .chess_board { border:1px solid #333; } 
     .chess_board td { 
      background:#fff; background:-moz-linear-gradient(top, #fff, #eee); 
      background:-webkit-gradient(linear,0 0, 0 100%, from(#fff), to(#eee)); 
      box-shadow:inset 0 0 0 1px #fff; 
      -moz-box-shadow:inset 0 0 0 1px #fff; 
      -webkit-box-shadow:inset 0 0 0 1px #fff; 
      height:40px; text-align:center; vertical-align:middle; width:40px; font-size:30px;} 
     .chess_board tr:nth-child(odd) td:nth-child(even), 
     .chess_board tr:nth-child(even) td:nth-child(odd) { 
      background:#ccc; background:-moz-linear-gradient(top, #ccc, #eee); 
      background:-webkit-gradient(linear,0 0, 0 100%, from(#ccc), to(#eee)); 
      box-shadow:inset 0 0 10px rgba(0,0,0,.4); 
      -moz-box-shadow:inset 0 0 10px rgba(0,0,0,.4); 
      -webkit-box-shadow:inset 0 0 10px rgba(0,0,0,.4); } 
    </style> 
    <script type="text/javascript"> 
     function renderFen(fentxt) { 
      fentxt = fentxt.replace(/ .*/g, ''); 
      fentxt = fentxt.replace(/r/g, 'x'); // Convert black rooks to 'x' to avoid mixup with <tr></tr> tags 
      fentxt = fentxt.replace(/\//g, '</tr><tr>'); 
      fentxt = fentxt.replace(/1/g, '<td></td>'); 
      fentxt = fentxt.replace(/2/g, '<td></td><td></td>'); 
      fentxt = fentxt.replace(/3/g, '<td></td><td></td><td></td>'); 
      fentxt = fentxt.replace(/4/g, '<td></td><td></td><td></td><td></td>'); 
      fentxt = fentxt.replace(/5/g, '<td></td><td></td><td></td><td></td><td></td>'); 
      fentxt = fentxt.replace(/6/g, '<td></td><td></td><td></td><td></td><td></td><td></td>'); 
      fentxt = fentxt.replace(/7/g, '<td></td><td></td><td></td><td></td><td></td><td></td><td></td>'); 
      fentxt = fentxt.replace(/8/g, '<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>'); 
      fentxt = fentxt.replace(/K/g, '<td>&#9812;</td>'); 
      fentxt = fentxt.replace(/Q/g, '<td>&#9813;</td>'); 
      fentxt = fentxt.replace(/R/g, '<td>&#9814;</td>'); 
      fentxt = fentxt.replace(/B/g, '<td>&#9815;</td>'); 
      fentxt = fentxt.replace(/N/g, '<td>&#9816;</td>'); 
      fentxt = fentxt.replace(/P/g, '<td>&#9817;</td>'); 
      fentxt = fentxt.replace(/k/g, '<td>&#9818;</td>'); 
      fentxt = fentxt.replace(/q/g, '<td>&#9819;</td>'); 
      fentxt = fentxt.replace(/x/g, '<td>&#9820;</td>'); 
      fentxt = fentxt.replace(/b/g, '<td>&#9821;</td>'); 
      fentxt = fentxt.replace(/n/g, '<td>&#9822;</td>'); 
      fentxt = fentxt.replace(/p/g, '<td>&#9823;</td>'); 
      return '<table class="chess_board" cellspacing="0" cellpadding="0"><tr>' + fentxt + '</tr></table>'; 
     } 
    </script> 
</head> 
<body> 
    <script type="text/javascript"> 
     document.write(renderFen('rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1')); 
    </script> 
</body> 

1

Trích dẫn từ Alexander Maryanovsky Jin của site trang web:

Về Jin

Jin là một mã nguồn mở, đa nền tảng, client đồ họa cho cờ vua máy chủ, viết bằng Java . Jin có thể chạy dưới dạng ứng dụng độc lập (có sẵn tại trang web này) hoặc dưới dạng applet, trực tiếp từ trình duyệt của bạn (có sẵn tại trang web của máy chủ cờ).

Dự án của ông là mã nguồn mở và có sẵn trên Sourceforge.

Lấy lớp học Position.java và bạn sẽ tìm thấy một số đoạn mã Java xử lý FEN.

+0

+1 Tôi đã chấp nhận một câu trả lời, nhưng thực tế là Jin đang ở Java làm cho nó một câu trả lời gần hơn cho câu hỏi viết của tôi (mặc dù trong trường hợp sử dụng JavaScript của tôi thực sự là tốt quá) –

Các vấn đề liên quan