M.Hiroi's Home Page

Tcl/Tk GUI Programming

Mini Games 2

[ Home | Tcl/Tk ]

CONTENTS


はじめに

Tcl/Tk とC言語を使って、簡単な思考ゲームを作ってみました。時間のかかる思考ルーチンをC言語で作成しています。主に Oh!X 1999 春号、1999 夏号、2000 春号、2001 春号に掲載された拙作を公開しています。ゲームを実行するには Tcl/Tk をインストールしてください。

●Windows

Windows の場合、M.Hiroi は ActiveState の ActiveTcl を使っています。ActiveTcl には Windows 用のバイナリが用意されているので、ダウンロードしてインストーラーを起動すれば、簡単にセットアップすることができます。

M.Hiroi が動作を確認した Tcl/Tk のバージョンは 8.2, 8.3.1, 8.3.2, 8.4.9 です。また、Tcl/Tk 8.2 より以前のバージョンでは、DLL のロードでエラーとなるため動作しません。それから、上記バージョン以外の動作は未確認です。もしも動作しない場合は、DLL の再コンパイルが必要になります。

ダウンロードは、バージョン 8.2, 8.3.1, 8.4.9 用の 3 種類のファイルを用意してあります。なお 8.3.2 は、8.3.1 用のファイルで動作します。ご使用になる OS とバージョンにご注意くださいませ。

ダウンロードしたゲームは LHA 形式で圧縮されているので、Lhasa などのツールを使って展開してください。あとは Tcl スクリプトファイル (拡張子が tcl のファイル) をダブルクリックするとゲームが実行されます。

●Linux

Debian 系の OS では、次のコマンドで Tcl/Tk をインストールすることができます。

sudo apt install tcl tk

M.Hiroi が動作を確認したバージョンは Tck/Tk 8.6 (Xubuntu 18.04) です。左記バージョン以外の動作は未確認です。もしも動作しない場合は、プログラムの修正もしくは共有ライブラリの再コンパイルが必要になると思われます。コンパイルする場合は、開発用のパッケージをインストールしてください。

sudo apt install tcl-dev tk-dev

コンパイルには gcc を使います。基本的には次のコマンドを実行するだけです。

gcc -O2 -shared -fPIC -o 共有ライブラリ名 ソースファイル ...

具体的にはC言語ソースファイルの冒頭に記述してあります。簡単にコンパイルできるので、共有ライブラリの読み込みなどで失敗する場合は試してみてください。

ダウンロードしたゲームは tar + gzip で圧縮されています。端末で操作する場合は、次のコマンドで展開することができます。

tar zxvf ゲーム名.tar.gz

ゲーム名と同じ名前のサブディレクトリが作成されます。あとは、そのディレクトリに移動して、端末で ./Tclスクリプトファイル を入力すると、ゲームが実行されます。

●Cygwin

Cygwin で実行する場合は Linux 版を修正して共有ライブラリを再コンパイルしてください。

  1. C言語ソースファイルの修正
  2. #include <tcl/tcl.h> --> #include <tcl.h>
    
  3. 共有ライブラリのコンパイル
  4. gcc -O2 -shared -o 共有ライブラリ名 ソースファイル ... -ltcl 
    

なお、共有ライブラリ名の拡張子は .dll ではなく .so にしてください。.dll に変更すると、Tcl スクリプトファイルの修正が必要になります。


これらのゲームはフリーウェアとします。自由に使ってください。ただし、これらのプログラムは無保証であり、使用したことにより生じた損害について、作者「広井誠 (Makoto Hiroi)」は一切の責任を負いません。また、これらのプログラムを販売することで利益を得るといった商行為は禁止いたします。

Copyright (C) 1999-2019 Makoto Hiroi

カラー(Kalah)

カラーの画像

相手よりもたくさんの駒を集めれば勝ち、というゲームです。ルールは単純ですが、展開がスリリングでおもしろい思考ゲームです。

カラーの盤面は、6 個の穴が向かい合って並んでいます。左右にはカラーと呼ばれる穴があり、右となりが自分のカラーです。最初は、カラーを除く穴に 6 個ずつ駒が入っています。自分のカラーに半分以上の駒(36 個)を集めることが勝利条件です。

