sketch
//Robert Rice
//rdrice
//section c
var sun = {filename:'https://i.imgur.com/74H6zli.png', //original URL https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/7bcda634-15a0-43a8-9de8-2800412220c0/datjxhn-b3b3c9fa-946d-43e2-b2b4-28dc84b56ca0.png/v1/fit/w_150,h_150,strp/retrowave_sun_with_alpha_background_by_robilo_datjxhn-150.png?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOjdlMGQxODg5ODIyNjQzNzNhNWYwZDQxNWVhMGQyNmUwIiwiaXNzIjoidXJuOmFwcDo3ZTBkMTg4OTgyMjY0MzczYTVmMGQ0MTVlYTBkMjZlMCIsIm9iaiI6W1t7ImhlaWdodCI6Ijw9MTAyNCIsInBhdGgiOiJcL2ZcLzdiY2RhNjM0LTE1YTAtNDNhOC05ZGU4LTI4MDA0MTIyMjBjMFwvZGF0anhobi1iM2IzYzlmYS05NDZkLTQzZTItYjJiNC0yOGRjODRiNTZjYTAucG5nIiwid2lkdGgiOiI8PTEwMjQifV1dLCJhdWQiOlsidXJuOnNlcnZpY2U6aW1hZ2Uub3BlcmF0aW9ucyJdfQ.sdt5sozezYuJLi-b3ecAoqszmafFkXh8VGg3G1-YSqE
x:300,
y:175,
drawFunc: drawImg}
var mustang = {filename:'https://i.imgur.com/ZQ6wSq5.png', //I DREW THIS (i traced it but still)
x:100,
y:279,
drawFunc: drawImg}
var wheels = {filename:'https://i.imgur.com/5edjrVN.png', //I DREW THIS (okay i traced but still its technically original)
x:103,
y:289,
drawFunc: drawImg}
var dx = 2; //the speed at which the furthest background objects pass by
var marketvalue = []; //Reusing my code from assignment 07-a to make an undulating middleground
var noiseParam = 0;
var noiseStep = 0.005;
var n; //end reused code, appears as DUNES below
var hills=[];
var sign = 1 //the value that the car is pushed up/down by
var pushCount = 0 //keeps track of how far the car has bumped up/down
function preload() {
// call loadImage() and loadSound() for all media files here
sun.image = loadImage(sun.filename);
mustang.image = loadImage(mustang.filename);
wheels.image = loadImage(wheels.filename);
}
function setup() {
createCanvas(500, 300);
background(0);
imageMode(CENTER);
strokeWeight(5);
stroke(119, 179, 0);
n = (width / 5) + 1 //sets up initial points for the dunes
for(i = 0; i <= n; i++) {
noiseParam = noiseStep*i
marketvalue[i] = (noise(noiseParam) * 150)+150;
}
}
function draw() {
//BEGIN BACKGROUND
push();
background(38, 0, 77); //gradient background
for(i=0; i<300; i++) {
strokeWeight(1);
stroke(255-(0.723*i), 77-(0.256*i), 196-(0.396*i))
line(0, 299-i, 500, 299-i);
}
sun.drawFunc(150, 150); //background Sun
pop();
//END BACKGROUND
//BEGIN HILLS. makes some hills/mesas that lazily move along in the background
push();
if(random(1) > 0.99) {
makeHill(random(50, 200), random(50, 125), color(random(169, 189), random(49, 69), random(0, 10)));
}
var numH = hills.length;
if (numH > 0) {
for (i=0; i<numH; i++) {
hills[i].drawFunc();
hills[i].upFunc();
}
if (hills[0].x+hills[0].r < 0) {
hills.shift();
}
}
pop();
//END HILLS
//BEGIN DUNES (the 07-a reused code i mentioned)
push();
marketvalue.shift(); //gets rid of the first value in the list in order to make room for a new one
strokeWeight(5);
stroke(179, 119, 0);
fill(204, 170, 0);
beginShape();
vertex(0, height);
for(i=0; i<n; i++) {
vertex(5*i, marketvalue[i])
}
vertex(width, height);
endShape(CLOSE);
noiseParam = noiseParam + noiseStep; //increases the noise paramter, generates a new rolling value
marketvalue.push(noise(noiseParam)*150+150); //appends the new value
pop();
//END DUNES
//BEGIN ROAD
push();
strokeWeight(20);
stroke(150);
line(0, 295, 499, 295)
stroke(75);
line(0, 299, 499, 299);
pop();
//END ROAD
//BEGIN CAR
push();
mustang.y += sign/4
wheels.drawFunc(77, 15);
mustang.drawFunc(100, 35);
pushCount++
if (pushCount > 8) {
sign = -sign
pushCount = 0
}
pop();
//END CAR
}
//END CODE
//BEGIN HELPERFUNCTIONS
function drawImg(w, h) {
image(this.image, this.x, this.y, w, h);
}
function makeHill(r, h, c) {
var newHill = {r: r,
h: h,
x: 499,
y: 299,
drawFunc: drawHill,
upFunc: updateHill,
color: c,
speed: dx}
hills.push(newHill);
}
function drawHill() {
noStroke();
fill(this.color);
rect(this.x, this.y, this.r, -this.h);
ellipse(this.x+this.r/2, this.y-this.h, this.r, this.r);
}
function updateHill() {
this.x -= this.speed;
}