将棋アプレット
Zope と Java applet は相性が良い?
ふと、象歩将棋 ZShogi のクライアント側 GUI を Java Applet で試して みました。 まあまあ良さそうです。 今まで Zope 鯖で担ってきた処理を WEB ブラウザが分担してくれるので、 鯖と回線の負担は大幅に減ることが期待できます。 ちゃんと作れば、かなり有望。
ZShogi インスタンスの利用は、 今までサーバ側の DTML のインタフェースしか考慮して無かったのでかなり使いづらいものでした。 アプレットを使うことでインタフェースがすっきりします。
と云うことで、視界の先になんとなく将棋サーバも見えて来たような。 機能的な面では 勝手に将棋トピックス の記事がとても参考になりました。 追々改造して行こうと思います。
とりあえず Java アプレットのソースはこんなかんじ。
// // AppletTest.java // import java.applet.Applet; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.net.URL; public class AppletTest extends Applet implements ActionListener { String location; String gameid; int sequence; Image image; Button btn_next; public void init(){ location = getParameter("location"); gameid = getParameter("gameid"); sequence = 0; setImage(); setBackground(Color.white); setForeground(Color.black); setFont(new Font("Serif", Font.BOLD, 14)); btn_next = new Button("次の手"); this.add(btn_next); btn_next.addActionListener(this); } public void start(){ repaint(); } public void paint(Graphics g) { g.drawImage(image, 0, 35, Color.white, this); } public void update(Graphics g) { paint(g); } public void actionPerformed(ActionEvent e) { this.sequence++; setImage(); repaint(); } public void setImage(){ String seq = "/show?seq=" + (new Integer(sequence).toString()); try { URL u = new URL(location + gameid + seq); image = getImage(u); } catch (java.net.MalformedURLException e) { System.out.println("caught java.net.MalformedURLException"); } catch (java.lang.Exception e) { System.out.println("caught java.lang.Exception"); } finally { } } }
呼び出す html の方は、
<applet height="220" width="220" code="AppletTest.class"> <param name="location" value="将棋盤のロケーション"> <param name="gameid" value="ZShogi オブジェクト名"> </applet>