//Julianna Bolivar
//jbolivar@andrew.cmu.edu
//Section D
//Sonic Story
var walkImage = []; //stores chick images
var walkHen = []; //stores hen images
var cornImg;
var angleCorn = 0;
var wheatImg;
var angleWheat = 0;
var snowImg = 0;
var snowY = 0;
var chirpingSound;
var cluckingSound;
var popSound;
var windSound;
function preload() {
var filenames = []; //chick images
filenames[0] = "https://i.imgur.com/Tfx9TC4.png";
filenames[1] = "https://i.imgur.com/QahosbW.png";
for (var i = 0; i < filenames.length; i++) {
walkImage[i] = loadImage(filenames[i]);
}
var fileHen = []; //hen images
fileHen[0] = "https://i.imgur.com/7p6gBTy.png";
fileHen[1] = "https://i.imgur.com/CnvJ23d.png";
for (var i = 0; i < fileHen.length; i++) {
walkHen[i] = loadImage(fileHen[i]);
}
//icon images
cornImg = loadImage("https://i.imgur.com/5qLGEX6.png");
wheatImg = loadImage("https://i.imgur.com/FjHLXeq.png");
snowImg = loadImage("https://i.imgur.com/MnUy5ko.png");
chirpingSound = loadSound("https://courses.ideate.cmu.edu/15-104/f2021/wp-content/uploads/2021/11/chirping.wav");
cluckingSound = loadSound("https://courses.ideate.cmu.edu/15-104/f2021/wp-content/uploads/2021/11/clucking.wav");
popSound = loadSound("https://courses.ideate.cmu.edu/15-104/f2021/wp-content/uploads/2021/11/pop-1.wav");
windSound = loadSound("https://courses.ideate.cmu.edu/15-104/f2021/wp-content/uploads/2021/11/wind-1.wav");
}
function makeCharacter(cx, cy, cdx, cdy) {
var c = {x: cx, y: cy, dx: cdx, dy: cdy,
walkingRight: true,
imageNum: 0,
stepFunction: stepCharacter,
drawFunction: drawCharacter
}
return c;
}
function makeHen(hx, hy, hdx, hdy) {
var h = {x: hx, y: hy, dx: hdx, dy: hdy,
walkingRight: true,
imageNum: 0,
stepFunction: stepHen,
drawFunction: drawHen
}
return h;
}
function stepCharacter(){
this.imageNum++;
if (this.imageNum > 1){
this.imageNum = 0;
}
if (this.imageNum>=walkImage.length){
this.imageNum = 0;
}
if (this.y >= 650){
this.y = 100;
}
if (this.x >= 550){ //start at right to flip
this.walkingRight = !this.walkingRight;
this.x = 50;
}
this.x += this.dx; //walk
}
function stepHen(){
this.imageNum++;
if (this.imageNum > 1){
this.imageNum = 0;
}
if (this.imageNum>=walkHen.length){
this.imageNum = 0;
}
if (this.y >= 650){
this.y = 100;
}
if (this.x >= 550){ //start at right to flip
this.walkingRight = !this.walkingRight;
this.x = 50;
}
this.x += this.dx; //walk
}
function drawCharacter(){ //chicks
if (this.walkingRight == true){
image(walkImage[this.imageNum], this.x, this.y);
}
else {
push();
translate(600, 0);
scale(-1,1); //look at canvas from behind
image(walkImage[this.imageNum], this.x, this.y);
pop();
}
}
function drawHen(){ //hen
if (this.walkingRight == true){
image(walkHen[this.imageNum], this.x, this.y);
}
else {
push();
translate(600, 0);
scale(-1,1); //look at canvas from behind
image(walkHen[this.imageNum], this.x, this.y);
pop();
}
}
var character = [];
var hen = [];
function setup() {
createCanvas(600,700);
frameRate(5);
imageMode(CENTER);
createDiv("p5.dom.js library is loaded.");
useSound();
for (var i = 50; i <=450; i += 200){ //chicks
character.push(makeCharacter(10, i, 5, 1));
}
for (var i = 50; i <=450; i += 200){ //hen
hen.push(makeHen(10, i, 5, 1));
}
}
function soundSetup() { // setup for audio generation
chirpingSound.setVolume(0.3);
cluckingSound.setVolume(0.5);
popSound.setVolume(0.5);
windSound.setVolume(0.5);
}
function draw() {
background(135,206,235);
//grass
noStroke();
fill(46,139,87);
rect(0, 510, 600, 200);
push();
translate(200, 500);
scale(0.2);
for (var i = 0; i < 2; i++){ //call functions chicks
character[i].stepFunction();
character[i].drawFunction();
}
pop();
if (frameCount >= 30){
push(); //hens to right
translate(300, 500);
scale(0.2);
for (var i = 0; i < 1; i++){ //call functions hen
hen[i].stepFunction();
hen[i].drawFunction();
}
pop();
}
if (frameCount >= 50 & frameCount < 90){ //call corn
push();
translate(300, 300);
scale(0.2);
rotate(radians(angleCorn)); //rotate corn
angleCorn += 20;
image(cornImg, 0, 0);
}
pop();
if (frameCount >= 90 & frameCount < 130){
push();
translate(300, 300);
scale(0.2);
rotate(radians(angleWheat)); //rotate wheat
angleWheat += 20;
image(wheatImg, 0, 0); //3 wheats
image(wheatImg, 300, 0);
image(wheatImg, 600, 0);
}
pop();
if (frameCount >= 130 & frameCount < 200){
push();
translate(10, 100);
scale(0.1);
for (var i = random(-10,10); i < 2000; i+=50){ //snow falls
image(snowImg, i*10, snowY);
snowY += 5;
}
pop();
}
text("p5.js 15104 fall 2021", 10, 15);
if (frameCount >= 1 & frameCount < 30){
chirpingSound.play();
}
if (frameCount == 33){
chirpingSound.stop();
}
if (frameCount >= 30 & frameCount < 35){
cluckingSound.play();
}
if (frameCount >= 50 & frameCount < 52){
popSound.play();
}
if (frameCount == 52){
popSound.stop();
}
if (frameCount >= 90 & frameCount < 92){
popSound.play();
}
if (frameCount == 92){
popSound.stop();
}
if (frameCount >= 130 & frameCount < 160){
windSound.play();
}
if (frameCount == 160){
windSound.stop();
}
}
I made the pixel art in Illustrator. My animation is based off of a lullaby in Spanish called Los Pollitos Dicen. My rendition is kind of a silly, abstract version. My mom would sing this to me often when I was a child.
In Spanish it goes;
Los pollitos dicen pío, pío, pío
Cuando tienen hambre, cuando tienen frío
La gallina busca el maíz y el trigo
Les da la comida, y les presta abrigo
Bajo sus dos alas, acurrucaditos
Duermen los pollitos hasta el otro día
English Translation;
The chicks say pío, pío, pío
When they’re hungry, and when they’re cold
The hen looks for corn and wheat
She gives them food and warmth
Under her wings, the chicks are comfy
And to the next day, the chicks are asleep