トップページ > 記事閲覧
文字が重なり、重なった文字が変
名前:ryo 日時: 2013/07/21 04:20

サンプルを参考に作らせていただいたのですが、表示がうまくいきません #include"DxLib.h" #define MOJI_SIZE 24 int DrowPointX,DrowPointY=0; int yoko,tate; char String[][300]= { "”・・・繰り返す  これはゲームではない”b", "気が付いた時には、室内には、この放送が響いていたb", "@まだ首筋に痛みが残っているb", "@不審な手紙が家に届いてから数時間後、突然何者かの襲撃を受けたb", "何もわからないまま、目の前のモニターに明りが付く。be" }; int Kai( void ) { int temp; DrowPointY ++ ; DrowPointX=0; if(DrowPointY*MOJI_SIZE+MOJI_SIZE>480) { temp = MakeGraph(640,480); GetDrawScreenGraph(0,0,640,480,temp); DrawGraph(0,-MOJI_SIZE,temp,FALSE); DrawBox(0,480-MOJI_SIZE,640,480,0,TRUE); DrowPointY--; DeleteGraph(temp); } return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int endflag; char onemoji[3]; SetGraphMode(640,480,16); if(DxLib_Init() == -1) { return -1; } DrowPointX=0; DrowPointY=0; yoko=0; tate=0; SetFontSize(MOJI_SIZE); endflag=0; while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0) { char Moji; Moji = String[yoko][tate]; switch(Moji) { case '@' : Kai(); tate++; break; case'b': WaitKey(); tate++; break; case'e': endflag= 1; tate++; break; case'c': ClearDrawScreen(); DrowPointY=300; DrowPointX=0; tate++; break; default: onemoji[0]=String[yoko][tate]; onemoji[1]=String[yoko][tate+1]; onemoji[2]='\n'; DrawString( DrowPointX* MOJI_SIZE,DrowPointY* MOJI_SIZE, onemoji,GetColor(255,255,200)); tate+=2; DrowPointX++; WaitTimer(10); if(DrowPointX*MOJI_SIZE+MOJI_SIZE> 640) Kai(); break; } if(endflag==1) break; if(String[yoko][tate]=='\0') { yoko++; tate=0; } } DxLib_End(); return 0 ; }
メンテ

Page: 1 |

Re: 文字が重なり、重なった文字が変 ( No.1 )
名前:? 日時:2013/07/21 08:07

onemoji[2]='\n'; ↓ onemoji[2]='\0'; 文字列の最後は\0です
メンテ
Re: 文字が重なり、重なった文字が変 ( No.2 )
名前:ryo 日時:2013/07/21 11:50

?さん、ありがとうございます
メンテ
Re: うまく作動しない ( No.3 )
名前:ryo 日時:2013/07/24 10:45

 メニュー画面を作りたいのですが、うまくカーソルが上下してくれません、その上、画面モードも切り替わりません   #include "DxLib.h" void start(void); void road(void); int cr1,sp; void(*Method[])(void)= { start,road }; char *String[]= { "start", "road", "quit" }; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { if(DxLib_Init() == -1) { return -1; } SetGraphMode(800,600,32); sp=0;int sentakusi=0; cr1=GetColor(255,255,200); while(String[sentakusi]!=NULL) { DrawString(32,sentakusi*32,String[sentakusi],cr1); sentakusi++; } while(ProcessMessage()==0) { DrawBox(0,0,32,sentakusi*32,0,TRUE); DrawBox(0,sp*32,16,sp*32+16,cr1,TRUE); { while(ProcessMessage()==0 && CheckHitKeyAll()!=0) while(ProcessMessage()==0 && CheckHitKeyAll()==0) if(CheckHitKey(KEY_INPUT_UP)!=0 && sp!=0) sp--; if(CheckHitKey(KEY_INPUT_DOWN)!=0&&sp<sentakusi-1)sp++; if(CheckHitKey(KEY_INPUT_Z)!=0) { Method[sp]; WaitKey(); break; } } } WaitKey(); DxLib_End(); return 0; } void start(void) { SetBackgroundColor(0,255,0); } void road(void) { SetBackgroundColor(0,255,200); }