ゲームは、自分の穴を選び、その中の駒を全て取り出して、右となりの穴から反時計回りで駒を一つずつ配っていきます。この時、自分の穴とカラー、相手の穴には駒を入れますが、相手のカラーには入れません。駒を配り終えた時に、次のようなスペシャルケースが発生します。

  1. カラーで配り終えた場合、もう一度駒を配ることができる。
  2. 自分の空の穴で駒を配り終えた場合、向かいの穴に相手の駒があれば、 両方の駒を自分のカラーに入れる。これを「両取り」という。
  3. 自分の穴に駒がなくなった場合、相手の穴に残っている駒を全て相手 のカラーに入れてゲームを終了する。

駒の配置によっては、連続してカラーに駒を入れることができます。また、うまく両取りがかかるようにすると、相手の駒をいっきに自分のカラーへ入れることができます。劣勢な状態でも、相手の穴に駒がなくなれば、3 の条件により大逆転も可能です。

なお、C言語で思考ルーチンを作成しているため、思考レベルを上げても遅くなりません。安心して強いレベルに挑戦してください。

●Windows版

●Linux版

(Oh!X 1999 春号掲載)

アップでポン

アップでポンの画像

アップでポンは、玉をピラミッドのように積み上げていき、先に持ち玉を使いきった方が勝ち、という思考ゲームです。一般には「アッパーハンド」と呼ばれています。

5 行 5 列の穴があいた盤の上に玉を積み上げていきます。中央には、中立の玉(このゲームでは緑色の玉)を置きます。先手は赤玉を 28 個、後手は青玉を 26 個持ち、交互に玉を 1 個ずつ置いていきます。この時、玉を置くことができる場所は、「穴の上」か「4 個の玉が作る最小の正方形の上」のどちらかです。

玉を置くことによって最小の正方形ができた時には、次の規則を適用します。

  1. 正方形を構成する 4 つの玉のうち、3 つ以上が同じ色の玉の場合は、その上に同じ色の玉を必ず置きます。同じ色の玉が 2 つ以下の場合は、上に玉を置きません。中立の玉は、赤と青のどちらにもカウントしません。
  2. 1 手で最小の正方形が複数(最大 4 個)できた時や、1 の規則で置いた玉によって新しく最小の正方形ができた時には、全ての正方形に対して 1 の規則を適用します。
  3. 全ての正方形に対して 1 の規則を適用したら手番を交代します。

このように、交互に玉を置いていき、先に玉を使いきった方が勝ちとなります。それから、自分の手番の時に玉を使いきるとは限らない、ということに注意してください。自分が置いた玉によって、相手の玉が無くなる場合もあるのです。また、自分の玉を使いきり、そのことによって相手の玉が無くなることもあります。その場合は引き分けとなり、ピラミッドが完成します。

●Windows版

●Linux版

(Oh!X 1999 春号掲載)

リバーシ

リバーシの画像

思考ゲームの定番「リバーシ」です。1999 年夏に「コンピュータリバーシ対決」が 電脳倶楽部 で行われました。この時、拙作の X68000 用リバーシが市販のリバーシゲームに、けちょんけちょんに叩きのめされたのを見て、メラメラとプログラマ魂が燃え上がり、思考ルーチンの改良に取り組んだのです。その後、電脳倶楽部編集部の鎌田 (M.Kamada) 氏も参戦し、三つ巴の熱き戦いが繰り広げられました。この戦いの中で拙作の思考ルーチンも強くなり、市販のリバーシゲームにもいい勝負ができるようになりました。

Tcl/Tk バージョンでは、終盤で読み切る手数が長い分だけ X68000 版より強いかもしれません。初級者レベルの作者では、Level 1 にさえ苦戦してしまいます。もっとも、中級、上級者から見るとまだまだ弱いのでしょう。腕に覚えのある方は、試してみてください。

変更履歴

ver 1.02 (2000/07/17) ホームページ上で公開
不具合修正
  1. コンピュータが最後の石を置く時、パスが表示される場合がある。
ver 1.01 (1999/11/28) Oh!X 2000 春号掲載
思考ルーチンの改良
不具合修正
  1. 石とマスの隙間をクリックすると、その位置に石を置いてしまうことがある。
ver 1.00 (1999/02/14) Oh!X 1999 春号掲載
X68000 リバーシを移植

●Windows版

●Linux版

(Oh!X 2000 春号掲載)

ヘックスリバーシ

ヘックスリバーシの画像

「リバーシ (Reversi) 」のヘックス(六角)バージョンです。ルールは通常のリバーシと同じですが、盤とマスの形が六角形になるため、円盤を挟む方向が六方向と少なくなります。リバーシとはプレイ感覚がかなり異なるように思います。ぜひ遊んでみてください。

