Tcl/Tk を使って簡単なゲームを作ってみました。Oh!X 1999 春号、1999 夏号、2000 春号、2001 春号に掲載された拙作や、Puzzel DE Programming で作成したゲームの Tcl/Tk 版を公開しています。
ゲームを実行するには Tcl/Tk をインストールしてください。ゲームは Tcl/Tk 8.3 以降のバージョンであれば動作します。M.Hiroi は ActiveState の ActiveTcl 8.4.9.0 を使っています。ActiveTcl には Windows 用のバイナリが用意されているので、ダウンロードしてインストーラーを起動すれば、簡単にセットアップすることができます。
ダウンロードしたゲームは LHA 形式で圧縮されているので、Lhasa などのツールを使って解凍してください。あとは Tcl スクリプトファイル (拡張子が tcl のファイル) をダブルクリックするとゲームが実行されます。
どれも見たことがあるゲームだと思います。私は絵心の無いプログラマなので、画面デザインについては多くのことを要求しないでくださいね。Tcl/Tk は GIF 形式などの画像ファイルを扱うことができるので、不満のある方は改造しましょう。
これらのゲームはフリーウェアとします。自由に使ってください。ただし、これらのプログラムは無保証であり、使用したことにより生じた損害について、作者「広井誠 (Makoto Hiroi)」は一切の責任を負いません。また、これらのプログラムを販売することで利益を得るといった商行為は禁止いたします。
0 から 9 までの異なった 4 桁の数字を当てるゲームです。数字は合っているが桁は間違っている個数を cows で表し、数字も桁も合っている個数を bulls で表します。つまり、bulls が 4 になると正解となります。このゲームでは、コンピュータがあなたのお相手をいたします。少ない回数で正解したほうが「勝ち」、同じ回数だと「引き分け」となります。また、両者とも 10 回以内に当てることができない場合も「引き分け」となります。
25 枚のパネルを同じ色に揃えるパズルゲームです。パネルをクリックすると、そのパネルと上下左右のパネルの色が変化します。揃える色はどの色でもかまいません。色は、2、3、4、5 色の中から選ぶことができます。クリアした問題は回数と共にファイルに格納されるので、最小回数で色を揃えるようにチャレンジすることができます。
SameGame や SX-BlockDown に類するパズルゲームで、上下左右に 2 つ以上続いている同じ色の駒を取り除いていきます。空いた場所には、上の駒が落ちてきます。縦一列の駒がすべて消えると、それより右側にある駒が左へ移動します。
同時に消した駒の数を n とすると、(n - 1)の 2 乗だけ点数が入ります。全ての駒を消すと 10 万点のボーナスが入ります。また、同じ種類の駒を全て消した場合には、1種類につき 1 万点のボーナスが入ります。
付属のデータには、200 個の問題が用意されています。最初は簡単に高得点をねらえますが、後半になると難しくなります。スコアは保存されますので、納得するまでチャレンジしてください。
相手よりもたくさんの駒を集めれば勝ち、というゲームです。ルールは単純ですが、展開がスリリングでおもしろい思考ゲームです。
カラーの盤面は、6 個の穴が向かい合って並んでいます。左右にはカラーと呼ばれる穴があり、右となりが自分のカラーです。最初は、カラーを除く穴に6 個ずつ駒が入っています。自分のカラーに半分以上の駒(36 個)を集めることが勝利条件です。
ゲームは、自分の穴を選び、その中の駒を全て取り出して、右となりの穴から反時計回りで駒を一つずつ配っていきます。この時、自分の穴とカラー、相手の穴には駒を入れますが、相手のカラーには入れません。駒を配り終えた時に、次のようなスペシャルケースが発生します。
駒の配置によっては、連続してカラーに駒を入れることができます。また、うまく両取りがかかるようにすると、相手の駒をいっきに自分のカラーへ入れることができます。劣勢な状態でも、相手の穴に駒がなくなれば、3 の条件により大逆転も可能です。
なお、思考ルーチンを Tcl/Tk で記述しているため、思考レベルを上げると遅くなります。ご注意くださいませ。
皆さんお馴染みのナンバープレースです。縦、横、太線の枠の中に、異なる数字を一つずつ埋め込んでいきます。たとえば、盤面が 9 行 9 列の場合、縦に 1 から 9 までの数字を一つずつ、横に 1 から 9 までの数字を一つずつ、太線の枠(3 行 3 列)の中に 1 から 9 までの数字を一つずつ入れます。盤面にはヒントの数字が表示されているので、これを頼りに空いている場所に数字を入れてください。盤面は 9 行 9 列の他に、12 行 12 列 (1 から 12 まで) と 16 行 16 列 (1 から 16 まで) を用意しました。
このゲームに付属している問題は、プログラムによって自動生成したものです。プログラムは DOS 窓で実行します。詳しい使用方法は取扱説明書をご覧ください。
解法プログラムの追加(2000/08/26)
今までのファイルには、解答を表示する Answer 機能用のプログラムが含まれていませんでした。解法プログラムを用意しましたので、ダウンロードメニューからゲットしてください。プログラムはナンバープレースと同じディレクトリに置いてください。メニュー Answer を選択すると、プログラムを起動して解答を表示します。ご迷惑をおかけしたことをお詫び申し上げます。
TENは、足して 10 になる 2 枚のカードを取り除いていくパズルゲームです。カードは赤、青、黄、緑、の 4 種類があり、それぞれ 1 から 9 までのカードが 4 枚ずつ、計 144 枚のカードを全て取り除けばクリアです。
TENには 3 種類のモードが用意されています。
三種類のモードとも、カードはランダムに配置されるため、クリアできる保証はありません。ご注意くださいませ。
ten_sub.tcl は、3つのモードで使うサブールーチンを集めたスクリプトファイルなので、ダブルクリックしてもゲームは実行できません。ご注意くださいませ。
あの「テトリス」と双璧をなす、落ち物系パズルゲームの元祖です。旧 Oh!X で初めて付録ディスクがついた 1990 年 6 月号に掲載された Yet Another Column (作者:泉大介氏) を参考にしています。Tcl の処理速度に不安があったのですが、実際に作ってみるとあっけないほど簡単に動いてくれました。
簡単にルールを説明しましょう。コラムスは、上から落ちてくる3連のタイルを使って、積もったタイルを消していくパズルゲームです。3連のタイルには色がついていて、同じ色のタイルを縦、横、斜めのいずれかに3つ以上並べると、そのタイルを消すことができます。タイルは複数の方向に重複して並んでいてもかまいません。消した後の空間には、上のタイルが落ちてきます。
タイルの色は Yet Another Column では 6 種類でしたが、今回はタイルの色を 5 種類、6 種類、7 種類の中から選べるようにしました。それぞれトップテンのスコアを記録することができます。
Puzzle DE Programming で作成したゲーム「MiniMax」の Tcl/Tk バージョンです。ルールの説明は Puzzle DE Programming 思考ゲーム「MiniMax」 を参照してください。
MiniMax のダウンロード(6,419 byte)
ならべてポンは、同じ色のカードを左から順番に並べるパズルゲームです。
1 2 3 4 1 2 3 4 ┌─┬─┬─┬─┐ ┌─┬─┬─┬─┐ A│y1│y3│ │r3│ A│y1│y2│y3│ │ ├─┼─┼─┼─┤ ├─┼─┼─┼─┤ B│r1│g2│g1│b3│ B│g1│g2│g3│ │ ├─┼─┼─┼─┤ ├─┼─┼─┼─┤ C│ │b1│ │r2│ C│r1│r2│r3│ │ ├─┼─┼─┼─┤ ├─┼─┼─┼─┤ D│b2│g3│ │y2│ D│b1│b2│b3│ │ └─┴─┴─┴─┘ └─┴─┴─┴─┘ ゲーム開始時 完成図 y : 黄色, r : 赤, b : 青, g : 緑 図:ならべてポン
ならべてポンは、空いている場所にカードを移すことでゲームを進めていきます。カードを空き場所に移動させるには、次の条件を満たさなくていはいけません。
たとえば、上図のゲーム開始時には、(1,C), (3,A), (3,C), (3,D) の 4 つの空き場所があります。(1,C) は一番左側なので、ここに y1, r1, b1, g1 のどれかを移すことができます。(3,A) の左隣は y3 ですが、これより大きなカードはないので、この場所にカードを移すことはできません。(3,C) の空き場所は、左隣のカードが b1 なので (1,D) にある b2 のカードを移すことができます。
このようにカードを移動させて、左から順番にカードを並べます。どの行にどの色のカードを並べるかは自由です。この例では A 行に黄色を並べていますが、解けるのであれば、B, C, D のどの行に並べてもかまいません。移動できるカードが無くなったならば「手詰まり」となります。
盤の大きさは、4 行 4 列、5 行 5 列、6 行 6 列の 3 種類から選ぶことができます。盤が大きくなるとカードの種類と枚数が増えるので、パズルの難易度は高くなります。また、カードはランダムに配置されるので、解けない場合もあります。ご注意くださいませ。
SEVENは数字が書かれた 72 枚のカードを全て取り除くパズルゲームです。カードは 10 行 8 列の盤に並べられていて、カードを取り除くには、次の条件を満たさなくてはいけません。
カードを取り除いた後の空き場所には、上のカードが落ちてきます。それから、数字以外にも ? が表示されたワイルドカードが 8 枚あります。ワイルドカードをクリックし、次に数字カードをクリックすると、数字カードをワイルドカードの位置へ移動させることができます。
スコアは数字カードを全て取り除くまでの時間です。ただし、ワイルドカードを使うと、1 枚につきスコアが 10 秒加算されます。ワイルドカードをうまく使って、ハイスコアを目指してください。
ブロックアップは、落ち物系パズルを逆にしたようなゲームで、下からブロックを押し上げて、積まれているブロックを消していくパズルゲームです。一番下のラインにある二個一組のブロックを左右に動かし、適当な位置でブロックを押し上げてください。ブロックには色がついていて、同じ色のブロックを縦、横、斜めのいずれかに 3 つ以上並べると、そのブロックを消すことができます。ブロックは複数の方向に重複して並んでいてもかまいません。消した後の空間には、上のブロックが落ちてきます。
ブロックの操作はキーボードを使って行います。
キー | 動作 |
---|---|
4, カーソルキー左 | ブロックを左に移動 |
6, カーソルキー右 | ブロックを右に移動 |
5, カーソルキー下 | ブロックの順番を入れ替える |
8, カーソルキー上, スペース | ブロックを押し上げる |
S | ゲームの開始 |
ブロックは 6, 7, 8 種類の 3 つの中から選ぶことができます。ブロックの種類が多くなるほどゲームの難易度は高くなります。得点は次の式で計算します。
(消したブロックの数 * 連鎖ボーナス) の 2 乗
連鎖とは、ブロックが消えて上から落ちてきたブロックによって、同じ色のブロックが 3 つ以上並んでブロックが消えることです。連鎖ボーナスは連鎖回数が増えると共に、1 -> 2 -> 4 -> 8 -> 16 ... と増加していきます。時間制限はありません。うまく連鎖を起こして高得点を狙ってください。
Linux 版は Tcl/Tk 5.6 (Lubuntu 14.10), Tcl/Tk 5.5 (Kona Linux 2.3) で動作確認しました。Debian 系の OS では、次のコマンドで Tcl/Tk をインストールすることができます。
sudo apt-get install tcl tk
ダウンロードしたファイルは tar + gzip で圧縮されています。端末で操作する場合、ファイルは次のコマンドで展開することができます。
tar zxvf minigame.tar.gz tar zxvf minigame2.tar.gz
サブディレクトリ minigame (or minigame2) が作成されます。あとは、サブディレクトリに移動して、端末で ./Tclスクリプトファイル名 を入力すると、ゲームが実行されます。