ObjectSquare [2001 年 10 月号]

[技術講座] CppUnit 入門


6. サイコロゲーム完成!!

6.1. 実行ファイルの作成

 さて、各クラスの実装、単体テストが終わったので、実行ファイルを作って動かしてみましょう。main 関数を書きます。

dicegame/main.cpp
#include "DiceGameUI.h"

int main(int argc, char* argv[])
{
    DiceGameUI diceGameUI;
    diceGameUI.show();
    return 0;
}

 Autoconf/Automake を使っているのであれば、dicegame/Makefile.am を次のように書き換えます。プレフィックス bin が指定されているプログラムは make install で /usr/local/bin (変更可能) にインストールすることができます。

dicegame/Makefile.am
SUBDIRS = . tests

# 実行ファイル dicegame(.exe) を作成する。
# make install で /usr/local/bin にインストール可能。
bin_PROGRAMS = dicegame

# 実行ファイル dicegame(.exe) のソースファイル。
dicegame_SOURCES = main.cpp
# libdicegame.a をリンクする。
dicegame_LDADD   = libdicegame.a

noinst_LIBRARIES = libdicegame.a

libdicegame_a_SOURCES = \
  Dice.cpp \
  DiceGamePlayer.cpp \
  DiceGame.cpp \
  DiceGameUI.cpp \
  Dice.h \
  DiceGamePlayer.h \
  DiceGameListener.h \
  DiceGame.h \
  DiceGameUI.h

 書き換えたらいつもの手順でビルドします。

$ ./bootstrap
$ ./configure
$ make

 MSVC++ を使っている場合はアプリケーション用のプロジェクトを追加します。

Project3

 以上のファイルをまとめたものを用意しました。実装および単体テスト済みです。

6.2. ゲームで遊ぼう

 やったー、ついに完成しました!! (パチパチパチ) さっそく遊んでみましょう。

$ dicegame/dicegame

<<< サイコロ ゲーム >>>

1: 半, 2: 丁, 9: 中断 --> 1
コロコロコロ...
[3][3]
私の勝ちです。(0勝 1敗)

1: 半, 2: 丁, 9: 中断 --> 2
コロコロコロ...
[1][1]
あなたの勝ちです。(1勝 1敗)

1: 半, 2: 丁, 9: 中断 --> 2
コロコロコロ...
[3][2]
私の勝ちです。(1勝 2敗)

1: 半, 2: 丁, 9: 中断 --> 9
現在 1勝 2敗です。
ゲームを続けますか? (Y/N) --> n

 う〜ん、負けてしまった(T_T)。なかなか手ごわいぞ。


おわりに

 CppUnit 入門いかがでしたか? 私は、最近書くソースコードはできるだけ xUnit で単体テストを行うようにしているのですが、以前に比べて自分のコードの信頼性が増したように思います。みなさんも xUnit でテストの自動化しませんか?

 ※ アンケート にご協力お願いします。


© 2001 OGIS-RI Co., Ltd.
Prev. Index
Prev. Index