HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
1020
魚犬同時押しの順番のチェック2解決


魚犬

リンク

2018/10/20(Sat) 15:45:21|NO.85618

複数の指定キーの同時押しをした際、
最後に押したキーを取得する方法はないでしょうか?

例えばメインキーボードの1キーを押しながら2を押した際、
最後に押した2を表示させたいのです。

以下の作ったソースだと上の例は上手くいくのですが、
メインキーボードの2キーを押しながら1を押した場合、
処理順番の関係で2と表示されてしまいます。

何かいい方法は無いでしょうか?

以下メインキーボードの1〜4を同時押しした際の
順番チェックの失敗例です。(タイトルバーに数字が出ます)
処理順番の関係でどのキーを同時押ししても4が最優先でされてしまいます。


repeat wait 1 getkey a1,49 : getkey a2,50 getkey a3,51 : getkey a4,52 if a1=1 & b!1 : b=1 if a2=1 & b!2 : b=2 if a3=1 & b!3 : b=3 if a4=1 & b!4 : b=4 if a1=0 & a2=0 & a3=0 & a4=0 : b=0 title ""+b loop



この記事に返信する


さか

リンク

2018/10/20(Sat) 16:30:59|NO.85620

用途が不明ですがこんな感じでどうでしょう。
キー入力情報(s_a?)を保持しておいてそれまで押されていないキーを
最後のキー入力とします。


s_a1=0: s_a2=0: s_a3=0: s_a4=0 repeat wait 1 a1=0: a2=0: a3=0: a4=0 getkey a1,49 : getkey a2,50 getkey a3,51 : getkey a4,52 if a1=1{ if s_a1=0: s_a1=1: title ""+1 }else{ s_a1=0 } if a2=1{ if s_a2=0: s_a2=1: title ""+2 }else{ s_a2=0 } if a3=1{ if s_a3=0: s_a3=1: title ""+3 }else{ s_a3=0 } if a4=1{ if s_a4=0: s_a4=1: title ""+4 }else{ s_a4=0 } loop

単純にこれだとダメですか。
複数キーを判断したければ変数で保持すれば良いと思います。

k( 0 )=49,50,51,52 i=0 repeat wait 1 getkey flg, k( i ) if flg = 1: title strf( "%c",k( i ) ) i++: if i > 3: i = 0 loop



魚犬

リンク

2018/10/20(Sat) 17:27:36|NO.85621

>>さかさん
教えていただいたソースにて希望道理の動作出来ました。
各キーの変数に状態を持たせる発想がありませんでした。
ありがとうございました!



ONION software Copyright 1997-2023(c) All rights reserved.