前提
学校の課題でコンソール上で動くゲームを作っています。
今は数字を入力をさせて行動を選択させています
矢印の表示位置については、例えば下キーが入力されたら一行下に矢印を表示して上の矢印を空白などで消せばいいと見当がついています。
アローキーを入力させるのがまず分かりません。
数字で行動させている今はif文で攻撃させたりしていますが、矢印の位置で攻撃させるにはどうしたらいいかが分かりません。
実現したいこと
行動をアローキーで選んでエンターキーで決定できるようにしたい
→ 攻撃 スキル
補足情報(FW/ツールのバージョンなど)
VisualStudio2022使ってます
参考
https://teratail.com/questions/70940
これを見てもどうすれば実現すればいいのかわかりません
コンソールは基本的には表示位置を制御出来ません。
ですがそれを出来るようにする構造・ライブラリがあり、エスケープシーケンスとか curses というもので、それらを勉強しなくてはならないということです。(所謂普通のWindowsプログラムとは全く違うものです。)
os やコンソールシステムに因って様々な違いがあるかもしれませんので、ご自身の使用している環境についても理解している必要はあるでしょう。
使用している環境での「表示をクリアしてカーソル位置(:次のprintf()とかで表示が始まる位置)を一番左上に戻す」方法を探すのがとりあえずは一番手っ取り早い気がします.
system("cls") みたいな.
で,それを用いて,表示を更新する必要が出た際には毎度 全部消して→全部書く で画面更新するっていう.
表示がちらつくだとか不満は出てきそうですが.
皆様表示位置に関してコメントしてくださりありがたく大変恐縮ですが、僕はアローキーで選択してエンターキーで決定するにはどうしたらいいのかが分からないんです。
Oh...
であれば,その旨を質問文そのものに明記するとよいでしょう.(編集してあるのか.失礼.)
おそらく「キーを押した」を知る手段を探す必要があると思います.
(C言語の標準的な方法ではそれは存在しないハズなので,やはり環境固有の手段を探すことになるかと)
>アローキーで選択してエンターキーで決定するにはどうしたらいいのか
→ 攻撃
スキル
というイメージにおいてアローキーで選択という場合、上下のアローキーで"→"が上下に動いて攻撃かスキルを指すように表示が変わるという動きと見ていますが、それはあってますでしょうか。
あっているとすれば、必要な処理はアローキーの入力判定と、"→"の移動処理と思います。
入力自体は getch() 的なもので出来、"→"の移動処理の方が大変と考えているのですが、移動処理は本質問では対象としていないということでしょうか。
>一行下に矢印を表示して上の矢印を空白などで消せばいいと見当がついています
見当違いで無ければ良いですが…。