質問編集履歴
6
編集
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -127,6 +127,8 @@ 
     | 
|
| 
       127 
127 
     | 
    
         | 
| 
       128 
128 
     | 
    
         
             
            マルチポストをして、
         
     | 
| 
       129 
129 
     | 
    
         
             
            得た回答でこちらのプログラムを回答にさせていただきました。
         
     | 
| 
      
 130 
     | 
    
         
            +
            以下のコードを使い**行いたいことを実行しました**。
         
     | 
| 
      
 131 
     | 
    
         
            +
            ```
         
     | 
| 
       130 
132 
     | 
    
         
             
            #include "DxLib.h"
         
     | 
| 
       131 
133 
     | 
    
         | 
| 
       132 
134 
     | 
    
         
             
            int Key[256];
         
     | 
| 
         @@ -249,4 +251,5 @@ 
     | 
|
| 
       249 
251 
     | 
    
         | 
| 
       250 
252 
     | 
    
         
             
                DxLib_End();  // DXライブラリ使用の終了処理
         
     | 
| 
       251 
253 
     | 
    
         
             
                return 0;  // ソフトの終了 
         
     | 
| 
       252 
     | 
    
         
            -
            }
         
     | 
| 
      
 254 
     | 
    
         
            +
            }
         
     | 
| 
      
 255 
     | 
    
         
            +
            ```
         
     | 
5
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -123,4 +123,130 @@ 
     | 
|
| 
       123 
123 
     | 
    
         
             
            https://dixq.net/forum/viewtopic.php?p=154122#p154122
         
     | 
| 
       124 
124 
     | 
    
         | 
| 
       125 
125 
     | 
    
         
             
            いろんな考えが見たかった故にマルチポストしました。
         
     | 
| 
       126 
     | 
    
         
            -
            どうもすいませんでした、。
         
     | 
| 
      
 126 
     | 
    
         
            +
            どうもすいませんでした、。
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
            マルチポストをして、
         
     | 
| 
      
 129 
     | 
    
         
            +
            得た回答でこちらのプログラムを回答にさせていただきました。
         
     | 
| 
      
 130 
     | 
    
         
            +
            #include "DxLib.h"
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
            int Key[256];
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
            int gpUpdateKey()
         
     | 
| 
      
 135 
     | 
    
         
            +
            {
         
     | 
| 
      
 136 
     | 
    
         
            +
                char tmpKey[256];
         
     | 
| 
      
 137 
     | 
    
         
            +
                GetHitKeyStateAll(tmpKey);
         
     | 
| 
      
 138 
     | 
    
         
            +
                for (int i = 0; i < 256; i++)
         
     | 
| 
      
 139 
     | 
    
         
            +
                    (tmpKey[i] == 0) ? (Key[i] = 0) : Key[i]++;
         
     | 
| 
      
 140 
     | 
    
         
            +
                return 0;
         
     | 
| 
      
 141 
     | 
    
         
            +
            }
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
            int idou[5][5] = {
         
     | 
| 
      
 144 
     | 
    
         
            +
                { 1, 1, 1, 1, 1 },
         
     | 
| 
      
 145 
     | 
    
         
            +
                { 1, 0, 0, 0, 1 },
         
     | 
| 
      
 146 
     | 
    
         
            +
                { 1, 0, 0, 0, 1 },
         
     | 
| 
      
 147 
     | 
    
         
            +
                { 1, 0, 0, 0, 1 },
         
     | 
| 
      
 148 
     | 
    
         
            +
                { 1, 1, 1, 1, 1 },
         
     | 
| 
      
 149 
     | 
    
         
            +
            };
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
            int box[4][7][2], player[5][5][2];
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
            void init_box()
         
     | 