メンテ
Re: 文字が重なり、重なった文字が変 ( No.4 )
名前:いっち 日時:2013/07/24 20:17

以下のように修正することで動作すると思います。 //-- 以下、テストコード --// #include "DxLib.h" void start(void); void road(void); int cr1,sp; void(*Method[])(void)= { start,road }; char *String[]= { "start", "road", "quit" }; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { if(DxLib_Init() == -1) { return -1; } SetGraphMode(800,600,32); sp=0;int sentakusi=0; cr1=GetColor(255,255,200); while(String[sentakusi]!=NULL) { DrawString(32,sentakusi*32,String[sentakusi],cr1); sentakusi++; } while(ProcessMessage()==0) { DrawBox(0,0,32,sentakusi*32,0,TRUE); DrawBox(0,sp*32,16,sp*32+16,cr1,TRUE); { while(ProcessMessage()==0 && CheckHitKeyAll()!=0) ; //修正 while(ProcessMessage()==0 && CheckHitKeyAll()==0) ; //修正 if(CheckHitKey(KEY_INPUT_UP)!=0 && sp!=0) sp--; if(CheckHitKey(KEY_INPUT_DOWN)!=0&&sp<sentakusi-1)sp++; if(CheckHitKey(KEY_INPUT_Z)!=0) { Method[sp](); //修正 WaitKey(); break; } } } WaitKey(); DxLib_End(); return 0; } void start(void) { SetBackgroundColor(0,255,0); ClearDrawScreen(); //修正 } void road(void) { SetBackgroundColor(0,255,200); ClearDrawScreen(); //修正 }
メンテ
Re: 文字が重なり、重なった文字が変 ( No.5 )
名前:ryo 日時:2013/07/24 22:28

いっちさん ありがとうございます
メンテ
Re: 文字が重なり、重なった文字が変 ( No.6 )
名前:ryo 日時:2013/07/25 00:44

グローバル スコープで 'void (' が見つかりました。 というエラーがでるのですが、どうしたらよいのでしょうか
メンテ
Re: 文字が重なり、重なった文字が変 ( No.7 )
名前:ryo 日時:2013/07/25 00:56

