質問するログイン新規登録

質問編集履歴

6

編集

2019/08/24 07:19

投稿

carnage0216
carnage0216

スコア194

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

2019/08/24 07:19

投稿

carnage0216
carnage0216

スコア194

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

2019/08/24 05:59

投稿

carnage0216
carnage0216

スコア194

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

変数

2019/08/24 05:44

投稿

carnage0216
carnage0216

スコア194

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

編集

2019/08/24 05:05

投稿

carnage0216
carnage0216

スコア194

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

変数

2019/08/23 11:09

投稿

carnage0216
carnage0216

スコア194

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
+ お伝えするのが遅れてすいませんでした。