将棋アプレット
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>