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

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

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

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

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

DXライブラリ

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

Q&A

3回答

4003閲覧

【C++/DxLib】キー入力の監視について

q-fukutomo

総合スコア53

C++

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

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

DXライブラリ

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

0グッド

2クリップ

投稿2014/11/29 08:23

現在C++とDxLibを使用し、ノベルゲームのエンジンを作成中です。
ノベルゲーム風に一文字ずつ表示するを参考に文字を一文字ずつ描画するところまでは実装できました。

そこで、今度は一字ずつ描画している最中にRETURNキーが入力された場合、その行をすべて表示する。
という風にしたいのですが、その場合どうすれば良いのでしょうか?

イメージとしては、描画処理とキー入力の監視を並列で行い、キー入力が行われた場合は描画処理側の変数の値を変更する
といった感じにしたいです。

よろしくお願いします。

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

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

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

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

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

guest

回答3

0

Update()でcurr_idxにcurr_lenを代入すれば良いのでは?
しっかりと読めていないので何とも言えませんが、

lang

128 int curr_idx; // 逐次描画対象行のインデックス 229 int curr_len; // 逐次描画対象行の描画済み文字列長さ

とある以上一気に現在位置を文字列の長さと同じにすればすべて表示されるのではないかと思います。
よって

lang

1void WrapText::update() 2{ 3 char mb; 4 if (CheckHitKey(KEY_INPUT_RETURN)){ 5 curr_idx = curr_len 6 } 7 if (line_len[curr_idx] > curr_len) { 8 /* 逐次描画対象行に文字列が残っているとき */ 9 // 一文字ずつ描画対象を伸ばしていく 10 mb = buf[line_top[curr_idx] + curr_len]; 11 ++curr_len; 12 if (isLeadShiftJIS(mb)) { 13 ++curr_len; 14 } 15 } 16 else { 17 /* 逐次描画対象行に文字列が残っていないとき */ 18 if (curr_idx < line_num - 1) { 19 // 次の行に逐次描画対象を移す 20 ++curr_idx; 21 curr_len = 0; 22 } 23 } 24}

などとすればいいのではないでしょうか。

間違っていたらすいません。

投稿2015/01/22 17:33

jyomu

総合スコア10

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

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

0

ちょっと強引かもしれませんが、
RETURNキーが押された時の処理に
for (int i = 0; i < 1000; ++i) wt.update();
と書くと良いのではないでしょうか。

投稿2015/01/21 14:04

m.h

総合スコア149

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

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

0

一文字ずつ表示する関数があるとすればそれを最後までやるだけだと思いますが・・・

具体的にどの部分で困ってるのか教えてほしいです

投稿2014/12/18 23:44

takuya2048

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問