入力について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
パコネコ

入力について

#1

投稿記事 by パコネコ » 15年前

scanfなどを使って入力を行うときに、入力した後にエンターキーを押してデータに反映されますよね。
入力したい値は、0もしくは1なのですが、ゲーム中に’B’ボタンを押したら入力させたいのですが、
入力を行うときには
「bbbbb」
というふうに入力するときにすでにBボタンの残骸が入力される状態です。
一度「BackSpace」を押して全部消せばいいのですが、せめて入力のときに
「b」
というふうに一つしか入力できなくできないでしょうか?
よろしくお願いします。

Poco

Re:入力について

#2

投稿記事 by Poco » 15年前

現状がよくわかりません。

> 入力したい値は、0もしくは1なのですが、ゲーム中に’B’ボタンを押したら入力させたいのですが、
> 入力を行うときには
> 「bbbbb」
> というふうに入力するときにすでにBボタンの残骸が入力される状態です。

Bボタンの入力処理を行う前にBボタンの残骸がある、と言う意味ですか?
それとも、Bボタンの入力処理を行なおうとすると、複数回のBボタン入力処理を行う羽目になる(本当は1回だけ処理したい)、という意味ですか?

パコネコ

Re:入力について

#3

投稿記事 by パコネコ » 15年前

処理に入った時には、すでに残骸が入力されている状態です。

Poco

Re:入力について

#4

投稿記事 by Poco » 15年前

サンプルソースを提示できます?
#残骸が出るソースが欲しいです。

バグ

Re:入力について

#5

投稿記事 by バグ » 15年前

処理系依存ですし、本来は未定義の動作ではありますが、fflush関数で標準入力ストリームをクリアしてから、scanf関数を実行してみてはいかがでしょうか?

シエル

Re:入力について

#6

投稿記事 by シエル » 15年前

>入力したい値は、0もしくは1なのですが、ゲーム中に’B’ボタンを押したら入力させたいのですが、

結局入力したい値は何なのですか?何をしたいのか見えてきません。

パコネコ

Re:入力について

#7

投稿記事 by パコネコ » 15年前

少し違いますがこんな感じです。
<tt>
char a;
if(gl_getkeystate('B')<0){//Bボタンが押されているなら
while(gl_getkeystate('B')<0);//ボタンを離すまで待機
printf("ダンジョンの最初に\n"
"戻る:0 戻らない:1---");
scanf("%c",&a);
if(a=='0')break;//ダンジョンから抜ける。
else printf("キャンセルしました。\n");
}
</tt>
こんな感じでした。
ただscanf文を処理するときには、入力画面に「bbbb」と入ってしまっています。
scanfで なくてもいいので、入力画面のときに「b」でこれ以上入力してもバックスペースを押さない限り
入力できなくしたいのです。
注意:
gl_getkeystateはボタンが押されているかの判定ができる関数?です。

シエル

Re:入力について

#8

投稿記事 by シエル » 15年前

if(gl_getkeystate('B')<0){//Bボタンが押されているなら
while(gl_getkeystate('B')<0);//ボタンを離すまで待機

↑この辺が原因かと。


全部gl_getkeystateの関数で処理すればいいんじゃないですか?

パコネコ

Re:入力について

#9

投稿記事 by パコネコ » 15年前

>全部gl_getkeystateの関数で処理すればいいんじゃないですか?
そうですね。
一応ゲームのほうは、右ボタン左ボタンで選んで決定っというふうに作りました。
つまりこういうやつですよね。
a=0;
do{
if(gl_getkeystate('Y')<0)a=1;
if(gl_getkeystate('N')<0)a=2;
}while(a==0);

パコネコ

Re:入力について

#10

投稿記事 by パコネコ » 15年前

できれば入力の方法が知りたかったのですが…
でもゲームを作るときには、直接ボタンを押したかの判定のほうが、
いいかもしれませんね。

質問の文章が?かは、わかりませんがわかりずらい質問に付き合っていただき、
ありがとうございました。
これで、解決にしたいと思います。

閉鎖

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