JYAN Object Class の説明

「じゃんけんバトルゲーム」Object Class の説明です。
画像は Image List を使って描画することにします。
Image List の詳細は BMP 画像に透明色を設定して描画する を参照して下さい。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロプログラムの説明

  1. JYAN Object Class Header(Jyan.h) です。
    hImage は Image List のハンドルで、Width と Height が画像の幅と高さです。
    Num は Image List の個数で、Flag は Bit Mode と透明色の設定フラグです。
        #define  SAFE_DELETE(p)  { if (p) { delete (p);     (p)=NULL; } }
        #define  SAFE_RELEASE(p) { if (p) { (p)->Release(); (p)=NULL; } }
        #define  SAFE_DELDC(p)   { if (p) { DeleteDC (p);   (p)=NULL; } }
        #define  SAFE_DELOBJ(p)  { if (p) { DeleteObject(p); (p)=NULL; } }
    
        class JYAN
        { protected:
            HWND        hWnd;
            HIMAGELIST  hImage;
            WORD        Width;              //Image List の幅
            WORD        Height;             //Image List の高さ
            WORD        Num;                //Image List の個数
            UINT        Flag;               //Image List Flags
    
          public:
            JYAN(HWND hWnd);                //Constructor
            ~JYAN();                        //Destructor
    
            HRESULT     Create(WORD width, WORD height, WORD num, UINT flag);
            HRESULT     AddImg(LPSTR img);
            HRESULT     Show(WORD no,WORD xp,WORD yp);
            int         check(int w_play, int r_play);
            HFONT       SetMyFont(LPCTSTR face,int h,int angle);
        };
        
  2. Constructor では Object Class と乱数の初期化を行います。
  3. Create では Image List を生成して、画像を入力する準備を整えます。
    パラメータには「画像の幅,高さ,個数,フラグ」を渡します。
    App->Create(100,160,3,ILC_COLOR8 | ILC_MASK);
  4. AddImg() で Image List に画像を登録します。
  5. Show() では Image の番号と座標を指定して描画します。
  6. check() はじゃんけんの勝敗を判定する関数です。
    この関数は「じゃんけん」プログラム独特のものでコードも短いので、どうなっているか考えてみて下さい。
        int  JYAN::check(int w_play, int r_play)
        {   int     i;
            i= w_play-r_play;
            i= (i+3)%3;
            return(i);
        }
        
  7. SetMyFont() はフォントを設定する関数です。

【メモ】

乱数の初期化で不可解な現象が起こっています。
次のようにコーディングすると初期化されません。
time_t  nowtime;
time(&nowtime);
srand(nowtime);

次のようにして下さい。
time_t  nowtime;
time(&nowtime);
srand(nowtime%0Xff);

[Previous Chapter ↑] Main Program の説明

超初心者のプログラム入門(Win32API C++)