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ライブラリの基礎的な使い方と画像の動かし方などの解説をしています
|
|