サウスさんのサウンドのベルのバグ(?)
サウスさんのサウンドのベルのバグ(?)
何回もすみません。
支館のサウンドのベルの構造を教えてください。
サウンドのベルのシーンが一瞬表示されて直本編に戻ります。
(そしてその後の中ボスなども上で止まってしまって降りてこなくなります)
何故なのでしょうか?お願いします。(もう手に負えない感じです)
支館のサウンドのベルの構造を教えてください。
サウンドのベルのシーンが一瞬表示されて直本編に戻ります。
(そしてその後の中ボスなども上で止まってしまって降りてこなくなります)
何故なのでしょうか?お願いします。(もう手に負えない感じです)
最後に編集したユーザー とんとん on 2015年11月21日(土) 20:12 [ 編集 1 回目 ]
Re: とんとん
支館というのは、以前私が張った、あのページでしょうか?
もしかしたら、1フレーム中にすべての文章再生を終了してしまっているのかもしれません。
該当する部分のソースコードを載せていただければ、もう少しわかりやすい回答が得られるかもしれません。
もしかしたら、1フレーム中にすべての文章再生を終了してしまっているのかもしれません。
該当する部分のソースコードを載せていただければ、もう少しわかりやすい回答が得られるかもしれません。
オフトピック
コードを載せるときは、ちゃんとcodeタグで囲ってくださいね☆
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: とんとん
はい。そのページです。
他のクラスにはちゃんと書くべき事は書いてあります。
main.cpp fantasy_check();
struct.h
GV.h
GLOBAL story_t story[50];//サウンドノベル用
といった感じです。お願いしますー。
#include "../include/GV.h"
//ストーリーデータの読み込み
void fantasy_load( char *entry ){
int load_data ; //ファイル読み込み用
int x = 0 , y = 0 ; //横列、縦列
char take[2] ; //読み込みデータ
/* データファイルを開く */
load_data = FileRead_open( entry ) ;
if(load_data == NULL){
printfDx("read error\n") ;
return ;
}
/* 各データに分けて取得 */
while( FileRead_eof( load_data ) == 0 )
{
/* 名前の取得 */
for( x=0 ; x < 50 ; x++ ){
story[y].name[x] = FileRead_getc( load_data ) ; //文字列を抜き出す
if( story[y].name[x] == ', ' ){ //「:」までループ
story[y].name[x] = ' ' ;
break ;
}
}
/* 種類の取得 */
take[0] = FileRead_getc( load_data ) ;
take[1] = ' ' ;
story[y].type = atoi( take ) ; //情報の格納
FileRead_getc( load_data ) ; //1バイトスキップ
/* 表情の取得 */
take[0] = FileRead_getc( load_data ) ;
take[1] = ' ' ;
story[y].look = atoi( take ) ;
FileRead_getc( load_data ) ;
/* ポーズの取得 */
take[0] = FileRead_getc( load_data ) ;
take[1] = ' ' ;
story[y].look = atoi( take ) ;
FileRead_getc( load_data ) ;
/* 本文の取得 */
FileRead_gets( story[y].story , 256, load_data ) ;
++ y ; //情報階層の移動
}
story[y].story[0] = ' ';
/* ファイルを閉じる */
FileRead_close( load_data ) ;
return ;
}
//本文表示
void fantasy_disp(){
static int y , x ; //chra型の[縦y]と[横x](座標ではない)
static int dy; //表示用の[縦dy]
static char disp[5][256]; //表示用
int loop = 0; //改行用
int len;
int len2;
int i; //for用
//エンターが押された時の割り込み処理
if( CheckStatePad(configpad.shot) == 1 ){
if( story[y].story[x] == 'C' ){
x = 0;
dy = 0;
++ y;
}else{
while( story[y].story[x] != 'C' ){
if( story[y].story[x] == ' ' ){
x=0;
++ y;
++ dy;
}
for( i=0 ; i<2; i++ ){
disp[dy][x+i] = story[y].story[x+i] ;
}
disp[dy][x+i] = ' ';
x += 2 ;
}
}
}
//一文字(1バイト)について処理分け
switch( story[y].story[x] ){
case 'C' :
//何もしない
break;
case '\0' : //改行表示処理
x = 0;
++ y;
++ dy;
disp[dy][x] = ' ';
break;
default :
//2バイトの全角文字の読み込み
for( i=0 ; i<2; i++ ){
disp[dy][x+i] = story[y].story[x+i] ;
}
disp[dy][x+i] = ' '; //nullで閉める(お約束)
x += 2 ; //次回読み込み位置の変更
break;
}
//背景を暗く
SetDrawBlendMode( DX_BLENDMODE_ALPHA , 80 ) ;
DrawBox( FX , FY , FX+FMX , FY+FMY , color[1] , TRUE ) ;
DrawBox( FX , 410 , FX+FMX , FY+FMY , color[0] , TRUE ) ;
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
//名前
len = GetDrawFormatStringWidthToHandle( font[0] , story[y].name );
DrawFormatStringToHandle( 100 , 393 , color[0] , font[0] , "%s" , story[y].name );
//本文
while ( dy >= loop ){
DrawFormatStringToHandle( 50 + len , 420+20*loop , color[0] , font[0] , "%s" , disp[loop] );
++ loop;
}
// 」.(停止中なら)
if( story[y].story[x] == 'C' ){
len2 = GetDrawFormatStringWidthToHandle( font[0] , "%s" , disp[dy] );
if( count%30 < 15)
DrawFormatStringToHandle( 50 + len + len2 , 420+20*dy , color[0] , font[0] , "」");
else
DrawFormatStringToHandle( 50 + len + len2 , 420+20*dy , color[0] , font[0] , "」.");
}
//ENDフラグが立ってたら終了
if( story[y].story[0] == ' ' ){
func_state = 100;
x = 0;
y = 0;
dy = 0;
}
return ;
}
//サウンドノベル割り込み判断
void fantasy_check(){
//ステージカウント49の時に指定のファイルを読み込みサウンドノベル処理へ
if( stage_count == 49 ){//カウント49
fantasy_load( "32-2.csv" );//指定のファイル(プロジェクトと同じ階層)
func_state = 103;//サウンドノベル処理へ
}
}
main.cpp fantasy_check();
struct.h
//物語(ストーリー)に関数構造体
typedef struct{
int type; //種類
int look; //表情
int pose; //ポーズ
char name[50]; //名前
char story[256];//本文
}story_t;
GLOBAL story_t story[50];//サウンドノベル用
といった感じです。お願いしますー。
Re: とんとん
あぁ、何でこんなタイトルになっているんでしょ、、、。あぁ、やだ。。。
そして、質問の答えもよければお願い致します
そして、質問の答えもよければお願い致します
Re: サウスさんのサウンドのベルのバグ(?)
うーん…
時間がなくてさらっと見た限りですが、それでも良ければご参考にどうぞ。(参考になるのか?)
症状を聞く限り、原因として考えられるのは、以下の項目です。
・fantasy_disp関数を1回読みだしたとき、最後のif文でいきなり終端判定がなされている
・それ以外の呼び出し関数で、func_stateの値を変更している可能性がある
申し訳ありませんが、一度140行目あたりに" printfDx("終了判定!\n"); "と試しに入れてみてもらえませんか?
左上にその文章が表示されていれば下の、表示されていなければ上の原因に該当している可能性があります。
このような解答しかできなくてごめんなさい><
この掲示板にはもっと優秀な方がいらっしゃるので…w
時間がなくてさらっと見た限りですが、それでも良ければご参考にどうぞ。(参考になるのか?)
症状を聞く限り、原因として考えられるのは、以下の項目です。
・fantasy_disp関数を1回読みだしたとき、最後のif文でいきなり終端判定がなされている
・それ以外の呼び出し関数で、func_stateの値を変更している可能性がある
申し訳ありませんが、一度140行目あたりに" printfDx("終了判定!\n"); "と試しに入れてみてもらえませんか?
左上にその文章が表示されていれば下の、表示されていなければ上の原因に該当している可能性があります。
このような解答しかできなくてごめんなさい><
この掲示板にはもっと優秀な方がいらっしゃるので…w
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: サウスさんのサウンドのベルのバグ(?)
遅れて申し訳ございません。おはようございますー。
どうやら原因は下のようです。
ですが、どこでfunc_stateの値を変更してしまっているのでしょうか。
参照、検索などで調べてみてもそれらしきものは見つかりません。
どのように探せばいいのでしょうか?
お願いします、、、。(あと、プログラムは龍神録のものです)
どうやら原因は下のようです。
ですが、どこでfunc_stateの値を変更してしまっているのでしょうか。
参照、検索などで調べてみてもそれらしきものは見つかりません。
どのように探せばいいのでしょうか?
お願いします、、、。(あと、プログラムは龍神録のものです)
Re: サウスさんのサウンドのベルのバグ(?)
あ、終わるときの136行目のところに文字を入れたらダイジョウブでした。
ですが、表示される文字がおかしいです。(しばらくしたら右上のパワー表示などもおかしくなりました)
どうすればいいのでしょうか?
ですが、表示される文字がおかしいです。(しばらくしたら右上のパワー表示などもおかしくなりました)
どうすればいいのでしょうか?
Re: サウスさんのサウンドのベルのバグ(?)
デバッグをすればいいでしょう。とんとん さんが書きました:どうすればいいのでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: サウスさんのサウンドのベルのバグ(?)
とはいえ、どこでブレーク張るかが検討付かないのですー、、、
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: サウスさんのサウンドのベルのバグ(?)
ある程度以上の規模のプログラムのバグは、本人がバグを取るしかありません。
私が前にできるだけ単純なプログラムで動作確認して欲しいと言ったのはデバッグが難しくなるからです。
で、自分で選んだ苦しい方法ですから頑張ってもらうしか無いわけで。
>ですが、表示される文字がおかしいです。(しばらくしたら右上のパワー表示などもおかしくなりました)
情報不足です。どうおかしいのわかりません。
状況再現できるはとんとんさんだけですから、とんとんさんの情報が正確でないと得られるアドバイスも不正確になります。
今の情報だと、一番厄介な配列添え字外のアクセスやポインタ操作ミスが考えられます。
> とはいえ、どこでブレーク張るかが検討付かないのですー、、
それはプログラムの動作を把握できていないからですね。
本来なら、自分のわかる範囲の限定できるコンパクトなプログラムで実装実験すべきです。
デバッグは経験を積むしか無いですが、大きなプログラムでは訳が分からなくなるので初心者にデバッグが困難です。
でもデバッグはプログラミングの最重要スキルですので、プログラムコードを組めるより重要だったりします。
プログラムが完成しませんから。
私が前にできるだけ単純なプログラムで動作確認して欲しいと言ったのはデバッグが難しくなるからです。
で、自分で選んだ苦しい方法ですから頑張ってもらうしか無いわけで。
>ですが、表示される文字がおかしいです。(しばらくしたら右上のパワー表示などもおかしくなりました)
情報不足です。どうおかしいのわかりません。
状況再現できるはとんとんさんだけですから、とんとんさんの情報が正確でないと得られるアドバイスも不正確になります。
今の情報だと、一番厄介な配列添え字外のアクセスやポインタ操作ミスが考えられます。
> とはいえ、どこでブレーク張るかが検討付かないのですー、、
それはプログラムの動作を把握できていないからですね。
本来なら、自分のわかる範囲の限定できるコンパクトなプログラムで実装実験すべきです。
デバッグは経験を積むしか無いですが、大きなプログラムでは訳が分からなくなるので初心者にデバッグが困難です。
でもデバッグはプログラミングの最重要スキルですので、プログラムコードを組めるより重要だったりします。
プログラムが完成しませんから。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: サウスさんのサウンドのベルのバグ(?)
たくさんの・・・・・と、たまに何かの記号が現れます。(おそらく1フレームごとにかわっていっているので
よめません)
謎現象です。
よめません)
謎現象です。
Re: サウスさんのサウンドのベルのバグ(?)
できれば、サウスさんのページで紹介されているサウンドのベルのcsvファイルの書き方を教えてください。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: サウスさんのサウンドのベルのバグ(?)
テキストをちゃんと読み込めていないんでしょうね。とんとん さんが書きました:たくさんの・・・・・と、たまに何かの記号が現れます。(おそらく1フレームごとにかわっていっているので
よめません)
謎現象です。
たとすれば、読み込みの所を調べるべきでしょう。
これは、プログラムを解析したけどわからなかったと言うことでしょうか?とんとん さんが書きました:できれば、サウスさんのページで紹介されているサウンドのベルのcsvファイルの書き方を教えてください。
ならば、何処の部分がわからないかピンポイントで質問をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。