今私は学校のグループ製作で音楽ゲームを作っています。
私は曲選択プログラムの担当になったのですが、プログラムを組んでいる最中に詰まってしまい、こちらで質問をさせていただくことにしました。
分からないのは、曲名を表示する部分です。
プログラムを起動した際一瞬だけ文字(曲名)が表示されるのですが、すぐに消えてしまうのです。
以下ソースコードです
#include "DxLib.h"
#include <stdio.h>
#include "musicsel.h"
#define StrH 30;//文字幅
#define mSIZE 60;//カーソルサイズ
typedef struct{
char name[1000];//曲タイトル用
}MUSIC;
int FLoad(MUSIC l[1000]);
//画像
int MBACK;
int NOW;
MUSIC list[1000];
int n=0;//曲項目数
int i=0;//ループ用
int X=20;//曲選択X
int Y=100;//曲選択Y
int SY=100;//文字用
int push=0;//連続押し防止用
int White=GetColor( 255 , 255 , 255 );
int BLACK=GetColor( 0 , 0 , 0 );
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
if( DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK ) ;
ChangeWindowMode( TRUE ) ;
GLoad();//画像読み込み
FLoad(list);//曲名ファイル読み込み
while( 1 )
{
keymove();//選択枠移動
Draw();//画像描画
Music();//曲名を書く
ScreenFlip() ;
if( ProcessMessage() < 0 ) break ;
if( CheckHitKey( KEY_INPUT_ESCAPE ) ) break ;
}
DxLib_End() ;
return 0 ; }
void GLoad(){
MBACK = LoadGraph("pict/musicsel/曲選択.png");
NOW = LoadGraph("pict/musicsel/選択枠.png");
}
void Draw(){
DrawExtendGraph( 0 , 0 , 640 , 480, MBACK , TRUE ) ;//背景
DrawBox( X , 100 , X+280 , 400 , White , TRUE) ;//曲名を表示する枠
DrawExtendGraph( X , Y , X+280 , Y+60, NOW , TRUE ) ;
Music();
}
void keymove(){
{
if(push==0){
if( CheckHitKey( KEY_INPUT_UP ) == 1 ) Y -= mSIZE ;
if( CheckHitKey( KEY_INPUT_DOWN ) == 1 ) Y += mSIZE ;
push=1;
}
else{
push=0;
}
}
int FLoad(MUSIC l[1000]){
FILE *fp;
int rt;//ファイルリード
fp=fopen("music.txt","r");
rt=fscanf(fp,"%s",l[n].name) ;
while(rt!=EOF){
n++;
rt=fscanf(fp,"%s",l[n].name) ;
}
fclose(fp);
return n;
}
void Music(){
SetFontSize( 15 ) ;
while(i<5){
DrawFormatString( X+10, SY+15, BLACK, "%s", list[i].name ) ;
i++;
SY+=60;
}
}
ためしに関数MUSICの位置を色々変えてみたのですが、変化がありませんでした。
処理の順番以外に、何か問題があるのでしょうか。
作業環境は
OS:Windows Vista
言語:C++
使用ライブラリ:DXライブラリ
です。
私自身のC履歴ですが、C言語は3年ほど勉強しました。
C++に関しては半年程度です。
至らない点など多いかと思いますが、ご指導のほどよろしくお願いいたします。