Assingment 3: Seven Lives /ᐠ。ꞈ。ᐟ\

Concept:

In this project I wanted to create something cute and there’s nothing cuter than cats! So, adding the saying “cats have seven lives” I implemented it by adding my very own drawing of a cat that appears within seven clicks. After clicking seven times the background restarts.

Cat speedDraw

Highlight of Code: 

Using this class code I have set the randomness of my images to follow a certain pattern within a limited sized canvas.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
class Cat {
constructor(x, y, img) {
this.x = x;
this.y = y;
this.img = img;
this.angle = random(TWO_PI);
this.speedX = random(1, 3);
this.speedY = random(1, 3);
}
update() {
this.x += this.speedX * cos(this.angle);
this.y += this.speedY * sin(this.angle);
if (this.x < 0 || this.x > width) {
this.angle = PI - this.angle;
}
if (this.y < 0 || this.y > height) {
this.angle = -this.angle;
}
}
display() {
imageMode(CENTER);
image(this.img, this.x, this.y);
}
}
class Cat { constructor(x, y, img) { this.x = x; this.y = y; this.img = img; this.angle = random(TWO_PI); this.speedX = random(1, 3); this.speedY = random(1, 3); } update() { this.x += this.speedX * cos(this.angle); this.y += this.speedY * sin(this.angle); if (this.x < 0 || this.x > width) { this.angle = PI - this.angle; } if (this.y < 0 || this.y > height) { this.angle = -this.angle; } } display() { imageMode(CENTER); image(this.img, this.x, this.y); } }
class Cat {
  constructor(x, y, img) {
    this.x = x;
    this.y = y;
    this.img = img;
    this.angle = random(TWO_PI);
    this.speedX = random(1, 3);
    this.speedY = random(1, 3);
  }

  update() {
    this.x += this.speedX * cos(this.angle);
    this.y += this.speedY * sin(this.angle);

    if (this.x < 0 || this.x > width) {
      this.angle = PI - this.angle;
    }

    if (this.y < 0 || this.y > height) {
      this.angle = -this.angle;
    }
  }

  display() {
    imageMode(CENTER);
    image(this.img, this.x, this.y);
  }
}

In this set of codes I was able to put together the idea of clicking the screen seven times to make the program alternate between a random image of both my drawings. When making the eighth click the program restarts.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function mouseClicked() {
if (numClicks < maxClicks) {
let catImage = catImages[numClicks % 2]; // Alternate between cat images
let cat = new Cat(mouseX, mouseY, catImage);
cats.push(cat);
numClicks++;
} else {
// Reset after 7 clicks
cats = [];
numClicks = 0;
}
}
function mouseClicked() { if (numClicks < maxClicks) { let catImage = catImages[numClicks % 2]; // Alternate between cat images let cat = new Cat(mouseX, mouseY, catImage); cats.push(cat); numClicks++; } else { // Reset after 7 clicks cats = []; numClicks = 0; } }
function mouseClicked() {
  if (numClicks < maxClicks) {
    let catImage = catImages[numClicks % 2]; // Alternate between cat images
    let cat = new Cat(mouseX, mouseY, catImage);
    cats.push(cat);
    numClicks++;
  } else {
    // Reset after 7 clicks
    cats = [];
    numClicks = 0;
  }
}

Reflection and Ideas for Future Work:

This work took me so long and probably the ones with the most errors. I keep forgetting to add my class codes. I also had a problem with uploading my images without adding any additional local programs as suggested in different websites. After resizing my images and going through my code multiple times I finally got it running.

Edit: https://editor.p5js.org/mariamalkhoori/sketches/6hPD6jbgn

Leave a Reply