Logical Operators 2 / 論理演算子 2

WM Harris教授による寄稿。1つのグローバル変数でXボックスを作成し、ブール変数とブール式を使用して条件を作成し、境界チェックを行う方法。

logical operators boundary check
Control Interaction

View Source Code

/* 
 * @name Logical Operators 2
 * @arialabel Squares travel diagonally across the screen when a rectangle on the screen is pressed
 * @frame 400,400
 * @description contributed by <a href="https://www.rit.edu/directory/wmhics-w-michelle-harris">
   <b>Prof WM Harris,</b></a> How
	to create Xboxes with one global variable and create conditions with
	boolean variables and boolean expressions by utilizing Boolean
	operators ||, &&, and ! to do boundary checking.<br/>
	<b>Functions</b>
	are created for both the canvas set up as well as the creation of
	the boxes. Background color is dependent on the location of the
	boxes in the canvas space. When mouse button and key are pressed
	simultaneously, the “where” text and box color changes to cyan,
	but if the mouse button is clicked alone then the animation will
	start. When q or Q are pressed the text “Did you type q or Q?”
	will change to blue, else it will be purple. If the mouse is placed
	within the orange box containing the text, “withinRect” then the
	shape will turn pink.
 */


//1 coordinate for everything :)
let where = 0; //control boxes' positions

function setup() {
  // createCanvas(400, 400);
  createCanvas(windowWidth, windowHeight);
}

function draw() {
  //similar to slide 4 use of OR, ||
  //to set bg color of canvas
  if ((where < 0) || (where > height)) {
    background("beige");
  } else {
    background("chocolate");
  }

  //similar to slide 4 use of AND, &&
  //to set fill color of box & text
  if (mouseIsPressed && keyIsPressed) {
    fill("cyan");
  } else {
    fill(255);
  }

  //boxL
  rect(where, where, 40);

  //boxR, pad x coordinate for size of box
  rect(width - where - 40, where, 40);

  //Move the boxes
  where = where + 1;

  //Show the value of where the boxes are
  text("where is " + where, 150, 30);

  //testing not, ! and or, || operators
  if (!(key === "q" || key === "Q")) {
    fill("purple");
  } else {
    fill("dodgerBlue");
  }
  //Show the current key value
  text("Did you type a q or Q? " + key, 150, 70);

  //*** Boundary checking ***
  //Is the mouse within rect boundary?
  //left, right, top, bottom
  let withinRect = (mouseX >= 150) &&
    (mouseX <= 150 + 100) &&
    (mouseY >= 300) &&
    (mouseY <= 300 + 40);
  //fill color based on value of withinRect
  if (withinRect) {
    fill("pink");
  } else {
    fill("orange");
  }
  //draw the rect
  rect(150, 300, 100, 40);
  //show withinRect value as label on rect
  fill(0);
  text("withinRect " + withinRect, 160, 320);
}

//boxes restart
function mousePressed() {
  //Reset boxes back up and above the canvas
  where = -50;
}

License

Source code is available on GitHub p5.js website legacy.

All examples are licensed under CC BY-NC-SA 4.0.