マウスの左クリック判定があいまいに判定されます。
原因が不明なので教えて下さい。(初心者なので。。)
/* 初期化 */
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.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処理を入れる方法でいきたいと思います。
No.1
- 回答日時:
あいまいに判定というのがいまひとつわからないですが、多分問題ないのではないかと思います。
処理が飛び飛びになるということだったら
コンピュータは無限のスピードを持っているわけでないので、処理にはある程度時間がかかります。その時間の経過するウチにマウスが動いてしまいます。
また、マウスの発するイベント(座標を返す)も無限に短い時間で起こっているわけではありません。(マウスの解像度ともいいます。どれだけの距離を動いたことを感知するか)
勘違いしたコメントだったらすみません。
この回答への補足
早速のお返事ありがとうございます。(^-^)ゞ
マウスを画面上で動かすと"□"の軌跡を表示するプログラムです。
右クリックした際は画面をクリアする処理です。
こちらは問題なく即座に反応します。
左クリックした際は"□"の軌跡を停止・開始させたいのですが開始したり停止したりして不安定なものになっています。
問題文章がわかりにくくてすいませんでした。m(。-_-。)m
できればコメント下されればありがたいです。
よろしくお願いします。(^人^)、オネガイッ!
お探しの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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pythonのエラーメッセージをコ...
-
Rでのデータフレーム作成について
-
Google ColaboでGUI作成
-
vba クリップボードクリアにつ...
-
フロントエンドエンジニアをし...
-
アセンブリ言語について。
-
fortran write文について マチ...
-
コトリン言語について。
-
プログラミングのやり方ざっく...
-
google Colabでmatplotlibの描...
-
Pythonで指定時間までスリープ...
-
JRのjsonファイルって使って大...
-
HTMLソースが表示のページのも...
-
VBSでテキストファイルの2行目...
-
VBAでパワーシェルを実行したい...
-
フリーランスのエンジニアって...
-
ExcelVBAでFormulaR1C1を列範囲...
-
そのまま使っただけなのに・・...
-
Lazarus(IDE2.2.6)をインスト...
-
AIのプログラムについて教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構造体のメンバをfor文で回したい
-
mailto:の本文に文字数制限はあ...
-
batファイルでtelnetを起動⇒文...
-
EXCEL VBA でユーザー定義型デ...
-
mailto:の中に&を入れる
-
UWSCで出目画像カウントしたい
-
動的にプロパティ名を変えたい
-
Bresenhamのアルゴリズムを用い...
-
Excel VBA 行を折り返すとエラー
-
携帯・PCアクセス振り分け IP...
-
Wi-Fiが繋がらなくなりました N...
-
アクセスで有給休暇管理表を作...
-
「ナスネ」がPS4と繋がらないの...
-
outlookのアドレス帳について
-
逆引き権限委譲とは?
-
ネットワークカード2枚挿し TC...
-
C言語でTCPの3way handshake
-
Windows端末でのsyslog受信につ...
-
RTX810でローカルルータとして...
-
Oculus Riftが映らない。セット...
おすすめ情報