Week 3 | Creative Reading Reflection: The Art of Interactive Design Ch. 1 + Object-Oriented Programming Assignment

Creative Reading Reflection – The Art of Interactive Design Ch. 1:

In “The Art of Interactive Design” by Chris Crawford, the concept of interactivity is redefined as a two-way conversation, challenging conventional understanding. Crawford criticizes the misuse of interactivity and highlights its subjective nature, emphasizing the importance of user-centric design. In a tech-saturated world, prioritizing active involvement and meaningful engagement is crucial. Interactivity, according to Crawford, empowers users, giving them a voice  in digital and outside interactions. This perspective aligns with user-centric design principles, where the user’s experience is important to aim and empower users by enabling meaningful choices.

However, I couldn’t help but think disagree with his idea of subjectivity. The nature of design and interactivity is subjective, and what one person considers effective or meaningful interaction, another may not. Disagreements can arise due to these differing subjective interpretations.

Object-Oriented Programming Assignment –  Memories:

Code:

I encountered significant challenges while working on this code. I faced numerous errors, and I had to go through various video tutorials and review my notes extensively to make progress. I even sought assistance from Professor Michael. Despite the difficulties, I eventually grasped the overall concept and aimed to simplify it for my future reference and understanding. Also the longest code I have ever done.

I benefited greatly from Professor Michaels’ Object-Oriented Programming class code, particularly the example titled ‘A Simple Bouncing Ball.’ This example provided me with understanding  the concept of classes and featured a very well explained code and result. Professor Michaels’ active guidance after the class to explain and show me how to add a class to my code also significantly contributed to my learning experience.

// variables for cloud
let cloudX1, cloudX2, cloudX3, cloudX4;
let cloudY;

// cloud speed
let cloudSpeed1, cloudSpeed2, cloudSpeed3, cloudSpeed4;

// variables for sun
let sunX;
let sunY;

// variable for font
let font1;

// font function / preload the custom font
function preload(){
  font1 = loadFont("GentyDemo-Regular.ttf"); 
}

function setup() {
  createCanvas(400, 400);
  cloudX1 = random(width);
  cloudX2 = random(width);
  cloudX3 = random(width);
  cloudX4 = random(width);
  cloudY = random(50, 150);

  cloudSpeed1 = random(1, 3);
  cloudSpeed2 = random(1, 3);
  cloudSpeed3 = random(1, 3);
  cloudSpeed4 = random(1, 3);
  
  sunX = width / 2;
  sunY = height / 2;

}
 

function draw() {
  background(135, 206, 250);

  // position of clouds
  drawCloud(cloudX1, cloudY);
  drawCloud(cloudX2, cloudY + 60);
  drawCloud(cloudX3, cloudY + 120);
  drawCloud(cloudX4, cloudY + 180);

  // movement of clouds
  cloudX1 = cloudX1 + cloudSpeed1;
  cloudX2 = cloudX2 + cloudSpeed2;
  cloudX3 = cloudX3 + cloudSpeed3;
  cloudX4 = cloudX4 +cloudSpeed4;

  // reset clouds when they go off-screen
  if (cloudX1 > width) {
    cloudX1 = -50;
    cloudY = random(50, 150);
    cloudSpeed1 = random(1, 3);
  }
  if (cloudX2 > width) {
    cloudX2 = -50;
    cloudY = random(50, 150);
    cloudSpeed2 = random(1, 3);
  }
  if (cloudX3 > width) {
    cloudX3 = -50;
    cloudY = random(50, 150);
    cloudSpeed3 = random(1, 3);
  }
  if (cloudX4 > width) {
    cloudX4 = -50;
    cloudY = random(50, 150);
    cloudSpeed4 = random(1, 3);
  }
  
  // sun drawing
  fill('yellow');
  ellipse(200, 400, 200, 199);
  
  
  
  // font color, text and position
  fill(255,255,255,150);
  textSize(77);
  textFont(font1);
  text('Memories',200, 200);
  textAlign(CENTER);
  
}

function drawCloud(x, y) {
  fill(255);
  noStroke();
  ellipse(x, y, 50, 40);
  ellipse(x + 50, y + 10, 50, 40);
  ellipse(x + 30, y, 50, 40);
}
// class for clouds
class Cloud {
  constructor(cloudsx, cloudsy, cloudsspeed) {
    this.cloudsx = cloudsx;
    this.cloudsy = cloudsy;
    this.cloudsspeed = cloudsspeed;
  }

  move() {
    this.cloudsx = this.cloudsx + this.cloudsspeed;
    if (this.cloudsx > width) {
      this.cloudsx = -50;
      cloudY = random(50, 150);
      this.cloudsspeed = random(1, 3);
    }
  }

  display() {
    fill(255);
    noStroke();
    ellipse(this.cloudsx, this.cloudsy, 50, 40);
    ellipse(this.cloudsx + 50, this.cloudsy + 10, 50, 40);
    ellipse(this.cloudsx + 30, this.cloudsy, 50, 40);
  }
}

// variables for clouds
let cloud1, cloud2, cloud3, cloud4;
let cloudY;

// varibales for sun and font
let sunX;
let sunY;
let font1;

// loading the custom font
function preload() {
  font1 = loadFont("GentyDemo-Regular.ttf");
}


function setup() {
  createCanvas(400, 400);
  cloud1 = new Cloud(random(width), random(50, 150), random(1, 3));
  cloud2 = new Cloud(random(width), random(50, 150), random(1, 3));
  cloud3 = new Cloud(random(width), random(50, 150), random(1, 3));
  cloud4 = new Cloud(random(width), random(50, 150), random(1, 3));
  sunX = width / 2;
  sunY = height / 2;
}

function draw() {
  background(135, 206, 250);

  // display and move clouds
  cloud1.display();
  cloud1.move();
  cloud2.display();
  cloud2.move();
  cloud3.display();
  cloud3.move();
  cloud4.display();
  cloud4.move();

  // sun drawing
  fill('yellow');
  ellipse(200, 400, 200, 199);

  // fonts color, text, and position
  fill(255, 255, 255, 150);
  textSize(77);
  textFont(font1);
  text('Memories', 200, 200);
  textAlign(CENTER);
}

Reflection:

As I mentioned, I faced significant challenges throughout this assignment, and by “a lot,” I truly mean a substantial amount. This was my very first attempt at creating a moving and dynamic assignment, and I take pride in the thought and concept behind it, as well as the progress I made in developing the code. While I did seek assistance and revisited videos and notes, it’s all part of the learning process. It might be a simple project, but furthermore I am proud of achieving it.

 

Leave a Reply