ページ 11

DXライブラリでの改行

Posted: 2012年4月29日(日) 11:45
by あーけお
DXライブラリで改行するにはどうすれば良いのですか?

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 12:11
by softya(ソフト屋)
残念ながら無いので自分で改行を制御します。

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 13:51
by あーけお
どのようにすればよいのでしょうか?

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 14:36
by softya(ソフト屋)
strtok関数などで改行コードを区切りとして文字列を分解して、それぞれの文字列毎に行を変えてやることで実現可能です。

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 14:54
by あーけお

コード:

 
#include "DxLib.h"
#include "stdio.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
	if(DxLib_Init()==-1){
		return -1;
	}

	int a[10][15]={
		{1, 1, 1, 1 ,2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4},	// 
		{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},	//
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},	//
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},	//
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},	//
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},	//
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},	//
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},	//
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},	//
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},	//
		};
	int x=0;
	int y=0;
	int Cr=GetColor(255, 255, 255);

	for(x=0; x<10; x++){
		for(y=0; y<15; y++){
			DrawFormatString("%d", "%d", Cr, "%d\n",250+1*x ,240-32*y ,a[x][y]) ; //①
		}
		printf("\n");
	}

	WaitKey();
	DxLib_End() ;
	return 0 ;		
}


コード中の①のようにして、配列を表示させようとしてもできないのですがどのように直すべきですか?

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 15:01
by softya(ソフト屋)
引数で数値の所に文字列を使ったり文法的に出鱈目になっています。
「DrawFormatString」 ← リファレンス
http://homepage2.nifty.com/natupaji/DxL ... tml#R17N20
まず、C言語をちゃんと理解されたほうが良いと思いますよ。

DrawFormatString("%d", "%d", Cr, "%d\n",250+1*x ,240-32*y ,a[x][y]) ; //①
ではなく
DrawFormatString(250+1*x,240-32*y, Cr, "%d" , a[x][y]) ; //①
とすれば数値は表示されると思います。

それと
printf("\n");
はグラフィック画面であるDXライブラリのウィンドウでは無意味です。

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 15:03
by だんごさん

コード:

#include "DxLib.h"
#include "stdio.h"
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
    if(DxLib_Init()==-1){
        return -1;
    }
 
    int a[10][15]={
        {1, 1, 1, 1 ,2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4},  // 
        {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},  //
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},  //
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},  //
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},  //
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},  //
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},  //
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},  //
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},  //
        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},  //
        };
    int x=0;
    int y=0;
    int Cr=GetColor(255, 255, 255);
 
    for(x=0; x<10; x++){
        for(y=0; y<15; y++){
            DrawFormatString(250+1 * x,240-32 * y, Cr, "%d", a[x][y]) ; //①
        }
	}
 
    WaitKey();
    DxLib_End() ;
    return 0 ;      
}

だと思います。
座標は%dでは表わさず、直接入力します。
これに、一定の数だけ行くと改行する仕組みをつければ良いと思います。

試してないのであってるかは別として。

(ソフト屋さんと同じ解答になってしまいました)

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 18:22
by あーけお
ありがとうございました

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 18:25
by softya(ソフト屋)
あーけお さんが書きました:ありがとうございました
解決したのでしょうか?解決のチェックマークをお願いします。
今回のは改行は関係ない & 数値を並べたい 
と言うことでよろしいですね?

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 18:50
by あーけお
いいえ未解決です

Re: DXライブラリでの改行

Posted: 2012年4月29日(日) 18:55
by softya(ソフト屋)
あーけお さんが書きました:いいえ未解決です
ご本人に残った疑問/問題点を質問してもらわないと、どういう問題が残っているか分かりませんのでお願いします。