質問編集履歴
6
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -256,6 +256,10 @@
|
|
256
256
|
|
257
257
|
得た回答でこちらのプログラムを回答にさせていただきました。
|
258
258
|
|
259
|
+
以下のコードを使い**行いたいことを実行しました**。
|
260
|
+
|
261
|
+
```
|
262
|
+
|
259
263
|
#include "DxLib.h"
|
260
264
|
|
261
265
|
|
@@ -501,3 +505,5 @@
|
|
501
505
|
return 0; // ソフトの終了
|
502
506
|
|
503
507
|
}
|
508
|
+
|
509
|
+
```
|
5
test
CHANGED
File without changes
|
test
CHANGED
@@ -249,3 +249,255 @@
|
|
249
249
|
いろんな考えが見たかった故にマルチポストしました。
|
250
250
|
|
251
251
|
どうもすいませんでした、。
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
マルチポストをして、
|
256
|
+
|
257
|
+
得た回答でこちらのプログラムを回答にさせていただきました。
|
258
|
+
|
259
|
+
#include "DxLib.h"
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
int Key[256];
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
int gpUpdateKey()
|
268
|
+
|
269
|
+
{
|
270
|
+
|
271
|
+
char tmpKey[256];
|
272
|
+
|
273
|
+
GetHitKeyStateAll(tmpKey);
|
274
|
+
|
275
|
+
for (int i = 0; i < 256; i++)
|
276
|
+
|
277
|
+
(tmpKey[i] == 0) ? (Key[i] = 0) : Key[i]++;
|
278
|
+
|
279
|
+
return 0;
|
280
|
+
|
281
|
+
}
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
int idou[5][5] = {
|
286
|
+
|
287
|
+
{ 1, 1, 1, 1, 1 },
|
288
|
+
|
289
|
+
{ 1, 0, 0, 0, 1 },
|
290
|
+
|
291
|
+
{ 1, 0, 0, 0, 1 },
|
292
|
+
|
293
|
+
{ 1, 0, 0, 0, 1 },
|
294
|
+
|
295
|
+
{ 1, 1, 1, 1, 1 },
|
296
|
+
|
297
|
+
};
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
int box[4][7][2], player[5][5][2];
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
void init_box()
|
306
|
+
|
307
|
+
{
|
308
|
+
|
309
|
+
for (int j = 0; j < 7; j++) {
|
310
|
+
|
311
|
+
int w = (j - 3) * 100, h = 600;
|
312
|
+
|
313
|
+
for (int i = 4; --i >= 0; ) {
|
314
|
+
|
315
|
+
box[i][j][0] = w + 400, box[i][j][1] = h - 200;
|
316
|
+
|
317
|
+
w = w * 9 / 10, h = h * 9 / 10;
|
318
|
+
|
319
|
+
}
|
320
|
+
|
321
|
+
}
|
322
|
+
|
323
|
+
for (int i = 1; i <= 3; i++)
|
324
|
+
|
325
|
+
for (int j = 1; j <= 3; j++) {
|
326
|
+
|
327
|
+
player[i][j][0] = (box[i-1][j-1][0] + box[i][j][0])/2 - 25;
|
328
|
+
|
329
|
+
player[i][j][1] = (box[i-1][j-1][1] + box[i][j][1])/2 - 66;
|
330
|
+
|
331
|
+
}
|
332
|
+
|
333
|
+
}
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
int WINAPI WinMain(HINSTANCE hi, HINSTANCE hp, LPSTR cl, int cs)
|
338
|
+
|
339
|
+
{
|
340
|
+
|
341
|
+
SetGraphMode(1200, 680, 32); // ウィンドウの大きさを指定
|
342
|
+
|
343
|
+
ChangeWindowMode(TRUE); // 全画面ではなくウインドウを使用
|
344
|
+
|
345
|
+
if (DxLib_Init() == -1) return -1; // DXライブラリ初期化処理
|
346
|
+
|
347
|
+
SetDrawScreen(DX_SCREEN_BACK); // 裏画面を使用する設定
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
init_box();
|
352
|
+
|
353
|
+
int boxColor = GetColor(160, 64, 64);
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
int nx = 2, ny = 2; // プレイヤーの初期位置
|
358
|
+
|
359
|
+
int px = player[ny][nx][0], py = player[ny][nx][1]; // 表示位置
|
360
|
+
|
361
|
+
int keep = 0; // 移動不可能状態継続カウンタ
|
362
|
+
|
363
|
+
|
364
|
+
|
365
|
+
int gh[12]; //グラフィックハンドル格納用配列
|
366
|
+
|
367
|
+
// 5:正面、7:右向き、2:左向き、4:上向き、3:下向き、9:移動不可
|
368
|
+
|
369
|
+
LoadDivGraph("charall.png", 12, 3, 4, 49, 66, gh); //画像読み込み
|
370
|
+
|
371
|
+
int playerphoto = gh[5];
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
while (ProcessMessage() == 0) {
|
376
|
+
|
377
|
+
gpUpdateKey(); // キーの入力状態を取得
|
378
|
+
|
379
|
+
if (Key[KEY_INPUT_RIGHT] == 1) { // 右キーが押されている
|
380
|
+
|
381
|
+
if (idou[nx + 1][ny] == 0) { // 移動先が空いていれば
|
382
|
+
|
383
|
+
nx++; playerphoto = gh[7]; // 右向き
|
384
|
+
|
385
|
+
}
|
386
|
+
|
387
|
+
else {
|
388
|
+
|
389
|
+
keep = 1; playerphoto = gh[9]; // 移動不可能
|
390
|
+
|
391
|
+
}
|
392
|
+
|
393
|
+
}
|
394
|
+
|
395
|
+
if (Key[KEY_INPUT_LEFT] == 1) {
|
396
|
+
|
397
|
+
if (idou[nx - 1][ny] == 0) { // 移動先が空いていれば
|
398
|
+
|
399
|
+
nx--; playerphoto = gh[2]; // 左向き
|
400
|
+
|
401
|
+
}
|
402
|
+
|
403
|
+
else {
|
404
|
+
|
405
|
+
keep = 1; playerphoto = gh[9]; // 移動不可能
|
406
|
+
|
407
|
+
}
|
408
|
+
|
409
|
+
}
|
410
|
+
|
411
|
+
if (Key[KEY_INPUT_UP] == 1) {
|
412
|
+
|
413
|
+
if (idou[nx][ny - 1] == 0) { // 移動先が空いていれば
|
414
|
+
|
415
|
+
ny--; playerphoto = gh[4]; // 上向き
|
416
|
+
|
417
|
+
}
|
418
|
+
|
419
|
+
else {
|
420
|
+
|
421
|
+
keep = 1; playerphoto = gh[9]; // 移動不可能
|
422
|
+
|
423
|
+
}
|
424
|
+
|
425
|
+
}
|
426
|
+
|
427
|
+
if (Key[KEY_INPUT_DOWN] == 1) {
|
428
|
+
|
429
|
+
if (idou[nx][ny + 1] == 0) { // 移動先が空いていれば
|
430
|
+
|
431
|
+
ny++; playerphoto = gh[3]; // 下向き
|
432
|
+
|
433
|
+
}
|
434
|
+
|
435
|
+
else {
|
436
|
+
|
437
|
+
keep = 1; playerphoto = gh[9]; // 移動不可能
|
438
|
+
|
439
|
+
}
|
440
|
+
|
441
|
+
}
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
ClearDrawScreen(); // 裏画面をクリア
|
446
|
+
|
447
|
+
|
448
|
+
|
449
|
+
for (int i = 0; i < 4; i++)
|
450
|
+
|
451
|
+
DrawLine(box[i][0][0], box[i][0][1],
|
452
|
+
|
453
|
+
box[i][6][0], box[i][6][1], boxColor);
|
454
|
+
|
455
|
+
for (int j = 0; j < 7; j++)
|
456
|
+
|
457
|
+
DrawLine(box[0][j][0], box[0][j][1],
|
458
|
+
|
459
|
+
box[3][j][0], box[3][j][1], boxColor);
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
int x = player[ny][nx][0], y = player[ny][nx][1]; // 表示位置に変換
|
464
|
+
|
465
|
+
if (x == px && y == py) {
|
466
|
+
|
467
|
+
if (keep == 0 || ++keep == 10) {
|
468
|
+
|
469
|
+
keep = 0; playerphoto = gh[5];
|
470
|
+
|
471
|
+
}
|
472
|
+
|
473
|
+
}
|
474
|
+
|
475
|
+
else {
|
476
|
+
|
477
|
+
if (abs(x - px) < 8) px = x;
|
478
|
+
|
479
|
+
else if (x > px) px += 8;
|
480
|
+
|
481
|
+
else if (x < px) px -= 8;
|
482
|
+
|
483
|
+
if (abs(y - py) < 6) py = y;
|
484
|
+
|
485
|
+
else if (y > py) py += 6;
|
486
|
+
|
487
|
+
else if (y < py) py -= 6;
|
488
|
+
|
489
|
+
}
|
490
|
+
|
491
|
+
DrawGraph(px, py, playerphoto, FALSE); // プレイヤーを裏画面に描画
|
492
|
+
|
493
|
+
ScreenFlip(); // 裏画面を表画面に反映
|
494
|
+
|
495
|
+
}
|
496
|
+
|
497
|
+
|
498
|
+
|
499
|
+
DxLib_End(); // DXライブラリ使用の終了処理
|
500
|
+
|
501
|
+
return 0; // ソフトの終了
|
502
|
+
|
503
|
+
}
|
4
test
CHANGED
File without changes
|
test
CHANGED
@@ -243,3 +243,9 @@
|
|
243
243
|
マルチポストをしていた質問です。
|
244
244
|
|
245
245
|
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
いろんな考えが見たかった故にマルチポストしました。
|
250
|
+
|
251
|
+
どうもすいませんでした、。
|
3
変数
test
CHANGED
File without changes
|
test
CHANGED
@@ -237,3 +237,9 @@
|
|
237
237
|
}
|
238
238
|
|
239
239
|
```
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
マルチポストをしていた質問です。
|
244
|
+
|
245
|
+
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
2
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -237,13 +237,3 @@
|
|
237
237
|
}
|
238
238
|
|
239
239
|
```
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
編集
|
244
|
-
|
245
|
-
こちらの方とマルチポストをしています。
|
246
|
-
|
247
|
-
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
248
|
-
|
249
|
-
お伝えするのが遅れてすいませんでした。
|
1
変数
test
CHANGED
File without changes
|
test
CHANGED
@@ -237,3 +237,13 @@
|
|
237
237
|
}
|
238
238
|
|
239
239
|
```
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
編集
|
244
|
+
|
245
|
+
こちらの方とマルチポストをしています。
|
246
|
+
|
247
|
+
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
248
|
+
|
249
|
+
お伝えするのが遅れてすいませんでした。
|