プログラムはこれです #include "DxLib.h" #define MOJI_SIZE 24 #define yokoB 24 #define tateB 20 void start(void); void road(void); void kaigyou (void); int cr1,sp,end,Waitflag; int DrowPointX,DrowPointY=0; int yoko,tate; char mojiBuf[yokoB][tateB*2+1]; char moji[][200]= {"","","" } void(*Method[])(void)= { start,road }; char *String[]= { "start", "road", "quit" }; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { if(DxLib_Init() == -1) { return -1; } SetGraphMode(800,600,32); sp=0;int sentakusi=0; cr1=GetColor(255,255,200); while(String[sentakusi]!=NULL) { DrawString(32,sentakusi*32,String[sentakusi],cr1); sentakusi++; } while(ProcessMessage()==0) { DrawBox(0,0,32,sentakusi*32,0,TRUE); DrawBox(0,sp*32,16,sp*32+16,cr1,TRUE); { while(ProcessMessage()==0 && CheckHitKeyAll()!=0); while(ProcessMessage()==0 && CheckHitKeyAll()==0); if(CheckHitKey(KEY_INPUT_UP)!=0 && sp!=0) sp--; if(CheckHitKey(KEY_INPUT_DOWN)!=0&&sp<sentakusi-1)sp++; if(CheckHitKey(KEY_INPUT_Z)!=0) { Method[sp](); WaitKey(); break; } } } WaitKey(); DxLib_End(); return 0; } void start(void) { char onemoji[3]; int i,j,count=0; SetDrawScreen(DX_SCREEN_BACK); tate=0;yoko=0; while(ProcessMessage()==0&& CheckHitKey(KEY_INPUT_ESCAPE)==0) { if(end==0) { char moji1; if(Waitflag ==1) { if(ProcessMessage()==0 && CheckHitKeyAll()!= 0) { Waitflag=0; } } else { moji1=moji[tate][yoko]; switch(moji1) { case'@': kaigyou(); yoko++; break; case'b': while(ProcessMessage()==0 && CheckHitKeyAll()!=0){} Waitflag=1; yoko++; break; case'e': end=1; yoko++; break; case'c': for(i=0;i<tateB;i++) { for(j=0;j<yokoB*2;j++) { mojiBuf[i][j]=0; } } DrowPointX=0; DrowPointY=0; yoko++; break; default: onemoji[0]=moji[tate][yoko]; onemoji[1]=moji[tate][yoko+1]; onemoji[2]='\0'; mojiBuf[DrowPointY][DrowPointX*2]=onemoji[0]; mojiBuf[DrowPointY][DrowPointX*2+1]=onemoji[1]; yoko+=2; DrowPointX++; if(DrowPointX>=yokoB) kaigyou(); break; } if(moji[tate][yoko]=='\0') { tate++; yoko=0; } ClearDrawScreen(); { SetBackgroundColor(0,255,0); DrawBox(0,0,640,480,cr1,TRUE); count++; } for(i=0;i<tate;i++) { DrawString(8,i*MOJI_SIZE,mojiBuf[i],cr1); } ScreenFlip(); } } } } void kaigyou(void) { DrowPointY++; DrowPointX=0; if(DrowPointY>=tateB) { int i,j; for(i=1;i<tateB;i++) { for(j=0;j<yokoB*2;j++) { moji[i-1][j]=moji[i][j]; } } DrowPointY--; } } void road(void) { SetBackgroundColor(0,255,200); ClearDrawScreen(); } 長くてすみません
メンテ
Re: 文字が重なり、重なった文字が変 ( No.8 )
名前:いっち 日時:2013/07/25 21:26

変数 moji の定義の文末(変数 Method の定義の直前)にセミコロンが抜けています。
メンテ
Re: 文字が重なり、重なった文字が変 ( No.9 )
名前:ryo 日時:2013/07/28 20:37

いっちさん ありがとうございました
メンテ
Re: 文字が重なり、重なった文字が変 ( No.10 )
名前:ryo 日時:2013/07/28 21:29

moji[][200]の文字表示後にゴミが表示され終わりません   考えられるエラーを教えてください 何度も質問すみません
メンテ
Re: 文字が重なり、重なった文字が変 ( No.11 )
名前:はるかぜ 日時:2013/07/29 12:18

終端文字が無いんじゃないですかね
メンテ
Re: 文字が重なり、重なった文字が変 ( No.12 )
名前:いっち 日時:2013/07/29 22:35

どのような文字列を表示させようとしているのか分かりませんが、 以下のように文字列の最後に小文字の'e'が必要です。 > "何もわからないまま、目の前のモニターに明りが付く。be"
メンテ
Re: 文字が重なり、重なった文字が変 ( No.13 )
名前:ryo 日時:2013/08/03 13:32

お礼が遅くなって済みません お二人の方、ありがとうございます
メンテ
Re: 文字が重なり、重なった文字が変 ( No.14 )
名前:ryo 日時:2013/08/03 14:35

マウスのクリックした位置を取得、それを使った分岐を作りたいのですが、どうすればよいのでしょうか
メンテ
Re: 文字が重なり、重なった文字が変 ( No.15 )
名前:管理人 日時:2013/08/03 17:26

マウスの左ボタンが押されているかどうかは if( GetMouseInput() & MOUSE_INPUT_LEFT ) で判断することができます マウスポインタの座標は関数 GetMousePoint を使用することで取得できますので、 あとは得られた情報と if 文で分岐を組めば目的の処理ができると思います
メンテ
Re: 文字が重なり、重なった文字が変 ( No.16 )
名前:ryo 日時:2013/08/04 22:14

