文章が表示されません
Posted: 2010年10月10日(日) 09:49
#include "DxLib.h"
int function_status=0,black,White,count=0,flag=-1, y=300;
int GetHitKeyStateAll_2(int KeyStateBuf[/url]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key==1) KeyStateBuf++;
else KeyStateBuf=0;
}
return 0;
}
int Key[256],oldKey[256]={};
void char_disp(int y){
LoadGraphScreen(0,0,"haikei.jpg",FALSE);
LoadGraphScreen( 240 , y , "yazirusi.jpg" , TRUE );
LoadGraphScreen( 260, 300 , "newgame.jpg" , TRUE );
LoadGraphScreen( 260 , 320 , "continue.jpg" , TRUE );
LoadGraphScreen( 260 , 340 , "end.jpg" , TRUE );
}
void start(){
SetDrawBlendMode( DX_BLENDMODE_ALPHA , count ) ;
DrawString(200,340,"returnキーを押してください",White);
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
if(count>255 || count<0) flag*=-1; //count上昇モード下降モード分岐
if(flag==-1) count+=2; //インクリメント
if(flag== 1) count-=2; //デクリメント
if(Key[KEY_INPUT_RETURN]==1)
function_status=1;
}
void Menu(){
char_disp(y); // 文字を描画
if( Key[KEY_INPUT_DOWN]==1 ||( Key[KEY_INPUT_DOWN]%5==0 && Key[KEY_INPUT_DOWN]>30)){
// たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
y+=20;
if(y==360) // y座標(選択が一番下なら)
y=300; // 選択座標を一番上に
}
if(Key[KEY_INPUT_RETURN]==1&&y==300)
function_status=2;
else if(Key[KEY_INPUT_RETURN]==1&&y==340)
function_status=5;
}
void opening(){
int f=0,flag2=0,j,ch_f=0,counter=0;
char disp[82]="",ch[4][82]={
"あああああああああああああああああああ",
"ああああああえええええええぇぇぇぇぇぇっぇ!?",
"うううううううううううううう",
"何が起こったかはよくわからないがとりあえず動いてみるか"
};
while(flag2=0){
for(j=0;j<256;j++){
if(oldKey[j]==0 && Key[j]==1)
Key[j]=2;
oldKey[j]=Key[j];
}
if(Key[KEY_INPUT_RETURN]==2){ // 前回押されてなくて、今回押されていたら
f=0; // iを初期値に戻し
ch_f++; // 表示する配列を1つずらす
if(ch_f==4)
flag2=1; // これ以上表示する配列がなくなったらbreak;
break;
}
if(f<=82-2 && ch[ch_f][f]!='\0' && counter%4==0){
f+=2; // 全角文字なので配列要素2つずつカウントアップ
strncpy(disp,ch[ch_f],f);// iバイトまでの配列要素をdisp配列にコピー
disp[f]='\0'; }
DrawFormatString(10,420,White,"%s",disp);
counter++;}
if(flag2==1)
function_status=3;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; //ウィンドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
black = GetColor( 0 , 0 , 0 ) ; //色の取得
White=GetColor(255,255,255);
SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
// すべてのキーの状態を得る
switch(function_status){
case 0:
start();
break;
case 1:
Menu();
break;
case 2:
opening();
break;
default:
DxLib_End() ; // DXライブラリ使用の終了処理
return 0;
break;
}
if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了
ScreenFlip() ; // 裏画面データを表画面へ反映
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
このプログラムのopening関数の文章が表示されません
いろいろ試してみましたがだめでした
どうしてでしょうか?
ヒントだけでも教えてください
文章下手ですいません
int function_status=0,black,White,count=0,flag=-1, y=300;
int GetHitKeyStateAll_2(int KeyStateBuf[/url]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key==1) KeyStateBuf++;
else KeyStateBuf=0;
}
return 0;
}
int Key[256],oldKey[256]={};
void char_disp(int y){
LoadGraphScreen(0,0,"haikei.jpg",FALSE);
LoadGraphScreen( 240 , y , "yazirusi.jpg" , TRUE );
LoadGraphScreen( 260, 300 , "newgame.jpg" , TRUE );
LoadGraphScreen( 260 , 320 , "continue.jpg" , TRUE );
LoadGraphScreen( 260 , 340 , "end.jpg" , TRUE );
}
void start(){
SetDrawBlendMode( DX_BLENDMODE_ALPHA , count ) ;
DrawString(200,340,"returnキーを押してください",White);
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
if(count>255 || count<0) flag*=-1; //count上昇モード下降モード分岐
if(flag==-1) count+=2; //インクリメント
if(flag== 1) count-=2; //デクリメント
if(Key[KEY_INPUT_RETURN]==1)
function_status=1;
}
void Menu(){
char_disp(y); // 文字を描画
if( Key[KEY_INPUT_DOWN]==1 ||( Key[KEY_INPUT_DOWN]%5==0 && Key[KEY_INPUT_DOWN]>30)){
// たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
y+=20;
if(y==360) // y座標(選択が一番下なら)
y=300; // 選択座標を一番上に
}
if(Key[KEY_INPUT_RETURN]==1&&y==300)
function_status=2;
else if(Key[KEY_INPUT_RETURN]==1&&y==340)
function_status=5;
}
void opening(){
int f=0,flag2=0,j,ch_f=0,counter=0;
char disp[82]="",ch[4][82]={
"あああああああああああああああああああ",
"ああああああえええええええぇぇぇぇぇぇっぇ!?",
"うううううううううううううう",
"何が起こったかはよくわからないがとりあえず動いてみるか"
};
while(flag2=0){
for(j=0;j<256;j++){
if(oldKey[j]==0 && Key[j]==1)
Key[j]=2;
oldKey[j]=Key[j];
}
if(Key[KEY_INPUT_RETURN]==2){ // 前回押されてなくて、今回押されていたら
f=0; // iを初期値に戻し
ch_f++; // 表示する配列を1つずらす
if(ch_f==4)
flag2=1; // これ以上表示する配列がなくなったらbreak;
break;
}
if(f<=82-2 && ch[ch_f][f]!='\0' && counter%4==0){
f+=2; // 全角文字なので配列要素2つずつカウントアップ
strncpy(disp,ch[ch_f],f);// iバイトまでの配列要素をdisp配列にコピー
disp[f]='\0'; }
DrawFormatString(10,420,White,"%s",disp);
counter++;}
if(flag2==1)
function_status=3;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; //ウィンドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
black = GetColor( 0 , 0 , 0 ) ; //色の取得
White=GetColor(255,255,255);
SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
// すべてのキーの状態を得る
switch(function_status){
case 0:
start();
break;
case 1:
Menu();
break;
case 2:
opening();
break;
default:
DxLib_End() ; // DXライブラリ使用の終了処理
return 0;
break;
}
if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了
ScreenFlip() ; // 裏画面データを表画面へ反映
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
このプログラムのopening関数の文章が表示されません
いろいろ試してみましたがだめでした
どうしてでしょうか?
ヒントだけでも教えてください
文章下手ですいません