2012/03/31に第26回北海道開発オフが開催されたので参加してきた。
第30回が近づいてきたので、ちょっとイベント企画を提案してみようと思い、今回はその技術的な下調べをしてみた。
調べたかったのは、以下を実現できる方法
- 異なる言語で書かれたプログラムを同時に実行
- 実行の結果を一つの画面に表示
これらを実現する方法として、CGIをJacaScriptから呼び出して受け取った結果を表示するWebアプリケーションを作ってみることにした。
CGIは、1~3をランダムに返すだけの簡単なプログラム。Pythonで書いた。
import random i = random.randint(1, 3) print('Content-Type: text/plain') print('') print(str(i))
このCGIをJavaScriptで呼ぶ。jQueryを使ってやってみる。はじめてのjQuery。
var imagelist = {
1: "goo-02.gif",
2: "cyoki-02.gif",
3: "paa-02.gif"
};
function execCgi() {
$.post('/cgi-bin/player1.py', null, completedExec1);
$.post('/cgi-bin/player1.py', null, completedExec2);
}
function completedExec1(result) {
$("#result1").html(result);
src = imagelist[parseInt(result)];
$("#image1").attr("src", "/image/" + src);
}
function completedExec2(result) {
$("#result2").html(result);
src = imagelist[parseInt(result)];
$("#image2").attr("src", "/image/" + src);
}
execCgi関数で、postメソッドを使ってCGIを呼んでいる。読んだあとのコールバックにcompletedExecを指定した。completedExecでは返された数字にしたがって画像を表示するという、つまりはじゃんけんゲームである。
上記のソースでは呼んでいるCGIは同じものだが、異なるものを呼ぶようにすれば、それぞれ書いたプログラムでジャンケンゲームができるはずである。Webサーバーの設定をすれば言語も複数対応できるだろう。
これで、好きな言語で、あるルールに従ったCGIプログラムを作って、対戦する、といったゲームが実現できると思うので、第30回のイベント企画として提案してみた。
コメント
コメントを投稿