合計 昨日 今日

龍神録プログラミングの館で勉強中にバグが出てきました。

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: ポインタ
[URL]
かけだし(1,913 ポイント)
Date: 2017年1月08日(日) 17:36
No: 1
(OFFLINE)

 龍神録プログラミングの館で勉強中にバグが出てきました。

自分は最近龍神録プログラミングの館でシューティングの学習をはじめたのですが。
第31章 早苗風☆弾を作ってみようでプロジェクトを開いてプログラムを変えずにデバッグを開始をすると
背景のグラフィックが弾のグラフィックの代わりに出現します。
どのようにプログラムを変えれば正しいグラフィックになりますか?

環境は
OS : Windows 10
コンパイラ : Visual Studio 2015
です。

C言語は在学中の高校で学習しましたがわかるかどうか怪しい所があります。
よろしくお願いします。

Name: box
[URL]
ハッカー(263,317 ポイント)
Date: 2017年1月08日(日) 17:53
No: 2
(OFFLINE)

 Re: 龍神録プログラミングの館で勉強中にバグが出てきました。

ポインタ さんが書きました:どのようにプログラムを変えれば正しいグラフィックになりますか?

まずは、今のプログラムを提示することでしょう。質問者さんがどういうコードを書いたのか、
回答しようとする側には今のところ全くわかっていません。その状態で、「どのように変えれば」と
言われましても、何とも答えようがありません。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

Name: Math
[URL]
Date: 2017年1月08日(日) 18:37
No: 3
(OFFLINE)

 Re: 龍神録プログラミングの館で勉強中にバグが出てきました。

>C言語は在学中の高校で学習しましたがわかるかどうか怪しい所があります。
>第31章 早苗風☆弾を作ってみようでプロジェクトを開いてプログラムを変えずにデバッグを開始
おぬしできるな!すごい。私のVS2008では正常に動きました。DXライブラリのバージョンは新しいですか。
http://csi.nisinippon.com/31.png


Name: ポインタ
[URL]
かけだし(1,913 ポイント)
Date: 2017年1月08日(日) 19:08
No: 5
(OFFLINE)

 Re: 龍神録プログラミングの館で勉強中にバグが出てきました。

DXライブラリは3.16fをダウンロードしたばかりです。
上記の対応もいたしました。
それと自分もVS2008をダウンロードして同じようにプログラムを変えずにデバックを開始したら
弾が敵の雑魚グラフィックに変わりました。
コードについてはもう少しお待ちください。

Name: ポインタ
[URL]
かけだし(1,913 ポイント)
Date: 2017年1月08日(日) 20:42
No: 6
(OFFLINE)

 Re: 龍神録プログラミングの館で勉強中にバグが出てきました。

コードは自分で書いたものでなく龍神録プログラミングの館でダウンロードしたもので自分は書き換えていないのです。
自分でこのバグに関係ないと思った部分は書いてませんがこの関数のコードを書いてほしいというときは言ってください。
すぐに書き込みます。
多いと思いますが自分ではこれ以上絞れませんでした。

画像読み込み
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "../include/GV.h"
 
