質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

2回答

3864閲覧

DXライブラリとVisual C++ を用いた文字列制御について

退会済みユーザー

退会済みユーザー

総合スコア0

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

1クリップ

投稿2017/08/16 14:48

###前提・実現したいこと
文字列を効率よく表示させたい(かえたい)。
例えば文章から一行読み取り、エンターを押したらつぎの一行へ進む等です。

現在はstr[]とstr2[]に違う文字列を設定し、flgが0のときにstr[]の文字列、flgが1のときstr2[]の文字列を表示させるようにしています。

VisualC++とDXライブラリを使用しています。

###該当のソースコード

#include "DxLib.h" int Red,Black,White; int m_hp, e_hp; int f_cont; int backHandle,mHandle; int flg; char str[] = { "あいうえお" }; char str2[] = { "かきくけこ" }; int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { ChangeWindowMode(TRUE),DxLib_Init(),SetDrawScreen(DX_SCREEN_BACK); Red = GetColor(255, 0, 0); Black = GetColor(0, 0, 0); White = GetColor(255, 255, 255); m_hp = 10; e_hp = 10; f_cont = 0; backHandle = LoadGraph("/Users/user/Pictures/bg.jpg"); mHandle = LoadGraph("/Users/user/Pictures/player.png"); flg = 0; while(ProcessMessage() == 0) { ClearDrawScreen(); DrawGraph(0, 0, backHandle, TRUE); DrawRotaGraph(120,350,0.8,0, mHandle, TRUE); DrawBox(230, 300, 620, 470, Black, TRUE); f_cont++; if (CheckHitKey(KEY_INPUT_SPACE) == 1 && f_cont == 1) { e_hp -= 5; } else if (CheckHitKey(KEY_INPUT_SPACE) == 0) { f_cont = 0; } if (CheckHitKey(KEY_INPUT_RETURN) == 1) { flg = 1; } if (flg == 0) { DrawFormatString(240, 300, White, "%s", str); } else if (flg == 1) { DrawFormatString(240, 300, White, "%s", str2); } ScreenFlip(); } DxLib_End(); return 0; }

きたないコードで申し訳ありませんが、どうかよろしくお願いいたします。

###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2017 Community
DXライブラリ
Visual C++

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんにちは。

文字列の使い方は様々な方法がありますが、固定の文字列(文字列リテラル)を多数設定して、それを切り替えるのであれば、例えば以下のような書き方ができます。

C++

1char* string_list[]= 2{ 3 "最初の文字列", 4 "2番目の文字列", 5 "3番目の文字列", 6 // 以下同様(最後の文字列には ,(カンマ) を付けないで下さい。) 7}; 8 910 11DrawFormatString(240, 300, White, "%s", string_list[index]);

indexに表示したい文字列の番号(先頭は0、次は1、...)を設定します。

投稿2017/08/17 01:44

編集2017/08/17 14:34
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Visual C++ ということで、 C++ で書かれていると思って回答します。

程度にもよりますが、私なら STL の std::stringstd::vector を使って複数の文字列を扱います。具体的には std::vector<std::string> という形で std::vector に複数の std::string を格納して std::string の内容を const char * として使うときには std::string::c_strを用いる形で出力します。

投稿2017/08/16 17:34

takano32

総合スコア87

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問