01 Graphic Basics

1 My AI robot

Draw your first AI robot with P5js. You can use line, ellipse, rectangle and text.

AI robot

First draw your robot on the white borad, then translate it into code. Here are some drawings:

Robot code example:

let i = 0;

function setup() {
  createCanvas(320, 350);
  frameRate(4);
}

function draw() {
  background(220);

  fill(249,194,163);
  //head
  circle(150, 100, 100);
  //foot
  circle(125, 240, 50);
  circle(175, 240, 50);

  //body
  fill(96,151,235);
  rect(100, 100, 100, 140);

  //legs
  line(100, 120, 50 + i % 2 * 10, 160);
  line(200, 120, 240 - i % 2 * 10, 160);

  //hand
  fill(249,194,163);
  circle(50 + i % 2 * 10, 160, 20);
  circle(240 - i % 2 * 10, 160, 20);

  //“S”uper
  fill('yellow');
  quad(100, 120, 200, 120, 152, 160, 148, 160);
  fill('red');
  textSize(30);
  text('S', 140, 145);
  fill(255);

  i++;
}

P5Editor

Steps

Follow the steps to finish your robot:

  1. (10min) Draw robot on paper.
  2. (10min) Draw robot with white borad.
  3. (60min) Code your robot!

You can find very helpfule API information on reference page. Also below are some code examples you might use:

//shape
line(30, 20, 85, 75);
circle(30, 30, 20);
ellipse(56, 46, 55, 55);

stroke(255,255,255);
strokeWeight(3);
fill(255,255,0);
noFill();

Examples

1 Robot NIU

2 By Student Scean

3 By Student Max

4 By Student York

Discuss and explore in-depth

  1. Read the code written by your partner. Explain the code to erveryone.
  2. How to write comments when coding?
  3. Find the function that you have missed,then upgrade your code with those missing functions.

2 Mouse Events: click and drag

We use mousePressed function to process the logic when use click mouse. And mouseDragged function is for dragging a mouse.

function setup() {
  createCanvas(600, 600);
  noLoop();
}

function draw() {
  background(220);
}

let snapx;
let snapy;

function mousePressed() {
  snapx = mouseX;
  snapy = mouseY;
}

function mouseDragged() {
  let r = sqrt((mouseX-snapx)*(mouseX-snapx) + 
              (mouseY-snapy)*(mouseY-snapy))
  fill(random(255),random(255), random(255), random(100,255));
  ellipse(snapx, snapy, r, r);
  return false;
}

You can play the code here

Drag the mouse to create an picutre like this:

Use what you have learned today and change the code to make it different.

3 Weave line

Try the code below and adjust the parameter value for frameRate(), understand how it works like weaving.

let i = 0;

function setup() {
  createCanvas(400, 400);
  background(127);
  frameRate(60);
}

function draw() {
  noStroke();
  fill(129, 206, 15);
  rect(0, i, width, 10);
  fill(255);
  rect(i, 0, 10, height);
  i += 20;
}