{"id":69159,"date":"2021-11-16T11:03:36","date_gmt":"2021-11-16T16:03:36","guid":{"rendered":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/?p=69159"},"modified":"2021-11-16T11:03:36","modified_gmt":"2021-11-16T16:03:36","slug":"project-11-moving-landscape","status":"publish","type":"post","link":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/2021\/11\/16\/project-11-moving-landscape\/","title":{"rendered":"Project 11 &#8211; Moving Landscape"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><div><a class=\"p5_sketch_link\" href=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/sketch-63.js\" data-width=\"&ldquo;400&rdquo;\" data-height=\"&ldquo;200&rdquo;\">sketch<\/a>\n\n\n\n<p>Trees and birds and trees and birds<\/p><iframe src=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/plugins\/p5-embedder\/p5_iframe.html\" class=\"p5_exampleFrame\" width=\"&ldquo;400&rdquo;\" height=\"&ldquo;200&rdquo;\"><\/iframe><pre class=\"language-javascript\"><code class=\"p5_editor language-javascript\">var trees = [];\nvar birds = [];\nvar dx = -1;\n\nfunction setup() {\n    createCanvas(400, 200);\n\n    for (var i = 0; i &lt; 10; i++){ \/\/populate trees\n        var rx = random(width);\n        trees[i] = makeTree(rx);\n    }for (var i = 0; i &lt; 3; i++){ \/\/populate birds\n        var bx = random(width);\n        birds[i] = makeTree(bx);\n    }\n    frameRate(10);\n}\n\n\nfunction draw() {\n    background('lightblue');\n\n    \/\/dirt\n    noStroke();\n    fill('darkgreen');\n    rect(-10, 100, width+20, height);\n\n    updateAndDisplayTrees();\n    removeTree();\n    newTree();\n\n    updateAndDisplayBird();\n    removeBird();\n    newBird();\n\n    drawRoad();\n}\n\nfunction drawRoad() {\n    fill('grey');\n    rect(-10, 130, width+20, 30);\n\n    stroke('black');\n    var dividerLines = [];\n    for (var i = 0; i &lt; 30; i++) { \/\/make vals\n        var a = i*width\/30;\n        dividerLines.push(a);\n    } for (var i = 0; i &lt; 30; i++) { \/\/draw lines\n        line(dividerLines[i], 145, dividerLines[i]+width\/60, 145);\n    } for (var i = 0; i &lt; 30; i++) { \/\/move lines\n        dividerLines[i] += dx;\n        if (dividerLines[i] &lt;= -width\/60) {\n            dividerLines[i] = width;\n        }\n    }\n}\n\nfunction updateAndDisplayTrees(){\n    for (var i = 0; i &lt; trees.length; i++){\n        trees[i].move();\n        trees[i].display();\n    }\n}\n\nfunction updateAndDisplayBird(){\n    for (var i = 0; i &lt; birds.length; i++){\n        birds[i].move();\n        birds[i].display();\n    }\n}\n\nfunction removeTree(){\n    var treesToKeep = [];\n    for (var i = 0; i &lt; trees.length; i++){\n        if (trees[i].x &gt; -50) {\n            treesToKeep.push(trees[i]);\n        }\n    }\n    trees = treesToKeep;\n}\n\nfunction removeBird(){\n    var birdsToKeep = [];\n    for (var i = 0; i &lt; birds.length; i++){\n        if (birds[i].x &gt; -50) {\n            birdsToKeep.push(birds[i]);\n        }\n    }\n    birds = birdsToKeep;\n}\n\nfunction newTree() {\n    var newTreeLikelihood = 0.02;\n    if (random(0,1) &lt; newTreeLikelihood) {\n        trees.push(makeTree(width+50));\n    }\n}\n\nfunction newBird() {\n    var newBirdLikelihood = 0.05;\n    if (random(0,1) &lt; newBirdLikelihood) {\n        birds.push(makeBird(width));\n    }\n}\n\n\n\/\/ method to update position of Tree every frame\nfunction treeMove() {\n    this.x += this.speed * this.scal\/3;\n}\n\nfunction birdMove() {\n    this.x += this.speed;\n}\n\n\nfunction treeDisplay() {\n    push();\n    translate(this.x, 100);\n    scale(this.scal)\n    stroke('brown');\n    strokeWeight(5);\n    line(0, 0, 0, 20);\n\n    stroke('green');\n    fill('green');\n\n    for (var i = 0; i &lt; 5; i++) {\n        triangle(-20+2*i, -7*i, -2, -7*i, -2, -20-7*i);\n    } for (var i = 0; i &lt; 5; i++) {\n        triangle(20-2*i, -7*i, 2, -7*i, 2, -20-7*i);\n    }\n    pop();\n}\n\nfunction birdDisplay() {\n    push();\n    translate(this.x, this.y);\n    stroke('black');\n    noFill();\n    strokeWeight(2);\n    arc(0, 0, 20, 20, PI+PI\/3, 2*PI-PI\/3);\n    arc(10, 0, 20, 20, PI+PI\/3, 2*PI-PI\/3);\n    pop();\n}\n\n\nfunction makeTree(birthLocationX) {\n    var tree = {x: birthLocationX,\n                scal: random(0.5, 2),\n                speed: dx,\n                move: treeMove,\n                display: treeDisplay}\n    return tree;\n}\n\nfunction makeBird(birthLocationX) {\n    var bird = {x: birthLocationX,\n                y: random(0, 70),\n                speed: random(-5,-2),\n                move: birdMove,\n                display: birdDisplay}\n    return bird;\n}\n<\/code><\/pre><\/div><\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>sketch Trees and birds and trees and birds var trees = []; var birds = []; var dx = -1; function setup() { createCanvas(400, 200); for (var i = 0; i &lt; 10; i++){ \/\/populate trees var rx = random(width); trees[i] = makeTree(rx); }for (var i = 0; i &lt; 3; i++){ \/\/populate birds var &hellip; <a href=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/2021\/11\/16\/project-11-moving-landscape\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Project 11 &#8211; Moving Landscape&#8221;<\/span><\/a><\/p>\n","protected":false},"author":657,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[115,56,1],"tags":[],"_links":{"self":[{"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/posts\/69159"}],"collection":[{"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/users\/657"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/comments?post=69159"}],"version-history":[{"count":2,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/posts\/69159\/revisions"}],"predecessor-version":[{"id":69162,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/posts\/69159\/revisions\/69162"}],"wp:attachment":[{"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/media?parent=69159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/categories?post=69159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/tags?post=69159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}