はじめに

最初にオセロゲーム(trinity)を作成したのが1988年ですから、今年でちょうど20年目になります。ここでは、Swing アプリケーションとして作成した事例を紹介します。



切っ掛けは、幼い頃に遊んだ「ダイヤモンドゲーム」でした。オセロゲームは2人が対峙するゲームなので、3人目は傍観するしかありません。そこで「3人でも遊べないか」という思いから、オセロゲーム(trinity)作りに着手したものです。そのルールは(3人で対戦することを除いて)オリジナルの「オセロゲーム」と同様です。

 version   implementation   note 
第1版 1988/11/25 Smalltalk/Smalltalk trinity(3人対戦)の布石として、先に hexagon(2人対戦)を作成しました。当時のバージョンはカラー対応しておらず、グレースケール(ビットマップ)を利用していたのが懐かしく思えます。
第2版 2004/01/07 Swing/Jython ビューには、Swing コンポーネントを利用しました。Smalltalk/Python の違いが、ここに集約されます。
第3版 2008/05/12 WPF/IronPython モデルは上記のものを再利用して、ビューを新たに作成します。IronPython 版は、こちら《第7章 オセロゲーム(trinity/hexagon)1/24, IronPython - 続・ひよ子のきもち》です。

《Tips》頻発する仕様変更(ルール拡張)にも柔軟かつ迅速に対処できることから、Jython を導入することで、Java と比べて、プログラミング効率の向上が期待できます。□

盤面の形状

オリジナルのゲーム盤の配置では、4つのコマを配置した状態から、ゲームを開始します。しかし、正六角形を基調とする盤面では、対称性が失われ、美観を損ねると考えました。新しいゲームを考案するときに、これが最大の難関でした。そして、試行錯誤の末にたどり着いたのが、次のようなものです。


この形状とコマの初期配置に至るまでには、次のような経緯がありました。

初期画面

各六角形を蜂の巣状に配置するには、これらをひとつ置きに配置するだけです。


六角形を配置するときに、わずかな隙間を設けました。これは、同じ色のコマが密着して隣接すると、見た目が窮屈になるのを避けるためです。すると、全体的なコマの配置に均衡が取れて、好ましい印象を与える効果があります。


Previous|1/5|Next

コマの初期配置

整数 6 を因数分解すると、2 と 3 の積になります。すると、2人の対戦では、それぞれに3つのコマを置くのが適当と考えられます。そこで、6つのコマを配置するなら、ゲーム盤の「対称性を損なわない」という結論に達しました。


盤面にコマを配置するときには、180° と 120° との対称性に配慮するのが望ましいと考えられます。そして、10個の六角形が三角形状に並んだ(120° の対称性を持つ)6つの領域と、4個の六角形が直線形状に並んだ(180° の対称性を持つ)2つの領域を統合して、盤面全体が(ほぼ)六角形状となる初期画面の配置に到達しました。