void load(){
    img_eff_bom[0] = LoadGraph( "../dat/img/effect/bom0.png" );
    img_eff_bom[1] = LoadGraph( "../dat/img/effect/bom1.png" );
    img_eff_bom[2] = LoadGraph( "../dat/img/char/body.png" );
    img_eff_bom[3] = LoadGraph( "../dat/img/bullet/bom_title0.png" );
 
    img_etc[1]  = LoadGraph( "../dat/img/enemy/hp.png" );
    img_etc[2]  = LoadGraph( "../dat/img/enemy/bossback.png" );
    img_etc[5]  = LoadGraph( "../dat/img/enemy/bossback3.png" );
    img_etc[6]  = LoadGraph( "../dat/img/enemy/bossback4.png" );
    img_etc[7]  = LoadGraph( "../dat/img/enemy/hp_boss.png" );//ボスのHP
 
    LoadDivGraph( "../dat/img/bullet/b0.png" , 5 , 5 , 1 , 76 , 76 , img_bullet[0] ) ;
    LoadDivGraph( "../dat/img/bullet/b1.png" , 6 , 6 , 1 , 22 , 22 , img_bullet[1] ) ;
    LoadDivGraph( "../dat/img/bullet/b2.png" , 10 , 10 , 1 , 5 , 120 , img_bullet[2] ) ;
    LoadDivGraph( "../dat/img/bullet/b3.png" , 5 , 5 , 1 , 19 , 34 , img_bullet[3] ) ;
    LoadDivGraph( "../dat/img/bullet/b4.png" , 10 , 10 , 1 , 38 , 38 , img_bullet[4]  ) ;
    LoadDivGraph( "../dat/img/bullet/b5.png" , 3 , 3 , 1 , 14 , 16 , img_bullet[5] ) ;
    LoadDivGraph( "../dat/img/bullet/b6.png" , 3 , 3 , 1 , 14 , 18 , img_bullet[6] ) ;
    LoadDivGraph( "../dat/img/bullet/b7.png" , 10 , 10 , 1 , 16 , 16 , img_bullet[7] ) ;
    LoadDivGraph( "../dat/img/bullet/b8.png" , 10 , 10 , 1 , 12 , 18 ,img_bullet[8] ) ;
    LoadDivGraph( "../dat/img/bullet/b9.png" , 3 , 3 , 1 , 13 , 19 , img_bullet[9] ) ;
    LoadDivGraph( "../dat/img/bullet/b10.png" , 8 , 8 , 1 , 8 , 8 , img_bullet[10] ) ;
 
    LoadDivGraph( "../dat/img/enemy/hit_effect.png" , 5 , 5 , 1 , 140 , 140 , img_del_effect ) ;
    LoadDivGraph( "../dat/img/char/riria.png" , 8 , 8 , 1 , 100 , 100 , img_dot_riria ) ;
    LoadDivGraph( "../dat/img/char/0.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
    LoadDivGraph( "../dat/img/enemy/0.png" , 9 , 3 , 3 , 32 , 32 , img_enemy[0] ) ;
 
    img_cshot[0]=LoadGraph("../dat/img/char/bl_00.png");
    img_cshot[1]=LoadGraph("../dat/img/char/bl_01.png");
 
    img_back[0] = LoadGraph("../dat/img/back/0/back0.png");



敵ボスグラフィック関係
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include "../include/GV.h"
 
extern void graph_back_main();
void graph_bullet(){
    int i,j,eff;
    double disp_angle;
    SetDrawMode( DX_DRAWMODE_BILINEAR ) ;//線形補完描画
    for(i=0;i<SHOT_MAX;i++){//敵の弾幕数分ループ
        if(shot[i].flag>0){//弾幕データがオンなら
            for(j=0;j<SHOT_BULLET_MAX;j++){//その弾幕が持つ弾の最大数分ループ
                if(shot[i].bullet[j].flag!=0){//弾データがオンなら
                    if(shot[i].bullet[j].eff==1)
                        SetDrawBlendMode( DX_BLENDMODE_ADD, 200+GetRand(55)) ;
                    if(bullet_info[shot[i].bullet[j].knd].kaiten==1)
                        disp_angle=PI2*(shot[i].bullet[j].cnt%120)/120;
                    else
                        disp_angle=shot[i].bullet[j].angle+PI/2;
 
                    DrawRotaGraphF(
                        shot[i].bullet[j].x+FX+dn.x, shot[i].bullet[j].y+FY+dn.y,
                        1.0, disp_angle,
                        img_bullet[shot[i].bullet[j].knd][shot[i].bullet[j].col],TRUE);
 
                    if(shot[i].bullet[j].eff==1)
                        SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
                }
            }
        }
    }
    //ボス
    if(boss_shot.flag>0){//弾幕データがオンなら
        for(j=0;j<BOSS_BULLET_MAX;j++){//その弾幕が持つ弾の最大数分ループ
            if(boss_shot.bullet[j].flag!=0){//弾データがオンなら
                eff=0;
                if(boss_shot.bullet[j].kaiten==1)
                    disp_angle=PI2*(boss_shot.bullet[j].cnt%120)/120;
                else
                    disp_angle=boss_shot.bullet[j].angle+PI/2;
                if(boss_shot.bullet[j].eff_detail==1){//風雨にも負けず用弾エフェクト
                    SetDrawBlendMode( DX_BLENDMODE_ADD, 100+GetRand(155)),eff=1 ;
                    DrawRotaGraphF(
                        boss_shot.bullet[j].x+FX+dn.x, boss_shot.bullet[j].y+FY+dn.y,
                        1.3, disp_angle,
                        img_bullet[boss_shot.bullet[j].knd][boss_shot.bullet[j].col],TRUE);
                }
                if(boss_shot.bullet[j].eff==1)
                    SetDrawBlendMode( DX_BLENDMODE_ADD, 200+GetRand(55)),eff=1 ;
                if(boss_shot.bullet[j].eff==2)
                    SetDrawBlendMode( DX_BLENDMODE_ADD, 255+GetRand(100)),eff=1 ;
                DrawRotaGraphF(
                    boss_shot.bullet[j].x+FX+dn.x, boss_shot.bullet[j].y+FY+dn.y,
                    1.0, disp_angle,
                    img_bullet[boss_shot.bullet[j].knd][boss_shot.bullet[j].col],TRUE);
 
                if(eff==1)
                    SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
            }
        }
    }
    SetDrawMode(DX_DRAWMODE_NEAREST);//描画形式を戻す
}
 
void graph_main(){
    if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);
 
    graph_back_main();//背景描画メイン
    graph_effect(0);//敵が死ぬエフェクト
 
    if(bright_set.brt!=255)SetDrawBright(255,255,255);
 
    graph_effect(4);//喰らいボムのエフェクト
 
    if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);
 
    graph_boss();
    graph_enemy();//敵の描画
    graph_cshot();//自機ショットの描画
 
    if(bright_set.brt!=255)SetDrawBright(255,255,255);
 
    graph_ch();//自機の描画
 
    if(bright_set.brt!=255)SetDrawBright(bright_set.brt,bright_set.brt,bright_set.brt);
   
    graph_bullet();//弾の描画
 
    if(bright_set.brt!=255)SetDrawBright(255,255,255);
 
    graph_effect(1);//ボムのエフェクト
    graph_effect(2);//ボム線のエフェクト
    graph_effect(3);//ボムキャラのエフェクト
    graph_board();//ボードの描画
 
    graph_develop();
}


