ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


アプリケーション > 計算ソフトを作る [ 1 | 2 ]

計算ソフトを作る - 1/2

更新 : 2009/01/07

 



実行中の計算ソフト
完成図:計算ソフト

ここでは計算ソフトの作成について解説します。
今回は小学 1 年生の算数でやる 1 桁の足し算を支援するソフトを作ります。こういうとたいそうなものですが、単に乱数で数値を選んで足すだけのソフトです。これだけでは解説も何もいらないようなものですが、使えるソフトにするには、いろいろと面倒なことを処理しなければなりません。そのための基本の計算部分が参考になればと考えて作ったサンプルです。

計算ソフト作成のポイント
●Win32 の ExtractAssociatedIcon 関数と ShellExecute 関数の利用
以上を理解すれば作成できます。

それではさっそくフォームの作成から見ていくことにします。



StartBtn と EndBtn を置き、その下に ResultLabel を配置させます。
横には、UpLabel  (1),  DownLabel(2), Label2(+)、Shape1(横棒) と KetaMemo(3) を用意します。キー入力で使う、SpeedBtn0〜9 はテンキーのような感じで並べておきます。

Form のサイズは Height = 217, Width = 426 にしてありますので、各コンポーネントの大きさは、適宜調整してください。面倒な場合は、適当に配置して、Form の大きさを変えても OK です。UpLabel, DownLabel, KetaMemo は位置合わせのため数字が数字にしてあります。
なお、TBitBtn(後から bmp でも追加しようかな、と考えて今回 TBitBtn にしてあります)の代わりに TButton でも良いです。

設計中の計算ソフト
 
コンポーネント Name 説明
TBitBtn StartBtn Caption="もんだい"
TBitBtn CalcBtn Caption="けいさん"
TLabel ResultLabel 計算結果を表示。
TLabel UpLabel 上段の数字表示に使用。
TLabel DownLabel 下段の数字表示に使用。
TLabel Label2 Caption="+"
TShape Shape1 横棒で使用。
TMemo KetaMemo 1 桁の入力で使用。
TSpeedButton SpeedBtn0〜9 Captionは、0〜9。数字キーとして使用。

コンポーネントの配置が済んだら、ヘッダーファイル Unit1.h のコーディングを行います。

今回使用する、変数と二つの関数を宣言します。
result は乱数で求めた数値計算の正解が保持されます。ユーザーが入力した数字が正解かどうか判定するときに使います。二つの関数は下で詳細を説明します。


private: // ユーザー宣言
    int result;//計算結果

    //計算部分コンポーネントの初期化関数
    void InitCalc(bool flag);
    void MakeQuestion();//上下段の問題を作成する関数 

次に実際のコードを Unit1.cpp に書いていきます。

今回、乱数発生ルーチン random を使うので必要なヘッダーファイルをインクルードしておきます。


#include <stdlib.h>

先ほど宣言した InitCalc 関数を実装します。

この関数は計算で表示される数値をクリアするためのものです。フラグが false であればすべての値を、true であれば入力値のみをクリアします。


//--------------------------------------------------------- 
//
// 機能 :計算部分を初期化する
// 引数 :flag(false:全て初期化, true:Memo のみ初期化)
//
//--------------------------------------------------------- 
void TForm1::InitCalc(bool flag)
{
    switch (flag) {
    case 0://false
        //乱数文字を初期化
        ResultLabel->Caption = "";
        UpLabel->Caption   = "";
        DownLabel->Caption = "";
    case 1://true
        KetaMemo->Clear();
        KetaMemo->SetFocus();
    }
}

MakeQuestion 関数は、0〜4 までの数値を乱数で選ばせ、上下の段に計算問題として表示します。その数値の計算結果(正解)を result 変数に格納します。result 変数は、ユーザーが計算結果として入力した数字が正しいかどうか判定するのに使います。


//--------------------------------------------------------- 
//
// 機能 :乱数から数値を取得して、上下段の問題を作る
//
//---------------------------------------------------------
void TForm1::MakeQuestion()
{
    AnsiString str = 0, str2 = 0;

    //上段の問題を乱数から取得
    str = random(5);
    //上段の問題数字を表示
    UpLabel->Caption = str;

    //下段の問題を乱数から取得
    str2 = random(5);
    //下段の問題数字を表示
    DownLabel->Caption = str2;

    //計算結果を求める
    result = StrToInt(str) + StrToInt(str2);
}

続く・・・。



[ ホーム | ページトップ | 次へ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.