質問編集履歴

3

編集

2019/08/04 11:21

投稿

METALBOLL616
METALBOLL616

スコア7

test CHANGED
File without changes
test CHANGED
@@ -423,3 +423,395 @@
423
423
 
424
424
 
425
425
  ```
426
+
427
+
428
+
429
+ 編集、キャラの描画の前に組み込んでみたのですが、背景が前に出てしまいうまくいきません。
430
+
431
+ ```ここに言語を入力
432
+
433
+ #include "DxLib.h"
434
+
435
+
436
+
437
+
438
+
439
+ // プログラムは WinMain から始まります
440
+
441
+ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
442
+
443
+ {
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+ ChangeWindowMode(true); // ウィンドウモードにする
454
+
455
+ SetGraphMode(1000, 1480, 32); // ウィンドウの大きさを指定
456
+
457
+
458
+
459
+ if (DxLib_Init() == -1) // DXライブラリ初期化処理
460
+
461
+ {
462
+
463
+
464
+
465
+
466
+
467
+ ChangeWindowMode(TRUE);
468
+
469
+
470
+
471
+ return -1; // エラーが起きたら直ちに終了
472
+
473
+ }
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+ int imgBack = LoadGraph("back.bmp");
482
+
483
+
484
+
485
+ while (!ProcessMessage()) {
486
+
487
+ // 画面をクリア
488
+
489
+ ClearDrawScreen();
490
+
491
+
492
+
493
+ // 背景の画像を描画
494
+
495
+ DrawGraph(0, 0, imgBack, false);
496
+
497
+
498
+
499
+
500
+
501
+ // 画面に出力
502
+
503
+ ScreenFlip();
504
+
505
+ }
506
+
507
+
508
+
509
+ //キー取得用配列
510
+
511
+ char key[256];
512
+
513
+
514
+
515
+ //x座標
516
+
517
+ int x = 300, y = 240;
518
+
519
+
520
+
521
+
522
+
523
+ //グラフィックハンドル格納用配列
524
+
525
+ int gh[12];
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+ //画像読み込み
534
+
535
+ LoadDivGraph("charall.png", 12, 3, 4, 49, 66, gh);
536
+
537
+ // 背景の画像を読み込む
538
+
539
+
540
+
541
+ //LoadGraphScreen(0, 0, "charall.png", TRUE);
542
+
543
+
544
+
545
+
546
+
547
+
548
+
549
+ WaitKey(); // 結果を見るためにキー待ち(『WaitKey』を使用)
550
+
551
+
552
+
553
+ //移動係数
554
+
555
+ float move = 1.0f;
556
+
557
+
558
+
559
+ //横方向と縦方向のカウント数。
560
+
561
+ int xcount = 0, ycount = 0;
562
+
563
+ //添字用変数
564
+
565
+ int ix = 0, iy = 0, result = 0;
566
+
567
+
568
+
569
+ while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && GetHitKeyStateAll(key) == 0) {
570
+
571
+
572
+
573
+ if (key[KEY_INPUT_LEFT] == 1 || key[KEY_INPUT_RIGHT] == 1) {
574
+
575
+
576
+
577
+ if (key[KEY_INPUT_UP] == 1 || key[KEY_INPUT_DOWN] == 1) {
578
+
579
+ //移動係数を0.71に設定
580
+
581
+ move = 0.71f;
582
+
583
+ }
584
+
585
+ else {
586
+
587
+ //斜めじゃなければ1.0に設定
588
+
589
+ move = 1.0f;
590
+
591
+ }
592
+
593
+ }
594
+
595
+ else if (key[KEY_INPUT_UP] == 1 || key[KEY_INPUT_DOWN] == 1) {
596
+
597
+ move = 1.0f;
598
+
599
+ }
600
+
601
+
602
+
603
+
604
+
605
+ if (key[KEY_INPUT_LEFT] == 1) {
606
+
607
+ x -= (int)4 * move;
608
+
609
+ }
610
+
611
+ if (key[KEY_INPUT_RIGHT] == 1) {
612
+
613
+ x += (int)4 * move;
614
+
615
+
616
+
617
+ }
618
+
619
+ if (key[KEY_INPUT_UP] == 1) {
620
+
621
+ y -= (int)4 * move;
622
+
623
+
624
+
625
+ }
626
+
627
+ if (key[KEY_INPUT_DOWN] == 1) {
628
+
629
+ y += (int)4 * move;
630
+
631
+
632
+
633
+ }
634
+
635
+
636
+
637
+ //左キーが押されてて、かつxcountが0以上なら0にしてから1引く。
638
+
639
+ //それ以外は1引く
640
+
641
+ if (key[KEY_INPUT_LEFT] == 1) {
642
+
643
+ if (xcount > 0)
644
+
645
+ xcount = 0;
646
+
647
+ --xcount;
648
+
649
+
650
+
651
+ }
652
+
653
+ //右キーが押されてて、かつxcountが0以下なら0にしてから1足す。
654
+
655
+ //それ以外は1引く
656
+
657
+ if (key[KEY_INPUT_RIGHT] == 1) {
658
+
659
+ if (xcount < 0)
660
+
661
+ xcount = 0;
662
+
663
+ ++xcount;
664
+
665
+ }
666
+
667
+ //上キーが押されてて、かつycountが0以上なら0にしてから1引く。
668
+
669
+ //それ以外は1引く
670
+
671
+ if (key[KEY_INPUT_UP] == 1) {
672
+
673
+ if (ycount > 0)
674
+
675
+ ycount = 0;
676
+
677
+ --ycount;
678
+
679
+ }
680
+
681
+ //下キーが押されてて、かつycountが0以下なら0にしてから1足す。
682
+
683
+ //それ以外は1足す
684
+
685
+ if (key[KEY_INPUT_DOWN] == 1) {
686
+
687
+ if (ycount < 0)
688
+
689
+ ycount = 0;
690
+
691
+ ++ycount;
692
+
693
+ }
694
+
695
+
696
+
697
+
698
+
699
+ //カウント数から添字を求める。
700
+
701
+ ix = abs(xcount) % 30 / 10;
702
+
703
+ iy = abs(ycount) % 30 / 10;
704
+
705
+
706
+
707
+ //xカウントがプラスなら右向きなので2行目の先頭添字番号を足す。
708
+
709
+ if (xcount > 0) {
710
+
711
+ ix += 3;
712
+
713
+ result = ix;
714
+
715
+ }
716
+
717
+ else if (xcount < 0) {
718
+
719
+ //マイナスなら左向きなので、4行目の先頭添字番号を足す。
720
+
721
+ ix += 9;
722
+
723
+ result = ix;
724
+
725
+ }
726
+
727
+
728
+
729
+ //yカウントがプラスなら下向きなので、3行目の先頭添字番号を足す。
730
+
731
+ if (ycount > 0) {
732
+
733
+ iy += 6;
734
+
735
+ result = iy;
736
+
737
+ }
738
+
739
+ else if (ycount < 0) {
740
+
741
+ //1行目の先頭添字番号は0なので何もする必要なし。(分かりやすくするために書いときました)
742
+
743
+ iy += 0;
744
+
745
+ result = iy;
746
+
747
+ }
748
+
749
+
750
+
751
+ //斜め移動の場合は横顔を優先
752
+
753
+ if (move == 0.71f)
754
+
755
+ result = ix;
756
+
757
+
758
+
759
+
760
+
761
+ //描画
762
+
763
+ DrawGraph(x, y, gh[result], TRUE);
764
+
765
+
766
+
767
+
768
+
769
+ //押されてなければカウントをゼロにする。
770
+
771
+ if (key[KEY_INPUT_LEFT] != 1 && key[KEY_INPUT_RIGHT] != 1) {
772
+
773
+ xcount = 0;
774
+
775
+ }
776
+
777
+ if (key[KEY_INPUT_UP] != 1 && key[KEY_INPUT_DOWN] != 1) {
778
+
779
+ ycount = 0;
780
+
781
+ }
782
+
783
+
784
+
785
+
786
+
787
+ if (key[KEY_INPUT_ESCAPE] == 1) {
788
+
789
+
790
+
791
+ break;
792
+
793
+ }
794
+
795
+
796
+
797
+ }
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+ DxLib_End(); // DXライブラリ使用の終了処理
806
+
807
+
808
+
809
+ return 0; // ソフトの終了
810
+
811
+
812
+
813
+
814
+
815
+ }
816
+
817
+ ```

2

編集

2019/08/04 11:21

投稿

METALBOLL616
METALBOLL616

スコア7

test CHANGED
File without changes
test CHANGED
@@ -376,4 +376,50 @@
376
376
 
377
377
 
378
378
 
379
+
380
+
379
381
  ```
