From 4a3ed80f51245c429086f2467097c03ec753d35b Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Sat, 20 Feb 2021 21:37:23 +0100 Subject: i&m: add exercise of 14th feb 2018 --- Year_2/IandM/02142018/02142018.pde | 27 +++++++++++++++ Year_2/IandM/02142018/Heart.pde | 67 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 Year_2/IandM/02142018/02142018.pde create mode 100644 Year_2/IandM/02142018/Heart.pde (limited to 'Year_2/IandM') diff --git a/Year_2/IandM/02142018/02142018.pde b/Year_2/IandM/02142018/02142018.pde new file mode 100644 index 0000000..6bc87ab --- /dev/null +++ b/Year_2/IandM/02142018/02142018.pde @@ -0,0 +1,27 @@ +ArrayList hearts = new ArrayList(); +void setup() { + size(512, 512); + background(#011146); + frameRate(60); +} +void draw() { + fill(#011146, 100); + rect(0, 0, width, height); + + if ((int)random(1, 101) <= 5) { + Heart tmp = new Heart((int)random(0, width), height/2+10); + hearts.add(tmp); + } + + for (Heart h : hearts) { + h.draw(); + } +} + +void mouseClicked() { + for (Heart h : hearts) { + if (dist(h.positionx(), h.positiony(), mouseX, mouseY) < 30) { + h.die(); + } + } +} diff --git a/Year_2/IandM/02142018/Heart.pde b/Year_2/IandM/02142018/Heart.pde new file mode 100644 index 0000000..8ac93a6 --- /dev/null +++ b/Year_2/IandM/02142018/Heart.pde @@ -0,0 +1,67 @@ + +class Heart { + private boolean status; + private int posx; + private int posy; + private float speedx; + private float speedy; + private int Q = 1948; + + public Heart(int posx, int posy) { + this.status = true; + this.posx = posx; + this.posy = posy; + } + + public boolean is_alive() { + return this.status; + } + + private float f() { + return (this.Q%21)/80; + } + + public void die() { + this.status = false; + } + + public void draw() { + smooth(); + noStroke(); + if (this.is_alive()) { + fill(#C41212); + } else { + fill(#DDDDDD); + } + this.speedx = random(-5, 6.0); + this.speedy = random(3, 8.0); + if (!this.is_alive()) { + this.speedy += 0.1+this.f(); + this.posy += this.speedy; + } else { + this.posy -= this.speedy; + } + + this.posx -= this.speedx; + + pushMatrix(); + translate(-30+this.posx, -5+this.posy); + + beginShape(); + vertex(50, 15); + bezierVertex(50, -5, 90, 5, 50, 40); + vertex(50, 15); + bezierVertex(50, -5, 10, 5, 50, 40); + endShape(); + + popMatrix(); + } + + public int positionx() { + return this.posx; + } + + public int positiony() { + return this.posy; + } +} -- cgit v1.2.3-18-g5258