敵ボス関係
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include "../include/GV.h"
#include "../include/func.h"
 
#define V0 10.0
//ボスの弾幕を計算する
void boss_shot_calc(){
    int i;
    boss.endtime--;
    if(boss.endtime<0)
        boss.hp=0;
    for(i=0;i<BOSS_BULLET_MAX;i++){
        if(boss_shot.bullet[i].flag>0){
            boss_shot.bullet[i].x+=cos(boss_shot.bullet[i].angle)*boss_shot.bullet[i].spd;
            boss_shot.bullet[i].y+=sin(boss_shot.bullet[i].angle)*boss_shot.bullet[i].spd;
            boss_shot.bullet[i].cnt++;
            if(boss_shot.bullet[i].cnt>boss_shot.bullet[i].till){
                if(boss_shot.bullet[i].x<-50 || boss_shot.bullet[i].x>FMX+50 ||
                    boss_shot.bullet[i].y<-50 || boss_shot.bullet[i].y>FMY+50)
                    boss_shot.bullet[i].flag=0;
            }
        }
    }
    boss_shot.cnt++;
}
//弾幕をセット
void enter_boss_shot(){
    memset(&boss_shot , 0, sizeof(boss_shot_t));//弾情報初期化
    boss_shot.flag=1;
    boss.wtime=0;//待機時間0
    boss.state=2;//弾幕中状態に
    boss.hp=boss.set_hp[boss.knd];//HP設定
    boss.hp_max=boss.hp;
}
//ボスをセット
void enter_boss(int num){
    if(num==0){//中ボス開始時の時は
        memset(enemy,0,sizeof(enemy_t)*ENEMY_MAX);//雑魚敵を消す
        memset(shot,0,sizeof(shot_t)*SHOT_MAX);//弾幕を消す
        boss.x=FMX/2;//ボスの初期座標
        boss.y=-30;
        boss.knd=-1;//弾幕の種類
    }
    boss.flag=1;
    boss.hagoromo=0;//扇を広げるかどうかのフラグ
    boss.endtime=99*60;//残り時間
    boss.state=1;//待機中状態に
    boss.cnt=0;
    boss.graph_flag=0;//描画フラグを戻す
    boss.knd++;
    boss.wtime=0;//待機時間を初期化
    memset(&boss_shot,0,sizeof(boss_shot_t));//ボスの弾幕情報を初期化
    input_phy(60);//60カウントかけて物理的計算で定位置に戻す
}
//ボスの弾幕メイン
void boss_shot_main(){
    if(stage_count==boss.appear_count[0] && boss.flag==0)//開始時間なら
        enter_boss(0);//開始
    if(boss.flag==0)//ボスが登録されて無ければ戻る
        return;
    calc_boss();
    if(boss.phy.flag==1)//物理演算移動オンなら
        calc_phy();//物理計算を
    if(boss.state==2 && (boss.hp<=0 || boss.endtime<=0)){//弾幕中で体力が無くなったら
        se_flag[1]=1;//敵のピチュリ音
        se_flag[11]=1;
        enter_boss(1);//次の弾幕を登録
    }
    if(boss.state==1){//弾幕間の待機時間
        waitandenter();
    }
    if(boss.state==2){//弾幕中なら
        boss_shot_bullet[boss.knd]();//弾幕関数へ
        boss_shot_calc();//弾幕計算
    }
    boss.cnt++;
}