変更履歴

ver 1.01 (2000/07/17) ホームページ上で公開
不具合修正
  1. コンピュータが最後の石を置く時、パスが表示される場合がある。
ver 1.00 (1999/11/28) Oh!X 2000 春号掲載
X68000 六角リバーシを移植

●Windows版

●Linux版


オクトリバーシ

オクトリバーシの画像

思考ゲームの定番「リバーシ (Reversi) 」の変形バージョンです。通常のリバーシは盤面が 8 行 8 列ですが、オクトリバーシ (Oct Reversi) では 8 行 8 列盤の四か所の隅を取り除いた盤面を使用します。このため、石の総数は 60 個と少なくなりますが、逆に隅は八か所と増えることになります。ルールはリバーシと同じです。

ちなみに、10 行 10 列盤の隅の部分を 3 マス削った八角形の盤を使うリバーシがあります。M.Hiroi は「八辺リバーシ (Octagon Reversi)」といっていますが、これを「オクトリバーシ (Octo Reversi)」と呼ぶことがあります。ご注意くださいませ。

思考ルーチンは、基本的にはリバーシと同じですが、評価関数の調整が十分ではありません。このため、慣れると簡単に勝てるようになる、と思っていました。ところが、実際にプレイしてみると、レベルが高くなるとなかなか勝つことができません。まあ、4 石少ない分だけ読み切りモードに入るのも早くなるのですから、コンピュータには有利なゲームなのかもしれません。また、ゲーム感覚がリバーシとヘックスリバーシの違いよりも大きく、最初は相当に戸惑うと思います。リバーシとの違いをお楽しみください。

●Windows版

●Linux版

(Oh!X 2001 春号掲載)

ビッグリバーシ

ビッグリバーシの画像

思考ゲームの定番「リバーシ」の変形バージョンです。通常のリバーシは 8 行 8 列盤を使用しますが、「ビッグリバーシ (Big Reversi) 」の盤面は 10 行 10 列とひとまわり大きくなっています。M.Hiroi はビッグリバーシといっていますが、「パーフェクトリバーシ (Perfect Reversi) 」と呼ぶ場合もあります。ルールはリバーシと同じです。

ビッグリバーシは、月刊・電脳倶楽部 Vol.132 に掲載された拙作をバージョンアップしたものです。思考ルーチンは Oh!X 2000 春号に掲載されたリバーシとほぼ同様の改良を行っているので、前バージョンよりも強くなっています。ただし、サイズが大きくなったぶんだけ、思考時間も長くなってしまいました。

サイズを大きくしただけですが、通常のリバーシとはゲーム感覚がかなり異なっているようです。前バージョンでは、このような感覚はほとんど感じませんでした。きっと、思考ルーチンが弱すぎて、ビッグリバーシの面白さを感じることができなかったのでしょう。初級者レベルの M.Hiroi は Level 2 といい勝負ですが、中級、上級者から見るとまだまだ弱いと思います。腕に覚えのある方は、ぜひ試してみてください。油断すると大敗するかもしれませんよ。

●Windows版

●Linux版


八辺リバーシ

八辺リバーシの画像

思考ゲームの定番「リバーシ」の変形バージョンです。「八辺リバーシ (Octagon Reversi) 」は 10 行 10 列盤の隅の 3 マスを削除した八角形の盤面を使います。石の総数は 88 個とビッグリバーシよりも少なくなりますが、隅は八か所に増えることになります。M.Hiroi は八辺リバーシといっていますが、「オクトリバーシ (Octo Reversi) 」と呼ぶ場合もあります。ルールはリバーシと同じです。

拙作のオクトリバーシよりも盤面がひとまわり大きいので、ゲームの展開が複雑で面白いリバーシになっていると思います。それに、隅が八か所もあるので、普通のリバーシとはゲーム感覚が全く異なります。初めてプレイする時は、かなり戸惑われると思います。普通のリバーシには飽きたけどビッグリバーシはちょっと大きすぎる、という方にはぴったりなゲームではないでしょうか。

コンピュータの強さは、ビッグリバーシと同じくレベル 0 からレベル 5 までの 6 段階あります。思考ルーチンは調整不足のためまだまだ弱いですが、けっこう楽しめると思います。リバーシ好きな方はぜひ遊んでみてください。

●Windows版

●Linux版


Copyright (C) 1999-2019 Makoto Hiroi
All rights reserved.

[ Home | Tcl/Tk ]