背景画像を DOT 単位にスクロール



Map Chip を組み合わせて作成した背景画像を DOT 単位にスクロールします。

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

プログラムの説明

  1. Map Chip を DOT 単位にスクロールするには Sprite を単位として表示していたのではどうにもなりません。
    そこで Chip を DOT 単位で細かく描画できるメソッド(メンバ関数)を Sprite Class に追加します。
    関数名は同じで、パラメータの個数が違うメソッドを新たに追加します。
    HRESULT Show(long n,long x,long y,long w,long h,long xoff,long yoff);
  2. 追加する Show() パラメータの説明です。
    パラメータ説明
    long n Sprite の番号
    long x Window の描画座標X
    long y Window の描画座標Y
    long w 描画の幅(dot 単位)
    long h 描画の高さ(dot 単位)
    long xoff Sprite の基点からの X Offset
    long yoff Sprite の基点からの Y Offset
  3. BG の描画とスクロールに関係する領域の説明です。
    XN,YN は背景画像の大きさで、横と縦に並べる Chip の枚数で指定します。(16倍するとピクセルサイズ)
    XDN,YDN は表示する画面サイズで、横と縦に並べる Chip の枚数で指定します。
    RPG では画面サイスの何倍もの背景画像を使用することが当たり前になっています。
    int *MAP は BG を構成する Chip の並び情報を格納する領域へのポインタで、動的に領域を割り当てます。
        class BG : public CARD, public TXT2BIN
        { protected:
            int         XN;             //BG Size 横(XN*16)
            int         YN;             //BG Size 縦(YN*16)
            int         XDN;            //Window 横(XDN*16)
            int         YDN;            //Window 縦(YDN*16)
    
          public:
            int         *MAP;           //BG Map Table
        
  4. BG Class で定義した DOT 単位にスクロールする View() 関数の宣言です。
    xpos, ypos は DOT 単位のオフセットです。
        HRESULT  BG::View(long xpos, long ypos)
        
  5. 最初に横方向に dot 単位でスクロールすることを考えてみましょう。
  6. 縦方向の dot 単位のスクロールも基本的には横方向と同じです。
  7. DOT 単位にスクロールするプログラムを作成して下さい。

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