| 
      
 154 
     | 
    
         
            +
            {
         
     | 
| 
      
 155 
     | 
    
         
            +
                for (int j = 0; j < 7; j++) {
         
     | 
| 
      
 156 
     | 
    
         
            +
                    int w = (j - 3) * 100, h = 600;
         
     | 
| 
      
 157 
     | 
    
         
            +
                    for (int i = 4; --i >= 0; ) {
         
     | 
| 
      
 158 
     | 
    
         
            +
                        box[i][j][0] = w + 400, box[i][j][1] = h - 200;
         
     | 
| 
      
 159 
     | 
    
         
            +
                        w = w * 9 / 10, h = h * 9 / 10;
         
     | 
| 
      
 160 
     | 
    
         
            +
                    }
         
     | 
| 
      
 161 
     | 
    
         
            +
                }
         
     | 
| 
      
 162 
     | 
    
         
            +
                for (int i = 1; i <= 3; i++)
         
     | 
| 
      
 163 
     | 
    
         
            +
                    for (int j = 1; j <= 3; j++) {
         
     | 
| 
      
 164 
     | 
    
         
            +
                        player[i][j][0] = (box[i-1][j-1][0] + box[i][j][0])/2 - 25;
         
     | 
| 
      
 165 
     | 
    
         
            +
                        player[i][j][1] = (box[i-1][j-1][1] + box[i][j][1])/2 - 66;
         
     | 
| 
      
 166 
     | 
    
         
            +
                    }
         
     | 
| 
      
 167 
     | 
    
         
            +
            }
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
            int WINAPI WinMain(HINSTANCE hi, HINSTANCE hp, LPSTR cl, int cs)
         
     | 