382
+
383
+
384
+
385
+ 以下のように直したところ画像は表示されるのですが、キャラが登場せず、移動キーを押すとキャラが動いて現れると同時に画像が消えてしまいます。これはループ関数などを使えば解決できるのでしょうか?
386
+
387
+
388
+
389
+ ```
390
+
391
+ //キー取得用配列
392
+
393
+ char key[256];
394
+
395
+
396
+
397
+ //x座標
398
+
399
+ int x = 300, y = 240;
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+ //グラフィックハンドル格納用配列
408
+
409
+ int gh[12];
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+ //画像読み込み
418
+
419
+ LoadDivGraph("charall.png", 12, 3, 4, 49, 66, gh);
420
+
421
+ LoadGraphScreen(0, 0, "back.bmp", FALSE);
422
+
423
+
424
+
425
+ ```

1

編集

2019/08/04 04:30

投稿

METALBOLL616
METALBOLL616

スコア7

test CHANGED
@@ -1 +1 @@
1
- バックに画像を入れたいです
1
+ バックに画像を入れたいです
test CHANGED
@@ -30,6 +30,8 @@
30
30
 
31
31
  です。どちらかのプログラムを入れたいのですが、大丈夫であろう部分に組み込んでも影響してくれません。
32
32
 
33
+ できればなぜそのように組み込めるのかの理由を添えて以上の二つを組み込む方法を教えてほしいです。
34
+
33
35
  二つ目はOPENCVのプログラムなのですが、もし**http://taishoh-lab.net/?p=337**のプログラムを**https://bituse.info/game/21**に組み込むとしたらどのようにすればいいでしょうか?
34
36
 
35
37