ゲーム作りではじめる
MFC

サポート情報
最終更新2002年10月22日

■サンプル・プログラムのダウンロード・サービス(2002年10月22日)
■掲載ソース・リストの間違いについて(2002年10月22日)


■サンプル・プログラムのダウンロード・サービス(2002年10月22日)

 本書に掲載されているサンプル・プログラムのソース・コードを、以下に用意いたしました。必要なファイルをダウンロードしてご利用ください。

<1章>

ファイル名 サイズ 説 明
Wa1.ZIP 48,784 バイト VC++の基本操作(サンプル・プログラム「wa1」)
Wa2.ZIP 101,974 バイト サンプル・プログラム「wa2」

<2章>

ファイル名 サイズ 説 明
DoVi-sa1.ZIP 42,956 バイト ドキュメント/ビュー方式の減算プログラム
DoVi-kan1.ZIP 98,083 バイト ドキュメント/ビュー方式の関数を作るプログラム
Kurasu1.ZIP 54,064 バイト 自分自身のクラスを作るプログラム
Grokansu1.ZIP 21,813 バイト 自分自身で作るグローバル関数
Ed1.ZIP 50,933 バイト エディット・ボックスとボタンを使ったプログラム(1)
Ed2.ZIP 37,153 バイト エディット・ボックスとボタンを使ったプログラム(1)
Kasan1.ZIP 51,028 バイト エディット・ボックスを使った加算プログラム
Sisoku1.ZIP 51,228 バイト 四則演算のプログラム
Dentaku1.ZIP 56,259 バイト 簡易電卓のプログラム

<3章>

ファイル名 サイズ 説 明
Kousi1.ZIP 37,159 バイト サンプル・プログラム(格子を表示するプログラム)
Sin1.ZIP 53,084 バイト サンプル・プログラム(Sin関数を表示するプログラム)
Pict1.ZIP 41,534 バイト ピクチャ・コントロールに絵を描くプログラム(1)
Pict2.ZIP 35,333 バイト ピクチャ・コントロールに絵を描くプログラム(2)
HPict-0.ZIP 234,390 バイト ビットマップ・ファイルを画面に直接表示するプログラム
HPict-1.ZIP 346,752 バイト ビットマップ・ファイルをピクチャ(ボックス)に表示するプログラム
Icon1.ZIP 78,395 バイト アイコン・ファイルをピクチャとボタンに表示するプログラム
Btn3.ZIP 46,267 バイト ビットマップ・ファイルをピクチャとボタンに表示するプログラム
BtnColFnt1.ZIP 99,820 バイト ボタンとエディット・ボックスの色と文字のフォント・サイズの指定
Timer1.ZIP 62,045 バイト タイマ処理(タイマーのサンプル・プログラム)

<4章>

ファイル名 サイズ 説 明
Rocket1.ZIP 95,653 バイト ロケットを画面の左から右に飛ばすプログラム
Chyoview1.ZIP 74,011 バイト 蝶が画面の左から右に羽ばたいて飛ぶプログラム
Chyoview4.ZIP 91,335 バイト 蝶が画面上を自由に羽ばたいて飛ぶプログラム

<5章>

ファイル名 サイズ 説 明
Mine1.ZIP 72,740 バイト 地雷当てゲーム(マイン・スイーパー)
Slot1.ZIP 47,798 バイト スロット・マシン
Mogura1.ZIP 94,583 バイト モグラたたき
Sinkei1.ZIP 99,298 バイト 神経衰弱
Bingo1.ZIP 71,217 バイト ビンゴ・ゲーム
Pazul1.ZIP 71,359 バイト パズル・ゲーム
HorseRsce.ZIP 110,712 バイト ホース・レース
HansyaBan1.ZIP 65,058 バイト 反射板ゲーム
Maze1.ZIP 70,287 バイト 迷路ゲーム
Shoot1.ZIP 91,136 バイト シューティング・ゲーム

■掲載ソース・リストの間違いについて(2002年10月22日)

 本書に掲載されているソース・リストのいくつかに、以下のような間違いがあります。ソースを入力される際には、以下のリストのように、ボールド指定されている行を追加してください。

・149ページ 「OnButton関数」
・216ページ 「Pstart関数」
・230ページ 「OnTimer関数」
・241ページ 「OnInitialUpdate関数」

 149ページ 「OnButton1関数」
-----------------------------------------------------------------
void CBtn1Dlg::OnButton1() 
{
    // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

    COLORREF SysColorValue[3];
    CEdit* ED1=(CEdit*)GetDlgItem(IDC_EDIT1);//本では抜けています

    SysColorIndex[0]=COLOR_BTNFACE;
    SysColorValue[0]=RGB(0,0,255);//ボタンの背景の色(青)

    SysColorIndex[1]=COLOR_BTNSHADOW;
    SysColorValue[1]=RGB(0,255,0);//ボタンの影の色(緑)

    SysColorIndex[2]=COLOR_BTNTEXT;//ボタンのテキスト文字の色(白)
    SysColorValue[2]=RGB(255,255,255);

    //指定した色をシステムカラーとしてセットする
    SetSysColors(3,(const int*)&SysColorIndex,(const COLORREF*)&SysColorValue);
        
    SetDlgItemText(IDC_EDIT1,"片山幸雄");//あるいは
    //ED1->SetWindowText("OK");     //本では抜けています
}
-----------------------------------------------------------------

 216ページ 「Pstart関数」