管理人さん回答ありがとうございます startを選択後、文字を表示したのですが、表示したあと、キーボードを適当に押すと、同じ文字が再び表示されます 一度だけ表示をするために、どう改善したらよいのかわかりません また、画像の読み込みをしたいのですが、うまくいきません 画像を置く場所や、LoadGraphScreenに記述する事を詳しく教えていただきたいです 何度もすみません #include "DxLib.h" #define MOJI_SIZE 24 #define yokoB 24 #define tateB 20 void start(void); void road(void); void mojire(void); void kaigyou (void); void gamen(void); int cr1,cr2,sp,end,Waitflag; int DrowPointX,DrowPointY=0; int yoko,tate; char mojiBuf[yokoB][tateB*2+1]; char moji[][200]= {"一行","二行","三行E"}; void(*Method[])(void)= { start,road }; char *String[]= { "start", "road", "quit" }; void start(void) { mojire(); LoadGraphScreen(0,0,"Debug/iriguti.jpg",FALSE); ClearDrawScreen(); WaitKey(); } void mojire(void) { char onemoji[3]; int i,j,count=0; SetDrawScreen(DX_SCREEN_BACK); tate=0;yoko=0; end=0; while(ProcessMessage()==0&& CheckHitKey(KEY_INPUT_ESCAPE)==0) { char moji1; if(Waitflag ==1) { if(ProcessMessage()==0 && CheckHitKeyAll()!= 0) { Waitflag=0; } } else { moji1=moji[tate][yoko]; switch(moji1) { case'@': kaigyou(); yoko++; break; case'B': WaitKey(); yoko++; break; case'E': end=1; yoko++; break; default: onemoji[0]=moji[tate][yoko]; onemoji[1]=moji[tate][yoko+1]; onemoji[2]='\0'; mojiBuf[DrowPointY][DrowPointX*2]=onemoji[0]; mojiBuf[DrowPointY][DrowPointX*2+1]=onemoji[1]; yoko+=2; DrowPointX++; if(DrowPointX>=yokoB) kaigyou(); break; } if(end== 1)break; if(moji[tate][yoko]=='\0') { tate++; yoko=0; } ClearDrawScreen(); { SetBackgroundColor(150,200,255); DrawBox(0,0,640,480,cr2,TRUE); count++; } for(i=0;i<tate;i++) { DrawString(8,i*MOJI_SIZE,mojiBuf[i],cr1); } ScreenFlip(); } } WaitKey(); } void gamen(void) { } void kaigyou(void) { DrowPointY++; DrowPointX=0; if(DrowPointY>=tateB) { int i,j; for(i=1;i<tateB;i++) { for(j=0;j<yokoB*2;j++) { moji[i-1][j]=moji[i][j]; } } DrowPointY--; } } void road(void) { SetBackgroundColor(0,255,200); ClearDrawScreen(); } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { if(DxLib_Init() == -1) { return -1; } SetGraphMode(800,600,32); sp=0;int sentakusi=0; cr1=GetColor(255,255,0); cr2=GetColor(200,255,100); while(String[sentakusi]!=NULL) { DrawString(32,sentakusi*32,String[sentakusi],cr1); sentakusi++; } while(ProcessMessage()==0) { DrawBox(0,0,32,sentakusi*32,0,TRUE); DrawBox(0,sp*32,16,sp*32+16,cr1,TRUE); { while(ProcessMessage()==0 && CheckHitKeyAll()!=0); while(ProcessMessage()==0 && CheckHitKeyAll()==0); if(CheckHitKey(KEY_INPUT_UP)!=0 && sp!=0) sp--; if(CheckHitKey(KEY_INPUT_DOWN)!=0&&sp<sentakusi-1)sp++; if(CheckHitKey(KEY_INPUT_Z)!=0) { Method[sp](); WaitKey(); break; } } } start(); DxLib_End(); return 0; }
メンテ
Re: 文字が重なり、重なった文字が変 ( No.17 )
名前:管理人 日時:2013/08/08 23:14

よろしければこちらのページをご覧になってみてください http://homepage2.nifty.com/natupaji/DxLib/dxlecture_main.html DXライブラリの基礎的な使い方と画像の動かし方などの解説をしています
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存