文字列の改行について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
samusu0905
記事: 336
登録日時: 10年前

文字列の改行について

#1

投稿記事 by samusu0905 » 8年前

ゲーム画面に文字列を表示させることは出来ましたが、文字を次の行に改行する方法がわかりません。
C言語の場合、printf()関数で¥nをいれると改行できるのは知ってますが、
DXLibで文字列の改行ってどうすればできますか?
一応、DrawString()関数とDrawFormatString()関数は使用してます。
上記の関数DrawString()などで¥nを入力すると・が表示されて、改行できませんでした。

返答お願いします。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 文字列の改行について

#2

投稿記事 by みけCAT » 8年前

samusu0905 さんが書きました:DXLibで文字列の改行ってどうすればできますか?
自前でやればできます。
例えば

コード:

#include <DxLib.h>
#include <cstring>

void DrawMoziretu(int x, int y, int lineHeight, const char *str, int color) {
	char *strBuf = new char[strlen(str) + 1];
	strcpy(strBuf, str);
	char *line = strtok(strBuf, "\n");
	do {
		DrawString(x, y, line, color);
		y += lineHeight;
	} while ((line = strtok(NULL, "\n")) != NULL);
	delete[] strBuf;
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	if (ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() != 0) return -1;
	SetDrawScreen(DX_SCREEN_BACK);

	while (ProcessMessage() == 0 && ClearDrawScreen() == 0) {
		DrawMoziretu(20, 20, 30, "阿澄佳奈\n喜多村英梨\n釘宮理恵\n松来未祐", GetColor(255, 255, 255));
		ScreenFlip();
	}

	DxLib_End();
	return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

samusu0905
記事: 336
登録日時: 10年前

Re: 文字列の改行について

#3

投稿記事 by samusu0905 » 8年前

返答有難うございます。
丁寧にコードの提示を有難うございます。
さっそく実践した結果、文字列の改行に成功しました。
改めて思いましたが、自分で関数を作ってプログラムを組み立てていくということの大事さが分かりましたw

色々と有難うございます!

閉鎖

“C言語何でも質問掲示板” へ戻る