ボスの弾幕情報
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
void boss_shot_bulletH005(){
#define TM005 820
#define RANGE005 100.0
#define LEM005 4
    int i,j,k,n,t=boss_shot.cnt%TM005,t2=boss_shot.cnt;
    static int sst,bnum;
    static double sx,sy,sangle;
    //1周期の最初なら
    if(t==0){
        sst=0;
        sx=boss.x;
        sy=boss.y-RANGE005;
        sangle=PI/5/2+PI/2;
        bnum=0;
    }
    //星を描く
    if(sst<=4){
        for(i=0;i<2;i++){
            sx+=cos(sangle)*LEM005;//座標を計算
            sy+=sin(sangle)*LEM005;
            //円と交わったら
            if((sx-boss.x)*(sx-boss.x)+(sy-boss.y)*(sy-boss.y)>RANGE005*RANGE005){
                sangle-=(PI-PI/5);//方向転換
                sst++;//ステータス変換
                if(sst==5)break;//5なら終わる
            }
            for(j=0;j<5;j++){//星を5つ描く
                if((k=search_boss_shot())!=-1){
                    boss_shot.bullet[k].flag=1;
                    boss_shot.bullet[k].state=j;
                    boss_shot.bullet[k].cnt=0;
                    boss_shot.bullet[k].spd=0;
                    boss_shot.bullet[k].knd=10;
                    boss_shot.bullet[k].col=j;
                    boss_shot.bullet[k].angle=-PI/2+PI2/5*j;
                    boss_shot.bullet[k].x=sx;
                    boss_shot.bullet[k].y=sy;
                    boss_shot.bullet[k].vx = cos(sangle)*1.4*1.2;
                    boss_shot.bullet[k].vy = sin(sangle)*1.4;
                    boss_shot.bullet[k].base_angle[0]=sangle-PI+PI/20*bnum;
                }
            }
            bnum++;
        }
        se_flag[0]=1;
    }
   for(i=0;i<BOSS_BULLET_MAX;i++){
        if(boss_shot.bullet[i].flag>0){
            int cnt=boss_shot.bullet[i].cnt;
            //ステータスが10未満なら
            if(boss_shot.bullet[i].state<10){
                if(t==150){//150なら星を5方向に発射
                    boss_shot.bullet[i].spd=4;//スピード
                    boss_shot.bullet[i].cnt=0;//カウンタリセット
                    boss_shot.bullet[i].state+=10;//ステータス番号変更
                }
            }
            else if(boss_shot.bullet[i].state<20){//10~19なら
                if(cnt<=80){//減速
                    boss_shot.bullet[i].spd-=0.05;
                }
                if(cnt==100){//セットした基準角度から綺麗な曲線を描く
                    boss_shot.bullet[i].angle=boss_shot.bullet[i].base_angle[0];
                }
                if(cnt>=100 && cnt<160){//加速
                    boss_shot.bullet[i].spd+=0.015;
                }
            }
        }
    }
}


struct.h
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//ショットに関する構造体
typedef struct {
    //フラグ、種類、カウンタ、どの敵から発射されたかの番号、色
    int flag, knd, cnt, num;
    //ベース角度、ベーススピード
    double base_angle[10], base_spd[1];
    bullet_t bullet[BOSS_BULLET_MAX];
}boss_shot_t;
 
//ボスの情報
typedef struct {
    int flag, cnt, knd, wtime, state, endtime, hagoromo, graph_flag;
    int hp, hp_max;
    int appear_count[2], set_hp[DANMAKU_MAX], back_knd[DANMAKU_MAX];
    double x, y, dx, dy, ang, spd;
    phy_t phy;
}boss_t;

Name: Math
[URL]
Date: 2017年1月08日(日) 21:15
No: 7
(OFFLINE)

 Re: 龍神録プログラミングの館で勉強中にバグが出てきました。

ファイルが不足してると思う。?。
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include "../include/GV.h"
 
