04-09 マウスイベント

学習日

2025年9月9日

名前

樋口桜大

マウスがクリックされたとかドラッグされたときのイベント処理を記述することができます。

マウスイベントを処理する関数として以下のものがあり、これらの関数内でグローバル変数のmouseXとmouseYを使ってマウス位置を取得することができます。

自分で作った図形(コードと画像)

✅ 練習問題 4-9-1

2つのコインをそれぞれ、マウスを押すたびに反転させよう。

img-1    ←ここから画像をダウンロード

コード

let front, back;
let flag = false;
let flog = false;
let x = 100, y = 100;
function preload() {
  front = loadImage('img/front.png');
  back  = loadImage('img/back.png');
}

function setup() {
  createCanvas(400, 400);
}

function draw() {
  background(255);
  if (flag)
    image(front, 0, 0, 150, 150);
  else
    image(back, 0, 0, 150, 150);
  
  if (flog)
    image(back, 200, 0, 150, 150);
  else
    image(front, 200, 0, 150, 150);
}

function mousePressed() {
  if (0 < mouseX && mouseX < 150 && 0 < mouseY && mouseY < 150)
    flag = !flag;
  if (200 < mouseX && mouseX < 350 && 0 < mouseY && mouseY < 150)
    flog = !flog;
}

📷 実行結果

それぞれ押すと、別の画像に変わる!?

✅ 練習問題 4-9-2

カードを「裏→表→裏→表…」と、交互に表示させるプログラムを作ります。
ただし、「表」を表示させるときには、2種類のカードがあり、そのどちらかがランダムに表示されるようにしよう。                                                表が出ているときにマウスを押すと、必ず裏になるようにしましょう。

img-3   ←ここから画像をダウンロード

コード

let back, front1, front2;
let flag = false;
    front1 = 1;
    front2 = 2;
let x = 100, y = 100;
function preload() {
  back = loadImage('img/cardBack.jpg');
  front1  = loadImage('img/cardFront1.jpg');
  front2  = loadImage('img/cardFront2.jpg');
}

function setup() {
  createCanvas(400, 400);
  background(255);
  image(back, 0, 0, 200, 280);
}

function draw() {
     
}

function mousePressed() {
  if (0 < mouseX && mouseX < 200 && 0 < mouseY && mouseY < 280)
  if (!flag)
    image(back, 0, 0, 200, 280);
  else {
    z = int(random(1, 3));
    if (z == 1)
      image(front1, 0, 0, 200, 280);
    else
      image(front2, 0, 0, 200, 280);
  }
  flag = !flag;
}

📷 実行結果

このカードを押すと・・・↓
または・・・↓
この画像が出るようになればOK!

まとめ・感想

・マウスをクリックしたときなどのイベントを行ったときに変化する部分をより明確にして命令するところが大切だと思った。

・4−9−2の問題では、表を出すときに二種類からランダムで画像を出すときに、小数点より下の数が出ないように命令をするようにしていきたいと思った。

・flag = !flagによる変数の変化をいつどこで使えばいいのかをしっかりと考えるようにしていきたい。

コメントする