マウスの左クリック判定があいまいに判定されます。
原因が不明なので教えて下さい。(初心者なので。。)
/* 初期化 */
screen 0,600,400
cls 4
/* MAIN */
*main
xx = mousex : yy = mousey
if (xx < 0):xx = 0
if (xx > 600):xx = 600
if (yy < 0):yy = 0
if (yy > 400):yy = 400
if (cc1 == 0){// cc1 カラー設定のフラグ
cc2++// cc2 カラー設定
if (cc2>254){
cc1=1
}
}
if (cc1 == 1){
cc2--
if (cc2==0){
cc1=0
}
}
getkey k1,2// 右クリック
getkey k2,1// 左クリック
wait 1
if ( k1 == 1){// 右クリック判定
cls 4
}
if ( k2 == 1){// 左クリック判定
flg = flg^0x01// ビット反転
}
if ((xx != xx2)||(yy != yy2)){// マウス移動確認
xx2 = xx
yy2 = yy
pos 0,0
color 0,0,0
boxf 0,0,110,20
color 255,255,255
print "xx="+xx+":yy="+yy // マウス位置情報
if (flg == 0):goto *move // 描画ルーチン
}
goto *main
*move
color cc2,cc2,cc2
line xx,yy,xx,yy+10// 四角を描画
line xx,yy,xx+10,yy
line xx+10,yy,xx+10,yy+10
line xx,yy+10,xx+10,yy+10
goto *main
No.1
- 回答日時:
あいまいに判定というのがいまひとつわからないですが、多分問題ないのではないかと思います。
処理が飛び飛びになるということだったら
コンピュータは無限のスピードを持っているわけでないので、処理にはある程度時間がかかります。その時間の経過するウチにマウスが動いてしまいます。
また、マウスの発するイベント(座標を返す)も無限に短い時間で起こっているわけではありません。(マウスの解像度ともいいます。どれだけの距離を動いたことを感知するか)
勘違いしたコメントだったらすみません。
この回答への補足
早速のお返事ありがとうございます。(^-^)ゞ
マウスを画面上で動かすと"□"の軌跡を表示するプログラムです。
右クリックした際は画面をクリアする処理です。
こちらは問題なく即座に反応します。
左クリックした際は"□"の軌跡を停止・開始させたいのですが開始したり停止したりして不安定なものになっています。
問題文章がわかりにくくてすいませんでした。m(。-_-。)m
できればコメント下されればありがたいです。
よろしくお願いします。(^人^)、オネガイッ!
No.2ベストアンサー
- 回答日時:
>開始したり停止したりして不安定なものになっています。
なるほど、それは、getkeyのタイミングに依るものだと思います。(実際には、HSPの作成者に聞いてみないとわかりませんが)
「左マウスがクリックされた」というのをどのタイミングで見つけているのか
2つ考えられると思います。
1)今まさにボタンが押されている状態である。
2)ボタンは押されて次の瞬間指は離されていて、現在はクリックされていない。
2の状態でプログラムにクリックされたということが伝わるなら問題ないですが、
1の様な場合、もう既に処理が終わっている(動作を切り替えている)のにまだ(ゆっくりクリックしていて)マウスが押されていて、次の処理(また切り替える、実質戻ってしまう)が行われてしまう。
のかもしれません。
多分、この1の場合なのでしょうね。
動作を確実なものにするためには、一端マウスがクリックされた(getkeyが1を返した)という状態からgetkeyがいったん0になるまで処理を再びしないようにするということが必要だと思います。
この回答への補足
またまた、ありがとうございました。(☆o☆)キラ~ン
*main
getkey k1,2
if (k1 == 1):print "OK"
wait 1
goto *main
stop
1回のクリックで6回もOKが表示されました。
・・・どうしよう┐(´~`)┌
もう少し考えてみます。
尚、もう少しこの問題を掲載しときます。謝謝
ヒントを貰い解決しました。
ありがとうございます。
*main
getkey k1,2
if (k1 == 1):print "OK"
wait 1
^^^^^^^^
(ここを wait 15に変更する)
goto *main
stop
ことでクリック判定が反復することがなくなりました。
もっと良い方法があるとは思いますがwait処理を入れる方法でいきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 5組のデータ (xx,yy) = (1.0 , 1.1), (2.0 , 1.0), (3.0 , 2 2023/01/09 16:52
- その他(住宅・住まい) 冬の札幌の暖房器具 4 2022/10/18 07:22
- Java Java 年数計算 3 2023/01/28 10:52
- Yahoo!メール yahooメール使用できなくなった。 1 2022/07/05 11:45
- 計算機科学 急ぎです、大学数学再帰の問題難しくてがわからないです。 以下の4つの文字列を連結して新たに生成できる 1 2023/05/17 20:11
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- 日本語 「徒歩圏内」「徒歩圏」の違い。ニュアンスも含め知りたい 5 2022/06/19 10:05
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- その他(法律) 肩書きを偽ってメールを送った場合、不正アクセス禁止法違反になるのか? 1 2023/02/18 08:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
過剰なオブジェクト指向脳から...
-
16x16のスプライトフォント
-
本格的なWebアプリを公開する時...
-
Pythonって何を意識した言語な...
-
プログラミング未経験者(殆ど未...
-
オブジェクト指向プログラミン...
-
プログラミング初心者です。 Wi...
-
vba クリップボードクリアにつ...
-
chatGPTで次々と質問をしていく...
-
家庭のパソコンで Python の 環...
-
CLispのloop内の挙動について
-
昔のパソコン少年の武勇伝「店...
-
GoogleAppsScript文字列置換の...
-
sublimit textっていうエディタ...
-
最新のプログラム言語を学ぶに...
-
初心者powershellのPS1ファイル...
-
プログラマーと学歴の関係性に...
-
pythonにてseleniumを使うも、...
-
Google ColaboでGUI作成
-
そのまま使っただけなのに・・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構造体のメンバをfor文で回したい
-
batファイルでtelnetを起動⇒文...
-
mailto:の本文に文字数制限はあ...
-
mailto:の中に&を入れる
-
動的にプロパティ名を変えたい
-
時間の平均値を計算する方法を...
-
Bresenhamのアルゴリズムを用い...
-
携帯の良番を持ってると思いま...
-
UWSCで出目画像カウントしたい
-
「HSP」で左クリック判定がうま...
-
アクセスで有給休暇管理表を作...
-
Windows端末でのsyslog受信につ...
-
MACアドレスで逮捕できる?
-
RTX810でローカルルータとして...
-
ゲームプログラミングのネット...
-
「ナスネ」がPS4と繋がらないの...
-
Oculus Riftが映らない。セット...
-
PINGに応答するメリット,デメリ...
-
TCPとUDPについて
-
Solaris8 ルーティングの設定...
おすすめ情報