| 
      
 170 
     | 
    
         
            +
            {
         
     | 
| 
      
 171 
     | 
    
         
            +
                SetGraphMode(1200, 680, 32);        // ウィンドウの大きさを指定
         
     | 
| 
      
 172 
     | 
    
         
            +
                ChangeWindowMode(TRUE);             // 全画面ではなくウインドウを使用
         
     | 
| 
      
 173 
     | 
    
         
            +
                if (DxLib_Init() == -1) return -1;  // DXライブラリ初期化処理
         
     | 
| 
      
 174 
     | 
    
         
            +
                SetDrawScreen(DX_SCREEN_BACK);      // 裏画面を使用する設定
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
                init_box();
         
     | 
| 
      
 177 
     | 
    
         
            +
                int boxColor = GetColor(160, 64, 64);
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                int nx = 2, ny = 2;  // プレイヤーの初期位置
         
     | 
| 
      
 180 
     | 
    
         
            +
                int px = player[ny][nx][0], py = player[ny][nx][1];  // 表示位置
         
     | 
| 
      
 181 
     | 
    
         
            +
                int keep = 0;  // 移動不可能状態継続カウンタ
         
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
                int gh[12];  //グラフィックハンドル格納用配列
         
     | 
| 
      
 184 
     | 
    
         
            +
                        // 5:正面、7:右向き、2:左向き、4:上向き、3:下向き、9:移動不可
         
     | 
| 
      
 185 
     | 
    
         
            +
                LoadDivGraph("charall.png", 12, 3, 4, 49, 66, gh);  //画像読み込み
         
     | 
| 
      
 186 
     | 
    
         
            +
                int playerphoto = gh[5];
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
                while (ProcessMessage() == 0) {
         
     | 
| 
      
 189 
     | 
    
         
            +
                    gpUpdateKey();  // キーの入力状態を取得
         
     | 
| 
      
 190 
     | 
    
         
            +
                    if (Key[KEY_INPUT_RIGHT] == 1) {  // 右キーが押されている
         
     | 
| 
      
 191 
     | 
    
         
            +
                        if (idou[nx + 1][ny] == 0) {  // 移動先が空いていれば
         
     | 
| 
      
 192 
     | 
    
         
            +
                            nx++; playerphoto = gh[7];  // 右向き
         
     | 
| 
      
 193 
     | 
    
         
            +
                        }
         
     | 
| 
      
 194 
     | 
    
         
            +
                        else {
         
     | 
| 
      
 195 
     | 
    
         
            +
                            keep = 1; playerphoto = gh[9];  // 移動不可能
         
     | 
| 
      
 196 
     | 
    
         
            +
                        }
         
     | 
| 
      
 197 
     | 
    
         
            +
                    }
         
     | 
| 
      
 198 
     | 
    
         
            +
                    if (Key[KEY_INPUT_LEFT] == 1) {
         
     | 
| 
      
 199 
     | 
    
         
            +
                        if (idou[nx - 1][ny] == 0) {  // 移動先が空いていれば
         
     | 
| 
      
 200 
     | 
    
         
            +
                            nx--; playerphoto = gh[2];  // 左向き
         
     | 
| 
      
 201 
     | 
    
         
            +
                        }
         
     | 
| 
      
 202 
     | 
    
         
            +
                        else {
         
     | 
| 
      
 203 
     | 
    
         
            +
                            keep = 1; playerphoto = gh[9];  // 移動不可能
         
     | 
| 
      
 204 
     | 
    
         
            +
                        }
         
     | 
| 
      
 205 
     | 
    
         
            +
                    }
         
     | 
| 
      
 206 
     | 
    
         
            +
                    if (Key[KEY_INPUT_UP] == 1) {
         
     | 
| 
      
 207 
     | 
    
         
            +
                        if (idou[nx][ny - 1] == 0) {  // 移動先が空いていれば
         
     | 
| 
      
 208 
     | 
    
         
            +
                            ny--; playerphoto = gh[4];  // 上向き
         
     | 
| 
      
 209 
     | 
    
         
            +
                        }
         
     | 
| 
      
 210 
     | 
    
         
            +
                        else {
         
     | 
| 
      
 211 
     | 
    
         
            +
                            keep = 1; playerphoto = gh[9];  // 移動不可能
         
     | 
| 
      
 212 
     | 
    
         
            +
                        }
         
     | 
| 
      
 213 
     | 
    
         
            +
                    }
         
     | 
| 
      
 214 
     | 
    
         
            +
                    if (Key[KEY_INPUT_DOWN] == 1) {
         
     | 
| 
      
 215 
     | 
    
         
            +
                        if (idou[nx][ny + 1] == 0) {  // 移動先が空いていれば
         
     | 
| 
      
 216 
     | 
    
         
            +
                            ny++; playerphoto = gh[3];  // 下向き
         
     | 
| 
      
 217 
     | 
    
         
            +
                        }
         
     | 
| 
      
 218 
     | 
    
         
            +
                        else {
         
     | 
| 
      
 219 
     | 
    
         
            +
                            keep = 1; playerphoto = gh[9];  // 移動不可能
         
     | 
| 
      
 220 
     | 
    
         
            +
                        }
         
     | 
| 
      
 221 
     | 
    
         
            +
                    }
         
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
      
 223 
     | 
    
         
            +
                    ClearDrawScreen();  // 裏画面をクリア
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
                    for (int i = 0; i < 4; i++)
         
     | 
| 
      
 226 
     | 
    
         
            +
                        DrawLine(box[i][0][0], box[i][0][1],
         
     | 
| 
      
 227 
     | 
    
         
            +
                                 box[i][6][0], box[i][6][1], boxColor);
         
     | 
| 
      
 228 
     | 
    
         
            +
                    for (int j = 0; j < 7; j++)
         
     | 
| 
      
 229 
     | 
    
         
            +
                        DrawLine(box[0][j][0], box[0][j][1],
         
     | 
| 
      
 230 
     | 
    
         
            +
                                 box[3][j][0], box[3][j][1], boxColor);
         
     | 
| 
      
 231 
     | 
    
         
            +
             
     | 
| 
      
 232 
     | 
    
         
            +
                    int x = player[ny][nx][0], y = player[ny][nx][1];  // 表示位置に変換
         
     | 
| 
      
 233 
     | 
    
         
            +
                    if (x == px && y == py) {
         
     | 
| 
      
 234 
     | 
    
         
            +
                        if (keep == 0 || ++keep == 10) {
         
     | 
| 
      
 235 
     | 
    
         
            +
                            keep = 0; playerphoto = gh[5];
         
     | 
| 
      
 236 
     | 
    
         
            +
                        }
         
     | 
| 
      
 237 
     | 
    
         
            +
                    }
         
     | 
| 
      
 238 
     | 
    
         
            +
                    else {
         
     | 
| 
      
 239 
     | 
    
         
            +
                        if (abs(x - px) < 8) px = x;
         
     | 
| 
      
 240 
     | 
    
         
            +
                        else if (x > px) px += 8;
         
     | 
| 
      
 241 
     | 
    
         
            +
                        else if (x < px) px -= 8;
         
     | 
| 
      
 242 
     | 
    
         
            +
                        if (abs(y - py) < 6) py = y;
         
     | 
| 
      
 243 
     | 
    
         
            +
                        else if (y > py) py += 6;
         
     | 
| 
      
 244 
     | 
    
         
            +
                        else if (y < py) py -= 6;
         
     | 
| 
      
 245 
     | 
    
         
            +
                    }
         
     | 
| 
      
 246 
     | 
    
         
            +
                    DrawGraph(px, py, playerphoto, FALSE);  // プレイヤーを裏画面に描画
         
     | 
| 
      
 247 
     | 
    
         
            +
                    ScreenFlip();  // 裏画面を表画面に反映
         
     | 
| 
      
 248 
     | 
    
         
            +
                }
         
     | 
| 
      
 249 
     | 
    
         
            +
             
     | 
| 
      
 250 
     | 
    
         
            +
                DxLib_End();  // DXライブラリ使用の終了処理
         
     | 
| 
      
 251 
     | 
    
         
            +
                return 0;  // ソフトの終了 
         
     | 
| 
      
 252 
     | 
    
         
            +
            }
         
     | 