-----------------------------------------------------------------
void CBItblt2Dlg::Pstart(UINT code)
{

    CDC* pDC;
    pDC=this->GetDC();      //本では抜けています
    CDC myDC;
    CBitmap myBMP[3],*old;  //本では抜けています

    int num=IDB_BITMAP1;

    static int i=-2;
    static int j=-2;
    static int k=-2;
      
     if( code == 1)//タイマー1
     {
        myDC.CreateCompatibleDC(pDC);
        
        myBMP[0].LoadBitmap(num);
        old=myDC.SelectObject(&myBMP[0]);

        pDC->BitBlt(100,100,61,61,&myDC,0,i*10,SRCCOPY);
        i=i+1;

        if(i==18) i=-2;

     }
     else if( code == 2)//タイマー2
     {
        myDC.CreateCompatibleDC(pDC);
        
        myBMP[1].LoadBitmap(num + 1);
        old=myDC.SelectObject(&myBMP[1]);

        pDC->BitBlt(200,100,61,61,&myDC,0,j*10,SRCCOPY);
        j=j+1;

        if(j==18) j=-5;
     }
     else //タイマー3
     {
        myDC.CreateCompatibleDC(pDC);
        
        myBMP[2].LoadBitmap(num + 2);
        old=myDC.SelectObject(&myBMP[2]);

        pDC->BitBlt(300,100,61,61,&myDC,0,k*10,SRCCOPY);
        k=k+1;

        if(k==18) k=-5;
     }

     myDC.SelectObject(old);
     ReleaseDC(pDC);

}
-----------------------------------------------------------------

 230ページ 「OnTimer関数」
-----------------------------------------------------------------
void CSinkei1View::OnTimer(UINT nIDEvent) 
{
    // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
        
        CString tmss;

        int i ;

        if( nIDEvent == 2 )//本では抜けています
        {                  //本では抜けています
           tm=tm+1;
           tmss.Format("%d",tm);
           m_ed1.SetWindowText(" " + tmss +  " 秒経過");
        }                  //本では抜けています

        for(i = 0 ; i < 9 ; i++)
        {    
          lab1[i]=(CStatic*)GetDlgItem(IDC_STATIC1+i);
        }

        hico2=AfxGetApp()->LoadIcon(IDI_ICON1);//背景の絵

/*        for(i=0 ; i < 9 ; i++)//必要のあるとき
        {
            hico1[i]=AfxGetApp()->LoadIcon(IDI_ICON1 + i);
        }
*/
        for(i = 0; i < 9 ; i++)
        {
            lab1[i]->SetIcon(hico2); //背景を表示する
        }

        
        hico3=AfxGetApp()->LoadIcon(IDI_ICON2);//manの絵

        mg_ransu = (int)((double)rand()/32767.0 * 9.0 );//乱数の発生

        lab1[mg_ransu]->SetIcon(hico3);//manの絵を表示する

    CFormView::OnTimer(nIDEvent);
}
-----------------------------------------------------------------

 241ページ 「OnInitialUpdate関数」
-----------------------------------------------------------------
void CSinkei1View::OnInitialUpdate()
{
    CFormView::OnInitialUpdate();
    GetParentFrame()->RecalcLayout();
    ResizeParentToFit();

    int i,j,k;
    CString ss;

    for(i=0; i < 36 ; i++)
    {
        lab1[i]=new CStatic();
    }

    k=0;

    for(i=0; i < 6 ; i++)
    {
        for(j=0 ; j < 6 ; j++)
        {
            lab1[k]->Create(ss,SS_ICON|SS_NOTIFY|WS_VISIBLE|SS_CENTER,CRect(32*j*2+80,32*i*2+80,32*(j+1)*2+80,32*(i+1)*2+80),this,IDC_STATIC1 + k );
            k=k+1; //SS_ICONをとるとテキストモードになる(本では抜けています)
        }
        //k=k+1; ←本ではここに「k=k+1」がありますが、上に移動します
    }

}
-----------------------------------------------------------------

(株)工学社 第一I/O編集部


 なお、本書の内容に関するご質問/お問い合わせは、次の方法で第一I/O編集部宛にお願いします。

  1. 返信用の切手を同封した手紙
  2. 往復はがき
  3. FAX 03-5269-6031
  4. E-mail 問い合わせフォーム

※ご質問/お問い合わせの際、お客様の使用・動作環境などに添えて、具体的な症状をできるだけ詳しくお知らせください。
※FAXでのご質問/お問い合わせの場合は、必ずお客様のFAX番号を明記してください。