void load(){
    img_board[10] = LoadGraph("../dat/img/board/10.png");
    img_board[11] = LoadGraph("../dat/img/board/11.png");
    img_board[12] = LoadGraph("../dat/img/board/12.png");
    img_board[20] = LoadGraph("../dat/img/board/20.png");
 
    img_chetc[0]    = LoadGraph( "../dat/img/char/atari.png" );
    img_chetc[2]    = LoadGraph( "../dat/img/char/ball.png" );
 
    img_eff_bom[0] = LoadGraph( "../dat/img/effect/bom0.png" );
    img_eff_bom[1] = LoadGraph( "../dat/img/effect/bom1.png" );
    img_eff_bom[2] = LoadGraph( "../dat/img/char/body.png" );
    img_eff_bom[3] = LoadGraph( "../dat/img/bullet/bom_title0.png" );
 
    img_etc[1]  = LoadGraph( "../dat/img/enemy/hp.png" );
    img_etc[2]  = LoadGraph( "../dat/img/enemy/bossback.png" );
    img_etc[5]  = LoadGraph( "../dat/img/enemy/bossback3.png" );
    img_etc[6]  = LoadGraph( "../dat/img/enemy/bossback4.png" );
    img_etc[7]  = LoadGraph( "../dat/img/enemy/hp_boss.png" );//ボスのHP
 
    LoadDivGraph( "../dat/img/bullet/b0.png" , 5 , 5 , 1 , 76 , 76 , img_bullet[0] ) ;
    LoadDivGraph( "../dat/img/bullet/b1.png" , 6 , 6 , 1 , 22 , 22 , img_bullet[1] ) ;
    LoadDivGraph( "../dat/img/bullet/b2.png" , 10 , 10 , 1 , 5 , 120 , img_bullet[2] ) ;
    LoadDivGraph( "../dat/img/bullet/b3.png" , 5 , 5 , 1 , 19 , 34 , img_bullet[3] ) ;
    LoadDivGraph( "../dat/img/bullet/b4.png" , 10 , 10 , 1 , 38 , 38 , img_bullet[4]  ) ;
    LoadDivGraph( "../dat/img/bullet/b5.png" , 3 , 3 , 1 , 14 , 16 , img_bullet[5] ) ;
    LoadDivGraph( "../dat/img/bullet/b6.png" , 3 , 3 , 1 , 14 , 18 , img_bullet[6] ) ;
    LoadDivGraph( "../dat/img/bullet/b7.png" , 10 , 10 , 1 , 16 , 16 , img_bullet[7] ) ;
    LoadDivGraph( "../dat/img/bullet/b8.png" , 10 , 10 , 1 , 12 , 18 ,img_bullet[8] ) ;
    LoadDivGraph( "../dat/img/bullet/b9.png" , 3 , 3 , 1 , 13 , 19 , img_bullet[9] ) ;
    LoadDivGraph( "../dat/img/bullet/b10.png" , 8 , 8 , 1 , 8 , 8 , img_bullet[10] ) ;
 
    LoadDivGraph( "../dat/img/enemy/hit_effect.png" , 5 , 5 , 1 , 140 , 140 , img_del_effect ) ;
    LoadDivGraph( "../dat/img/char/riria.png" , 8 , 8 , 1 , 100 , 100 , img_dot_riria ) ;
    LoadDivGraph( "../dat/img/char/0.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
    LoadDivGraph( "../dat/img/enemy/0.png" , 9 , 3 , 3 , 32 , 32 , img_enemy[0] ) ;
 
    img_cshot[0]=LoadGraph("../dat/img/char/bl_00.png");
    img_cshot[1]=LoadGraph("../dat/img/char/bl_01.png");
 
    img_back[0] = LoadGraph("../dat/img/back/0/back0.png");
 
    sound_se[0]=LoadSoundMem("../dat/se/enemy_shot.wav");
    sound_se[1]=LoadSoundMem("../dat/se/enemy_death.wav");
    sound_se[2]=LoadSoundMem("../dat/se/cshot.wav");
    sound_se[3]=LoadSoundMem("../dat/se/char_death.wav");
    sound_se[8]=LoadSoundMem("../dat/se/hit.wav");
    sound_se[11]=LoadSoundMem("../dat/se/boss_change.wav");
    sound_se[14]=LoadSoundMem("../dat/se/bom0.wav");
    sound_se[15]=LoadSoundMem("../dat/se/bom1.wav");
 
    ChangeVolumeSoundMem( 50, sound_se[0] ) ;
    ChangeVolumeSoundMem(128, sound_se[1] ) ;
    ChangeVolumeSoundMem(128, sound_se[2] ) ;
    ChangeVolumeSoundMem( 80, sound_se[3] ) ;
    ChangeVolumeSoundMem( 80, sound_se[8] ) ;
}
 
//敵の出現情報をエクセルから読み込んで格納する関数
void load_story(){
    int n,num,i,fp;
    char fname[32]={"../dat/csv/storyH0.csv"};
    int input[64];
    char inputc[64];
 
    fp = FileRead_open(fname);//ファイル読み込み
    if(fp == NULL){
        printfDx("read error\n");
        return;
    }
    for(i=0;i<2;i++)//最初の2行読み飛ばす
        while(FileRead_getc(fp)!='\n');
 
    n=0 , num=0;
    while(1){
        for(i=0;i<64;i++){
            inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する
            if(inputc[i]=='/'){//スラッシュがあれば
                while(FileRead_getc(fp)!='\n');//改行までループ
                i=-1;//カウンタを最初に戻して
                continue;
            }
            if(input[i]==',' || input[i]=='\n'){//カンマか改行なら
                inputc[i]='\0';//そこまでを文字列とし
                break;
            }
            if(input[i]==EOF){//ファイルの終わりなら
                goto EXFILE;//終了
            }
        }
        switch(num){
            case 0: enemy_order[n].cnt      =atoi(inputc);break;
            case 1: enemy_order[n].pattern  =atoi(inputc);break;
            case 2: enemy_order[n].knd      =atoi(inputc);break;
            case 3: enemy_order[n].x        =atof(inputc);break;
            case 4: enemy_order[n].y        =atof(inputc);break;
            case 5: enemy_order[n].sp       =atof(inputc);break;
            case 6: enemy_order[n].bltime   =atoi(inputc);break;
            case 7: enemy_order[n].blknd    =atoi(inputc);break;
            case 8: enemy_order[n].col      =atoi(inputc);break;
            case 9: enemy_order[n].hp       =atoi(inputc);break;
            case 10:enemy_order[n].blknd2   =atoi(inputc);break;
            case 11:enemy_order[n].wait     =atoi(inputc);break;
            case 12:enemy_order[n].item_n[0]=atoi(inputc);break;
            case 13:enemy_order[n].item_n[1]=atoi(inputc);break;
            case 14:enemy_order[n].item_n[2]=atoi(inputc);break;
            case 15:enemy_order[n].item_n[3]=atoi(inputc);break;
            case 16:enemy_order[n].item_n[4]=atoi(inputc);break;
            case 17:enemy_order[n].item_n[5]=atoi(inputc);break;
        }
        num++;
        if(num==18){
            num=0;
            n++;
        }
    }
EXFILE:
    FileRead_close(fp);
}

Name: ポインタ
[URL]
かけだし(1,913 ポイント)
Date: 2017年1月08日(日) 21:26
No: 8
(OFFLINE)

 Re: 龍神録プログラミングの館で勉強中にバグが出てきました。

プログラムをよく見て配列に格納されている画像を表示すると何故かimg_bullet[10][2]に
b10.pngの分割画像ではなく別ファイルに入れている背景の画像が読み込まれていました。
間違ってデータを読み込むことや、画像データをまた別の画像データで上書きはできますか?

Name: Math
[URL]
Date: 2017年1月08日(日) 21:58
No: 9
(OFFLINE)

 Re: 龍神録プログラミングの館で勉強中にバグが出てきました。

>間違ってデータを読み込むことや、画像データをまた別の画像データで上書きはできますか?
私も何度もコンピューターを疑ったけれども最終的には”コンピューターが正しい”と気付くのですよね。まず自分を疑った方が早いのですが一度思い込むと自分では分からない。(そういう意味ではここに質問するだけで気が付くこともあるみたいですぐ”自己解決しました!”と言って去る人もたまにおられますから)もういちど勘違いがないか見てみてください。(コンピューターは腹立たしい位”間違って”データを読み込むことや、画像データをまた(勝手に)別の画像データで上書きはしてはくれないですよね)

Name: ポインタ
[URL]
かけだし(1,913 ポイント)
Date: 2017年1月08日(日) 22:15
No: 10
(OFFLINE)

 Re: 龍神録プログラミングの館で勉強中にバグが出てきました。

[解決!]

プロジェクトファイルの解凍からゆっくり丁寧にやったら普通に出来ました。
boxさん
Mathさん
ありがとうございました。Mathさんの最後の言葉を心にとめて学習していこうと思います。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[12人]