4
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -120,4 +120,7 @@ 
     | 
|
| 
       120 
120 
     | 
    
         
             
            ```
         
     | 
| 
       121 
121 
     | 
    
         | 
| 
       122 
122 
     | 
    
         
             
            マルチポストをしていた質問です。
         
     | 
| 
       123 
     | 
    
         
            -
            https://dixq.net/forum/viewtopic.php?p=154122#p154122
         
     | 
| 
      
 123 
     | 
    
         
            +
            https://dixq.net/forum/viewtopic.php?p=154122#p154122
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            いろんな考えが見たかった故にマルチポストしました。
         
     | 
| 
      
 126 
     | 
    
         
            +
            どうもすいませんでした、。
         
     | 
3
変数
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -117,4 +117,7 @@ 
     | 
|
| 
       117 
117 
     | 
    
         
             
            	return 0;                // ソフトの終了 
         
     | 
| 
       118 
118 
     | 
    
         | 
| 
       119 
119 
     | 
    
         
             
            }
         
     | 
| 
       120 
     | 
    
         
            -
            ```
         
     | 
| 
      
 120 
     | 
    
         
            +
            ```
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
            マルチポストをしていた質問です。
         
     | 
| 
      
 123 
     | 
    
         
            +
            https://dixq.net/forum/viewtopic.php?p=154122#p154122
         
     | 
2
編集
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -117,9 +117,4 @@ 
     | 
|
| 
       117 
117 
     | 
    
         
             
            	return 0;                // ソフトの終了 
         
     | 
| 
       118 
118 
     | 
    
         | 
| 
       119 
119 
     | 
    
         
             
            }
         
     | 
| 
       120 
     | 
    
         
            -
            ```
         
     | 
| 
      
 120 
     | 
    
         
            +
            ```
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
            編集 
         
     | 
| 
       123 
     | 
    
         
            -
            こちらの方とマルチポストをしています。
         
     | 
| 
       124 
     | 
    
         
            -
            https://dixq.net/forum/viewtopic.php?p=154122#p154122
         
     | 
| 
       125 
     | 
    
         
            -
            お伝えするのが遅れてすいませんでした。
         
     | 
1
変数
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -117,4 +117,9 @@ 
     | 
|
| 
       117 
117 
     | 
    
         
             
            	return 0;                // ソフトの終了 
         
     | 
| 
       118 
118 
     | 
    
         | 
| 
       119 
119 
     | 
    
         
             
            }
         
     | 
| 
       120 
     | 
    
         
            -
            ```
         
     | 
| 
      
 120 
     | 
    
         
            +
            ```
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
            編集 
         
     | 
| 
      
 123 
     | 
    
         
            +
            こちらの方とマルチポストをしています。
         
     | 
| 
      
 124 
     | 
    
         
            +
            https://dixq.net/forum/viewtopic.php?p=154122#p154122
         
     | 
| 
      
 125 
     | 
    
         
            +
            お伝えするのが遅れてすいませんでした。
         
     |