From b8e06e731a72faa0096949435d0658f6d8d3653e Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Mon, 14 Dec 2015 14:10:03 -0500 Subject: [PATCH 01/36] making class for raindrop having trouble with risincontactwith () function --- raindropGameCode/raindrop_class.pde | 44 +++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 raindropGameCode/raindrop_class.pde diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde new file mode 100644 index 0000000..5c1b0e5 --- /dev/null +++ b/raindropGameCode/raindrop_class.pde @@ -0,0 +1,44 @@ +class Raindrop { //create class for raindrop + PVector loc, vel, g; //location for raindrop + int diam, ; //diameter for raindrop + color c; //color for raindrop + + Raindrop () { + diam = 20; //diameter is 20 + loc = new PVector(random(diam, width-diam), random(diam, height-diam)); + c = color(208, 237, 247); //makes raindrop blue + vel = PVector.random2D(); //velocity with random magnitude of 1 + vel.mult(random(2, 7)); //multiplies velocity + g = new PVector (0, 0.2); //acceleration of 0,2 + } + Raindrop (float x, float y) { + diam = 20; //diameter is 20 + loc = new PVector(random(diam, width-diam), random(diam, height-diam)); + c = color(208, 237, 247); //makes raindrop blue + vel = PVector.random2D(); //velocity with random magnitude of 1 + vel.mult(random(2, 7)); //multiplies velocity + g = new PVector (0, 0.2); //acceleration of 0,2 + } + + void display () { + fill(c); //makes raindrop blue + noStroke(); //no stroke + ellipse(loc.x, loc.y, diam, diam); //creates raindrop + } + + void fall() { + loc.add(vel); //gives raindrop velocity + vel.add(g); // add gravity + } + void reset () { + loc.y = 0; //brings raindrop back to top of screen + } + boolean risInContactWith(PVector x) { + if (dist(loc.x, loc.y, mouseX, mouseY) < 10) { //if mouse is in raindrop + return true; + reset(); + } else { + return false; + } + } +} \ No newline at end of file From 22ef506f3d1a914d496efa5357706e638be8acca Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Mon, 14 Dec 2015 14:23:58 -0500 Subject: [PATCH 02/36] fixed raindrop class probably going to add random x velocity --- raindropGameCode/raindropGameCode.pde | 9 ++++++++- raindropGameCode/raindrop_class.pde | 13 +++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 944de61..aee1085 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -19,8 +19,15 @@ void draw() { r.display(); //display the raindrop if (r.isInContactWith(mouse)) { //check to see if the raindrop is in contact with the point represented by the PVector called mouse r.reset(); //if it is, reset the raindrop + println("Touched the raindrop! Resetting...."); } if (r.loc.y > height + r.diam/2) { //check to see if the raindrop goes below the bottom of the screen r.reset(); //if it does, reset the raindrop + println("You can't catch me, I'm the gingerbread raindrop! Resetting...."); } -} + + if (r.loc.x < r.diam/2) { + r.reset(); + println("Your raindrop ran away :( Resetting...."); + } +} \ No newline at end of file diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index 5c1b0e5..5e9d7c6 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -1,10 +1,10 @@ class Raindrop { //create class for raindrop PVector loc, vel, g; //location for raindrop - int diam, ; //diameter for raindrop + int diam ; //diameter for raindrop color c; //color for raindrop Raindrop () { - diam = 20; //diameter is 20 + diam = 60; //diameter is 20 loc = new PVector(random(diam, width-diam), random(diam, height-diam)); c = color(208, 237, 247); //makes raindrop blue vel = PVector.random2D(); //velocity with random magnitude of 1 @@ -12,7 +12,7 @@ class Raindrop { //create class for raindrop g = new PVector (0, 0.2); //acceleration of 0,2 } Raindrop (float x, float y) { - diam = 20; //diameter is 20 + diam = 100; //diameter is 20 loc = new PVector(random(diam, width-diam), random(diam, height-diam)); c = color(208, 237, 247); //makes raindrop blue vel = PVector.random2D(); //velocity with random magnitude of 1 @@ -32,11 +32,12 @@ class Raindrop { //create class for raindrop } void reset () { loc.y = 0; //brings raindrop back to top of screen + loc.x = random(diam/2, width - diam/2); //resets raindrop in x direction + vel.y = 0; //this way raindrop wont speed up } - boolean risInContactWith(PVector x) { - if (dist(loc.x, loc.y, mouseX, mouseY) < 10) { //if mouse is in raindrop + boolean isInContactWith(PVector x) { + if (dist(loc.x, loc.y, mouseX, mouseY) < diam/2) { //if mouse is in raindrop return true; - reset(); } else { return false; } From 19e9cd4f9e270f18ba2bf2217556d5b93815015f Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Mon, 14 Dec 2015 14:32:18 -0500 Subject: [PATCH 03/36] made arrays for raindrops --- raindropGameCode/raindropGameCode.pde | 41 ++++++++++++++++----------- raindropGameCode/raindrop_class.pde | 3 +- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index aee1085..7f08292 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -1,5 +1,10 @@ +int count = 60; //to make arrays, declare count and initialize + +Raindrop [] r = new Raindrop [count]; + + PVector mouse; //declare a P -Raindrop r; //declare a new Raindrop called r +//Raindrop r; //declare a new Raindrop called r // On your own, create an array of Raindrop objects instead of just one // Use the array instead of the single object @@ -8,26 +13,30 @@ Raindrop r; //declare a new Raindrop called r void setup() { size(1200, 800); - mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} - r = new Raindrop(random(width), 0); //Initialize r. The parameters used are the initial x and y positions + mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} + for (int i = 0; i < count; i ++) { + r [i] = new Raindrop(random(width), 0); //Initialize r. The parameters used are the initial x and y positions + } } void draw() { mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY background(0, 200, 255); - r.fall(); //make the raindrop fall. It should accelerate as if pulled towards the ground by earth's gravity - r.display(); //display the raindrop - if (r.isInContactWith(mouse)) { //check to see if the raindrop is in contact with the point represented by the PVector called mouse - r.reset(); //if it is, reset the raindrop - println("Touched the raindrop! Resetting...."); - } - if (r.loc.y > height + r.diam/2) { //check to see if the raindrop goes below the bottom of the screen - r.reset(); //if it does, reset the raindrop - println("You can't catch me, I'm the gingerbread raindrop! Resetting...."); - } + for (int i = 0; i < count; i ++) { + r[i].fall(); //make the r fall. It should accelerate as if pulled towards the ground by earth's gravity + r[i].display(); //display the raindrop + if (r[i].isInContactWith(mouse)) { //check to see if the raindrop is in contact with the point represented by the PVector called mouse + r[i].reset(); //if it is, reset the raindrop + println("Touched the raindrop! Resetting...."); + } + if (r[i].loc.y > height + r[i].diam/2) { //check to see if the raindrop goes below the bottom of the screen + r[i].reset(); //if it does, reset the raindrop + println("You can't catch me, I'm the gingerbread raindrop! Resetting...."); + } - if (r.loc.x < r.diam/2) { - r.reset(); - println("Your raindrop ran away :( Resetting...."); + if (r[i].loc.x < r[i].diam/2) { + r[i].reset(); + println("Your raindrop ran away :( Resetting...."); + } } } \ No newline at end of file diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index 5e9d7c6..89be7d8 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -9,7 +9,7 @@ class Raindrop { //create class for raindrop c = color(208, 237, 247); //makes raindrop blue vel = PVector.random2D(); //velocity with random magnitude of 1 vel.mult(random(2, 7)); //multiplies velocity - g = new PVector (0, 0.2); //acceleration of 0,2 + g = new PVector (0.1, 0.2); //acceleration of 0,2 } Raindrop (float x, float y) { diam = 100; //diameter is 20 @@ -33,6 +33,7 @@ class Raindrop { //create class for raindrop void reset () { loc.y = 0; //brings raindrop back to top of screen loc.x = random(diam/2, width - diam/2); //resets raindrop in x direction + vel.x = 0; vel.y = 0; //this way raindrop wont speed up } boolean isInContactWith(PVector x) { From 4cb606507ca9924ad97504c35c18c400708f725e Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Mon, 14 Dec 2015 14:43:05 -0500 Subject: [PATCH 04/36] updaed some stuff raindrops seem to fall weirdly at the end?? how to fix --- raindropGameCode/raindropGameCode.pde | 4 ++-- raindropGameCode/raindrop_class.pde | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 7f08292..74e9267 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -1,4 +1,4 @@ -int count = 60; //to make arrays, declare count and initialize +int count = 600; //to make arrays, declare count and initialize Raindrop [] r = new Raindrop [count]; @@ -15,7 +15,7 @@ void setup() { size(1200, 800); mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} for (int i = 0; i < count; i ++) { - r [i] = new Raindrop(random(width), 0); //Initialize r. The parameters used are the initial x and y positions + r [i] = new Raindrop(random(width), random(-height, 0)); //Initialize r. The parameters used are the initial x and y positions } } diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index 89be7d8..a2abefe 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -12,8 +12,8 @@ class Raindrop { //create class for raindrop g = new PVector (0.1, 0.2); //acceleration of 0,2 } Raindrop (float x, float y) { - diam = 100; //diameter is 20 - loc = new PVector(random(diam, width-diam), random(diam, height-diam)); + diam = 10; //diameter is 20 + loc = new PVector(x, y); c = color(208, 237, 247); //makes raindrop blue vel = PVector.random2D(); //velocity with random magnitude of 1 vel.mult(random(2, 7)); //multiplies velocity From 943aa319c1b21947d7d064cb89ba3b426d585037 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 16 Dec 2015 14:20:16 -0500 Subject: [PATCH 05/36] added bucket class havig a little bit of trouble with the constructor --- raindropGameCode/catcher.pde | 0 raindropGameCode/raindrop_class.pde | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 raindropGameCode/catcher.pde diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde new file mode 100644 index 0000000..e69de29 diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index a2abefe..bdc4370 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -12,7 +12,7 @@ class Raindrop { //create class for raindrop g = new PVector (0.1, 0.2); //acceleration of 0,2 } Raindrop (float x, float y) { - diam = 10; //diameter is 20 + diam = 40; //diameter is 20 loc = new PVector(x, y); c = color(208, 237, 247); //makes raindrop blue vel = PVector.random2D(); //velocity with random magnitude of 1 From 6f88dff89196c8fa949159b204678894ffeb90d7 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 16 Dec 2015 14:30:37 -0500 Subject: [PATCH 06/36] finished bucket constructor just need to change the isincontactwith founction --- raindropGameCode/catcher.pde | 19 +++++++++++++++++++ raindropGameCode/raindropGameCode.pde | 9 ++++++--- raindropGameCode/raindrop_class.pde | 2 +- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde index e69de29..76afe88 100644 --- a/raindropGameCode/catcher.pde +++ b/raindropGameCode/catcher.pde @@ -0,0 +1,19 @@ +class Bucket { //declare new class for catching raindrops + PVector loc; + int diam; + color c; + + Bucket (int tdiam) { //create constructor + diam = tdiam; //make size of bucket changeable + c = color (242, 81, 56); + loc = new PVector (random(width), random(height)); + } + + void display () { //function display bucket + fill(c); //makes bucket red + ellipse (loc.x, loc.y, diam, diam); + } + void update () { + loc.set(mouseX, mouseY); + } +} \ No newline at end of file diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 74e9267..138151b 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -1,6 +1,7 @@ -int count = 600; //to make arrays, declare count and initialize +int count = 1000; //to make arrays, declare count and initialize -Raindrop [] r = new Raindrop [count]; +Raindrop [] r = new Raindrop [count]; //array of raindrops +Bucket b; //make bucket catcher PVector mouse; //declare a P @@ -17,11 +18,14 @@ void setup() { for (int i = 0; i < count; i ++) { r [i] = new Raindrop(random(width), random(-height, 0)); //Initialize r. The parameters used are the initial x and y positions } + b = new Bucket(200); //bucket with diameter of 20 } void draw() { mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY background(0, 200, 255); + b.display(); + b.update(); for (int i = 0; i < count; i ++) { r[i].fall(); //make the r fall. It should accelerate as if pulled towards the ground by earth's gravity r[i].display(); //display the raindrop @@ -33,7 +37,6 @@ void draw() { r[i].reset(); //if it does, reset the raindrop println("You can't catch me, I'm the gingerbread raindrop! Resetting...."); } - if (r[i].loc.x < r[i].diam/2) { r[i].reset(); println("Your raindrop ran away :( Resetting...."); diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index bdc4370..61f5a68 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -12,7 +12,7 @@ class Raindrop { //create class for raindrop g = new PVector (0.1, 0.2); //acceleration of 0,2 } Raindrop (float x, float y) { - diam = 40; //diameter is 20 + diam = 20; //diameter is 20 loc = new PVector(x, y); c = color(208, 237, 247); //makes raindrop blue vel = PVector.random2D(); //velocity with random magnitude of 1 From af78e5cd2226cdbc0154a8801efca7fd78e15cba Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 16 Dec 2015 14:43:01 -0500 Subject: [PATCH 07/36] bucket can catch raindrops --- raindropGameCode/raindropGameCode.pde | 5 +++-- raindropGameCode/raindrop_class.pde | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 138151b..13fe382 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -24,12 +24,12 @@ void setup() { void draw() { mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY background(0, 200, 255); - b.display(); + b.update(); for (int i = 0; i < count; i ++) { r[i].fall(); //make the r fall. It should accelerate as if pulled towards the ground by earth's gravity r[i].display(); //display the raindrop - if (r[i].isInContactWith(mouse)) { //check to see if the raindrop is in contact with the point represented by the PVector called mouse + if (r[i].isInContactWith(b)) { //check to see if the raindrop is in contact with the point represented by the PVector called mouse r[i].reset(); //if it is, reset the raindrop println("Touched the raindrop! Resetting...."); } @@ -42,4 +42,5 @@ void draw() { println("Your raindrop ran away :( Resetting...."); } } + b.display(); } \ No newline at end of file diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index 61f5a68..1b86706 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -36,8 +36,8 @@ class Raindrop { //create class for raindrop vel.x = 0; vel.y = 0; //this way raindrop wont speed up } - boolean isInContactWith(PVector x) { - if (dist(loc.x, loc.y, mouseX, mouseY) < diam/2) { //if mouse is in raindrop + boolean isInContactWith(Bucket b) { + if (loc.dist(b.loc) < diam/2 + b.diam/2) { //if mouse is in raindrop return true; } else { return false; From 3fb87017e2af3661d56a5bf03760f61b9b444ce7 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Fri, 18 Dec 2015 14:26:28 -0500 Subject: [PATCH 08/36] made arraylist only one raindrop shows up...having a little bit of trouble --- raindropGameCode/raindropGameCode.pde | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 13fe382..6befdf0 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -1,6 +1,8 @@ -int count = 1000; //to make arrays, declare count and initialize +//int count = 1000; //to make arrays, declare count and initialize -Raindrop [] r = new Raindrop [count]; //array of raindrops +ArrayList = new ArrayList (); //make array list + +//Raindrop [] r = new Raindrop [count]; //array of raindrops Bucket b; //make bucket catcher @@ -15,9 +17,11 @@ PVector mouse; //declare a P void setup() { size(1200, 800); mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} - for (int i = 0; i < count; i ++) { - r [i] = new Raindrop(random(width), random(-height, 0)); //Initialize r. The parameters used are the initial x and y positions - } + + rds.add(new Raindrop(random(width), random(-height,0)); + //for (int i = 0; i < count; i ++) { + // r [i] = new Raindrop(random(width), random(-height, 0)); //Initialize r. The parameters used are the initial x and y positions + //} b = new Bucket(200); //bucket with diameter of 20 } From 2527cd19c6602b49a694ddb02fea425678ee0a03 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Fri, 18 Dec 2015 14:37:42 -0500 Subject: [PATCH 09/36] fixed arrays list now want to make it add more raindrops per frame --- raindropGameCode/raindropGameCode.pde | 57 ++++++++++++++++----------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 6befdf0..f8dded1 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -1,6 +1,6 @@ //int count = 1000; //to make arrays, declare count and initialize -ArrayList = new ArrayList (); //make array list +ArrayList rds = new ArrayList (); //make array list //Raindrop [] r = new Raindrop [count]; //array of raindrops Bucket b; //make bucket catcher @@ -17,34 +17,47 @@ PVector mouse; //declare a P void setup() { size(1200, 800); mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} - - rds.add(new Raindrop(random(width), random(-height,0)); - //for (int i = 0; i < count; i ++) { - // r [i] = new Raindrop(random(width), random(-height, 0)); //Initialize r. The parameters used are the initial x and y positions - //} - b = new Bucket(200); //bucket with diameter of 20 + for (int i = 0; i < 1000; i++) { + rds.add(new Raindrop(random(width), random(-height, 0))); + + + //for (int i = 0; i < count; i ++) { + // r [i] = new Raindrop(random(width), random(-height, 0)); //Initialize r. The parameters used are the initial x and y positions + //} + b = new Bucket(200); //bucket with diameter of 20 + } } void draw() { + println(rds.size()); mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY background(0, 200, 255); - + rds.add(new Raindrop(random(width), random(-height, 0))); b.update(); - for (int i = 0; i < count; i ++) { - r[i].fall(); //make the r fall. It should accelerate as if pulled towards the ground by earth's gravity - r[i].display(); //display the raindrop - if (r[i].isInContactWith(b)) { //check to see if the raindrop is in contact with the point represented by the PVector called mouse - r[i].reset(); //if it is, reset the raindrop - println("Touched the raindrop! Resetting...."); - } - if (r[i].loc.y > height + r[i].diam/2) { //check to see if the raindrop goes below the bottom of the screen - r[i].reset(); //if it does, reset the raindrop - println("You can't catch me, I'm the gingerbread raindrop! Resetting...."); - } - if (r[i].loc.x < r[i].diam/2) { - r[i].reset(); - println("Your raindrop ran away :( Resetting...."); + + for (int i= rds.size() - 1; i >= 0; i --) { + Raindrop r = rds.get(i); + r.display(); + r.fall(); + if (r.isInContactWith(b)) { + rds.remove(i); } } + //for (int i = 0; i < count; i ++) { + // r[i].fall(); //make the r fall. It should accelerate as if pulled towards the ground by earth's gravity + // r[i].display(); //display the raindrop + // if (r[i].isInContactWith(b)) { //check to see if the raindrop is in contact with the point represented by the PVector called mouse + // r[i].reset(); //if it is, reset the raindrop + // println("Touched the raindrop! Resetting...."); + // } + // if (r[i].loc.y > height + r[i].diam/2) { //check to see if the raindrop goes below the bottom of the screen + // r[i].reset(); //if it does, reset the raindrop + // println("You can't catch me, I'm the gingerbread raindrop! Resetting...."); + // } + // if (r[i].loc.x < r[i].diam/2) { + // r[i].reset(); + // println("Your raindrop ran away :( Resetting...."); + // } + //} b.display(); } \ No newline at end of file From 1112c076607b5fb93644fb2b42ffc82a111323e0 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Fri, 18 Dec 2015 14:38:57 -0500 Subject: [PATCH 10/36] got rid of some old array cold and stuff --- raindropGameCode/raindropGameCode.pde | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index f8dded1..2a0bf23 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -18,14 +18,9 @@ void setup() { size(1200, 800); mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} for (int i = 0; i < 1000; i++) { - rds.add(new Raindrop(random(width), random(-height, 0))); - - - //for (int i = 0; i < count; i ++) { - // r [i] = new Raindrop(random(width), random(-height, 0)); //Initialize r. The parameters used are the initial x and y positions - //} - b = new Bucket(200); //bucket with diameter of 20 + rds.add(new Raindrop(random(width), random(-height, 0))); } + b = new Bucket(200); //bucket with diameter of 20 } void draw() { @@ -34,7 +29,6 @@ void draw() { background(0, 200, 255); rds.add(new Raindrop(random(width), random(-height, 0))); b.update(); - for (int i= rds.size() - 1; i >= 0; i --) { Raindrop r = rds.get(i); r.display(); @@ -43,21 +37,6 @@ void draw() { rds.remove(i); } } - //for (int i = 0; i < count; i ++) { - // r[i].fall(); //make the r fall. It should accelerate as if pulled towards the ground by earth's gravity - // r[i].display(); //display the raindrop - // if (r[i].isInContactWith(b)) { //check to see if the raindrop is in contact with the point represented by the PVector called mouse - // r[i].reset(); //if it is, reset the raindrop - // println("Touched the raindrop! Resetting...."); - // } - // if (r[i].loc.y > height + r[i].diam/2) { //check to see if the raindrop goes below the bottom of the screen - // r[i].reset(); //if it does, reset the raindrop - // println("You can't catch me, I'm the gingerbread raindrop! Resetting...."); - // } - // if (r[i].loc.x < r[i].diam/2) { - // r[i].reset(); - // println("Your raindrop ran away :( Resetting...."); - // } - //} + b.display(); } \ No newline at end of file From beebe0fbd4a95e608548b3847de85fd58f745eab Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Fri, 18 Dec 2015 14:42:00 -0500 Subject: [PATCH 11/36] has more raindrops i mean i got it to have more raindrops now...but the arraylist size keeps increasing so idt i did it the proper way --- raindropGameCode/raindropGameCode.pde | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 2a0bf23..207dfe3 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -1,8 +1,5 @@ -//int count = 1000; //to make arrays, declare count and initialize - ArrayList rds = new ArrayList (); //make array list -//Raindrop [] r = new Raindrop [count]; //array of raindrops Bucket b; //make bucket catcher @@ -27,7 +24,9 @@ void draw() { println(rds.size()); mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY background(0, 200, 255); - rds.add(new Raindrop(random(width), random(-height, 0))); + for (int i = 0; i < 5; i++) { + rds.add(new Raindrop(random(width), random(-height, 0))); + } b.update(); for (int i= rds.size() - 1; i >= 0; i --) { Raindrop r = rds.get(i); From cbdda9ed4a7f8e304cb4e6259de672dca7a9f45a Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Mon, 4 Jan 2016 13:44:03 -0500 Subject: [PATCH 12/36] fixed some stuff with the array list --- raindropGameCode/catcher.pde | 7 ++++--- raindropGameCode/raindropGameCode.pde | 21 ++++++++++----------- raindropGameCode/raindrop_class.pde | 2 ++ 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde index 76afe88..e5bac86 100644 --- a/raindropGameCode/catcher.pde +++ b/raindropGameCode/catcher.pde @@ -1,19 +1,20 @@ class Bucket { //declare new class for catching raindrops + PVector loc; int diam; color c; Bucket (int tdiam) { //create constructor diam = tdiam; //make size of bucket changeable - c = color (242, 81, 56); + c = color (242, 81, 56); //color loc = new PVector (random(width), random(height)); } void display () { //function display bucket fill(c); //makes bucket red - ellipse (loc.x, loc.y, diam, diam); + ellipse (loc.x, loc.y, diam, diam); //draw ellipse } void update () { - loc.set(mouseX, mouseY); + loc.set(mouseX, mouseY); //set location of ellipse to mouse } } \ No newline at end of file diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 207dfe3..759e141 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -6,25 +6,21 @@ Bucket b; //make bucket catcher PVector mouse; //declare a P //Raindrop r; //declare a new Raindrop called r -// On your own, create an array of Raindrop objects instead of just one -// Use the array instead of the single object -// You can start out by just using the single Raindrop as you test + void setup() { - size(1200, 800); + size(1200, 800); //set size of screen mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} - for (int i = 0; i < 1000; i++) { - rds.add(new Raindrop(random(width), random(-height, 0))); - } + rds.add(new Raindrop(random(width), random(-height, 0))); b = new Bucket(200); //bucket with diameter of 20 } void draw() { println(rds.size()); - mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY + mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY background(0, 200, 255); - for (int i = 0; i < 5; i++) { + for (int i = 0; i < 40; i++) { rds.add(new Raindrop(random(width), random(-height, 0))); } b.update(); @@ -32,8 +28,11 @@ void draw() { Raindrop r = rds.get(i); r.display(); r.fall(); - if (r.isInContactWith(b)) { - rds.remove(i); + if (r.isInContactWith(b)) { //if a raindrop is in contact with the bucket + rds.remove(i); //remove raindrop + } + if (r.loc.y > height) { //if randrop hits the bottom of the screen + rds.remove(i); //remove raindrop } } diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index 1b86706..9edb114 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -30,12 +30,14 @@ class Raindrop { //create class for raindrop loc.add(vel); //gives raindrop velocity vel.add(g); // add gravity } + void reset () { loc.y = 0; //brings raindrop back to top of screen loc.x = random(diam/2, width - diam/2); //resets raindrop in x direction vel.x = 0; vel.y = 0; //this way raindrop wont speed up } + boolean isInContactWith(Bucket b) { if (loc.dist(b.loc) < diam/2 + b.diam/2) { //if mouse is in raindrop return true; From 8f8a10995dddfc67e980f1a3cccbeb9c0e5e36a7 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Mon, 4 Jan 2016 14:17:58 -0500 Subject: [PATCH 13/36] other stuff need to fix game over screen and the speed at which bucket decreases. also want to add smth with raindrop sizes --- raindropGameCode/raindropGameCode.pde | 30 ++++++++++++++++++++++----- raindropGameCode/raindrop_class.pde | 1 + 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 759e141..dcd6e7b 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -7,19 +7,27 @@ PVector mouse; //declare a P //Raindrop r; //declare a new Raindrop called r - +int s = 0; //declare + intialize s = score +int count = 0; //counts number of raindrops in bucket void setup() { size(1200, 800); //set size of screen mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} rds.add(new Raindrop(random(width), random(-height, 0))); - b = new Bucket(200); //bucket with diameter of 20 + b = new Bucket(200); //bucket with diameter of 100 + textAlign(CENTER); } void draw() { println(rds.size()); mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY - background(0, 200, 255); + background(0, 200, 255); //bg color + fill(255); //make scoreboard white + rect(1100, 700, 1200, 800); //draw scoreboard + fill(242, 81, 56); //score color + textSize(30); //change text size + text(s, 1150, 750); //displays score + for (int i = 0; i < 40; i++) { rds.add(new Raindrop(random(width), random(-height, 0))); } @@ -30,11 +38,23 @@ void draw() { r.fall(); if (r.isInContactWith(b)) { //if a raindrop is in contact with the bucket rds.remove(i); //remove raindrop + count++; //increase count each time bucket touches raindrop + if (count >= 200) { + s++; //increase score + count = 0; //reset count to 0 + b.diam += 10; + } + if (count <= 150 && s >= 5) { //if the bucket has caught < 150 raindrops and score is > 5 + b.diam -= .001; //decrease the bucket's diameter + } + if (b.diam <= 10) { + background(0, 200, 255); //bg color + text("GAME OVER", height/2, width/2); + } } if (r.loc.y > height) { //if randrop hits the bottom of the screen rds.remove(i); //remove raindrop } } - - b.display(); + b.display(); //display bucket } \ No newline at end of file diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index 9edb114..3fdf55d 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -11,6 +11,7 @@ class Raindrop { //create class for raindrop vel.mult(random(2, 7)); //multiplies velocity g = new PVector (0.1, 0.2); //acceleration of 0,2 } + Raindrop (float x, float y) { diam = 20; //diameter is 20 loc = new PVector(x, y); From b99eb17d63ab163064b4b5080d4fb3e427d92167 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Mon, 4 Jan 2016 14:47:38 -0500 Subject: [PATCH 14/36] asdfjk;l still have to fix a few more things --- raindropGameCode/raindropGameCode.pde | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index dcd6e7b..8de81f5 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -20,41 +20,50 @@ void setup() { void draw() { println(rds.size()); - mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY + background(0, 200, 255); //bg color + + mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY fill(255); //make scoreboard white rect(1100, 700, 1200, 800); //draw scoreboard fill(242, 81, 56); //score color textSize(30); //change text size text(s, 1150, 750); //displays score - for (int i = 0; i < 40; i++) { rds.add(new Raindrop(random(width), random(-height, 0))); } b.update(); for (int i= rds.size() - 1; i >= 0; i --) { Raindrop r = rds.get(i); - r.display(); - r.fall(); + r.display(); //displays raindrop + r.fall(); //raindrops will fall if (r.isInContactWith(b)) { //if a raindrop is in contact with the bucket rds.remove(i); //remove raindrop count++; //increase count each time bucket touches raindrop + r.diam += 5; //increase diam of raindrop if (count >= 200) { s++; //increase score count = 0; //reset count to 0 b.diam += 10; } - if (count <= 150 && s >= 5) { //if the bucket has caught < 150 raindrops and score is > 5 - b.diam -= .001; //decrease the bucket's diameter + if (count <= 199 && s >= 5) { //if the bucket has caught < 150 raindrops and score is > 5 + b.diam -= .0001; //decrease the bucket's diameter } - if (b.diam <= 10) { - background(0, 200, 255); //bg color - text("GAME OVER", height/2, width/2); + if (b.diam <= 50) { + r.diam += 5; } } if (r.loc.y > height) { //if randrop hits the bottom of the screen rds.remove(i); //remove raindrop } } + b.display(); //display bucket + + if (b.diam <= 10) { + background(0, 200, 255); //bg color + textSize(50); + text("GAME OVER", width/2, height/2); + textSize(30); + } } \ No newline at end of file From c5b6c4441cf723fc7d96679ccb290f3d3d8c81e1 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Mon, 4 Jan 2016 23:38:02 -0500 Subject: [PATCH 15/36] added snowman having difficulty making fill snowman?? why?? --- raindropGameCode/catcher.pde | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde index e5bac86..412c4bd 100644 --- a/raindropGameCode/catcher.pde +++ b/raindropGameCode/catcher.pde @@ -1,20 +1,21 @@ class Bucket { //declare new class for catching raindrops - PVector loc; int diam; + PImage s; color c; Bucket (int tdiam) { //create constructor diam = tdiam; //make size of bucket changeable - c = color (242, 81, 56); //color + c = color (242, 81, 56); + s = loadImage("snowman.png"); loc = new PVector (random(width), random(height)); } void display () { //function display bucket - fill(c); //makes bucket red - ellipse (loc.x, loc.y, diam, diam); //draw ellipse + fill(c); //will replace with snowman.png later, for some reason rn having difficulties + ellipse (loc.x, loc.y, diam, diam); } void update () { - loc.set(mouseX, mouseY); //set location of ellipse to mouse + loc.set(mouseX, mouseY); //makes loc = mouse } -} \ No newline at end of file +} From 541fc57241c25a364a70dae0873ba435ab5f8374 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Mon, 4 Jan 2016 23:55:39 -0500 Subject: [PATCH 16/36] made bucket into snowman --- raindropGameCode/catcher.pde | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde index 412c4bd..508695d 100644 --- a/raindropGameCode/catcher.pde +++ b/raindropGameCode/catcher.pde @@ -2,18 +2,17 @@ class Bucket { //declare new class for catching raindrops PVector loc; int diam; PImage s; - color c; Bucket (int tdiam) { //create constructor diam = tdiam; //make size of bucket changeable - c = color (242, 81, 56); s = loadImage("snowman.png"); loc = new PVector (random(width), random(height)); + imageMode(CENTER); //centers image } void display () { //function display bucket - fill(c); //will replace with snowman.png later, for some reason rn having difficulties - ellipse (loc.x, loc.y, diam, diam); + + image (s, loc.x, loc.y); } void update () { loc.set(mouseX, mouseY); //makes loc = mouse From 4e9db0abca025fa96fbcb6c47eb1741ab3f603e2 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 00:11:29 -0500 Subject: [PATCH 17/36] chanced isINContactWith function would like to make it more accurate but...oh well i suppose --- raindropGameCode/raindrop_class.pde | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index 3fdf55d..fba39d0 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -3,15 +3,7 @@ class Raindrop { //create class for raindrop int diam ; //diameter for raindrop color c; //color for raindrop - Raindrop () { - diam = 60; //diameter is 20 - loc = new PVector(random(diam, width-diam), random(diam, height-diam)); - c = color(208, 237, 247); //makes raindrop blue - vel = PVector.random2D(); //velocity with random magnitude of 1 - vel.mult(random(2, 7)); //multiplies velocity - g = new PVector (0.1, 0.2); //acceleration of 0,2 - } - + Raindrop (float x, float y) { diam = 20; //diameter is 20 loc = new PVector(x, y); @@ -31,19 +23,17 @@ class Raindrop { //create class for raindrop loc.add(vel); //gives raindrop velocity vel.add(g); // add gravity } - void reset () { loc.y = 0; //brings raindrop back to top of screen loc.x = random(diam/2, width - diam/2); //resets raindrop in x direction vel.x = 0; vel.y = 0; //this way raindrop wont speed up } - boolean isInContactWith(Bucket b) { - if (loc.dist(b.loc) < diam/2 + b.diam/2) { //if mouse is in raindrop + if (loc.dist(b.loc) < diam/2 + b.loc.x*.3) { //if mouse near snowman return true; } else { return false; } } -} \ No newline at end of file +} From a9605da184df0fba107c45eaf9d113cbf94f6e0e Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 00:37:44 -0500 Subject: [PATCH 18/36] asdf --- raindropGameCode/raindropGameCode.pde | 56 ++++++++++++++++----------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 8de81f5..ebce94e 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -3,8 +3,9 @@ ArrayList rds = new ArrayList (); //make array list Bucket b; //make bucket catcher -PVector mouse; //declare a P -//Raindrop r; //declare a new Raindrop called r +PVector mouse; //declare a Pvector mouse + +PImage sun; //declare pimage int s = 0; //declare + intialize s = score @@ -14,8 +15,9 @@ void setup() { size(1200, 800); //set size of screen mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} rds.add(new Raindrop(random(width), random(-height, 0))); - b = new Bucket(200); //bucket with diameter of 100 - textAlign(CENTER); + b = new Bucket(); //bucket with diameter of 100 + sun = loadImage("sun.png"); //loads sun image + textAlign(CENTER); //centers text } void draw() { @@ -29,41 +31,49 @@ void draw() { fill(242, 81, 56); //score color textSize(30); //change text size text(s, 1150, 750); //displays score + for (int i = 0; i < 40; i++) { rds.add(new Raindrop(random(width), random(-height, 0))); } - b.update(); + + b.update(); //updates b.loc as mouse + b.display(250, 278); //display bucket + for (int i= rds.size() - 1; i >= 0; i --) { - Raindrop r = rds.get(i); + Raindrop r = rds.get(i); //getting item in array rds at index i r.display(); //displays raindrop r.fall(); //raindrops will fall + if (r.isInContactWith(b)) { //if a raindrop is in contact with the bucket rds.remove(i); //remove raindrop count++; //increase count each time bucket touches raindrop r.diam += 5; //increase diam of raindrop - if (count >= 200) { + + if (count >= 500) { s++; //increase score count = 0; //reset count to 0 - b.diam += 10; + b.decrease(-10); //increase the bucket's diameter by 5 } - if (count <= 199 && s >= 5) { //if the bucket has caught < 150 raindrops and score is > 5 - b.diam -= .0001; //decrease the bucket's diameter + + if (count <= 400 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 + b.decrease(100); } - if (b.diam <= 50) { - r.diam += 5; + + if (r.loc.y > height) { //if randrop hits the bottom of the screen + rds.remove(i); //remove raindrop } } - if (r.loc.y > height) { //if randrop hits the bottom of the screen - rds.remove(i); //remove raindrop - } - } - b.display(); //display bucket + /*if (b.diam <= 10) { //if bucket's diameter < 10 + background(0, 200, 255); //bg color + textSize(50); + text("GAME OVER", width/2, height/2); //game over + textSize(30); + }*/ - if (b.diam <= 10) { - background(0, 200, 255); //bg color - textSize(50); - text("GAME OVER", width/2, height/2); - textSize(30); + if (s >= 10) { + background(0, 200, 255); //bg color + textSize(50); + text("YOU WIN", width/2, height/2); //you win + } } -} \ No newline at end of file From f7db29aa2349ebadc8834ad5f52c14ab00d5d417 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 00:38:23 -0500 Subject: [PATCH 19/36] stuff --- raindropGameCode/raindrop_class.pde | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index fba39d0..854a9f9 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -30,10 +30,11 @@ class Raindrop { //create class for raindrop vel.y = 0; //this way raindrop wont speed up } boolean isInContactWith(Bucket b) { - if (loc.dist(b.loc) < diam/2 + b.loc.x*.3) { //if mouse near snowman + if (loc.dist(b.loc) < diam/2 + b.loc.y*.3) { //if mouse near snowman return true; } else { return false; } } } +} From fa2be6615bab537a45e023ea85431295d09a8952 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 00:38:46 -0500 Subject: [PATCH 20/36] asdfffff --- raindropGameCode/catcher.pde | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde index 508695d..0921ded 100644 --- a/raindropGameCode/catcher.pde +++ b/raindropGameCode/catcher.pde @@ -2,19 +2,27 @@ class Bucket { //declare new class for catching raindrops PVector loc; int diam; PImage s; + float c, d; //control size of image - Bucket (int tdiam) { //create constructor - diam = tdiam; //make size of bucket changeable + Bucket () { //create constructor s = loadImage("snowman.png"); loc = new PVector (random(width), random(height)); imageMode(CENTER); //centers image } - void display () { //function display bucket - - image (s, loc.x, loc.y); + void display (float c, float d) { //function display bucket + image (s, loc.x, loc.y, c, d); } + void update () { loc.set(mouseX, mouseY); //makes loc = mouse } + + void decrease (float a){ //function to decrease size of img + float c = 250; + float d = 278; + image(s, loc.x, loc.y, c, d); + c -= a; + d -= a; + } } From d5a1a14a54439b70e823537fa048d81b7851f46a Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 11:36:39 -0500 Subject: [PATCH 21/36] FOUND THE MISSY CURLY BRACKET thank god --- raindropGameCode/data/snowman.png | Bin 0 -> 25235 bytes raindropGameCode/data/sun.png | Bin 0 -> 44293 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 raindropGameCode/data/snowman.png create mode 100644 raindropGameCode/data/sun.png diff --git a/raindropGameCode/data/snowman.png b/raindropGameCode/data/snowman.png new file mode 100644 index 0000000000000000000000000000000000000000..874026953065f9a9274622e9854afc563b7c0646 GIT binary patch literal 25235 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 YcO4mwbY3`j{NF|>%Bjib-!*yuUv{>Ct^fc4 literal 0 HcmV?d00001 diff --git a/raindropGameCode/data/sun.png b/raindropGameCode/data/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..38ece1258f94765a6dddef9aa26d55084ea30483 GIT binary patch literal 44293 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 Date: Tue, 5 Jan 2016 11:43:48 -0500 Subject: [PATCH 22/36] other stuff id like to getrid of the lag and the image to actually scale --- raindropGameCode/catcher.pde | 12 +++++------- raindropGameCode/raindropGameCode.pde | 5 +++-- raindropGameCode/raindrop_class.pde | 3 +-- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde index 0921ded..471d9fc 100644 --- a/raindropGameCode/catcher.pde +++ b/raindropGameCode/catcher.pde @@ -17,12 +17,10 @@ class Bucket { //declare new class for catching raindrops void update () { loc.set(mouseX, mouseY); //makes loc = mouse } - - void decrease (float a){ //function to decrease size of img - float c = 250; - float d = 278; + + void decrease (float a) { //function to decrease size of img image(s, loc.x, loc.y, c, d); - c -= a; - d -= a; + c = c*a; + d = c*a; } -} +} \ No newline at end of file diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index ebce94e..9b37259 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -52,11 +52,11 @@ void draw() { if (count >= 500) { s++; //increase score count = 0; //reset count to 0 - b.decrease(-10); //increase the bucket's diameter by 5 + b.decrease(1.1); //increase the bucket's diameter by 5 } if (count <= 400 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 - b.decrease(100); + b.decrease(.8); } if (r.loc.y > height) { //if randrop hits the bottom of the screen @@ -77,3 +77,4 @@ void draw() { text("YOU WIN", width/2, height/2); //you win } } +} \ No newline at end of file diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index 854a9f9..cc4a742 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -36,5 +36,4 @@ class Raindrop { //create class for raindrop return false; } } -} -} +} \ No newline at end of file From 596b407760c235ad1933befcde28d1f7f5aebe2b Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 11:56:02 -0500 Subject: [PATCH 23/36] yay --- raindropGameCode/catcher.pde | 9 +++++---- raindropGameCode/raindropGameCode.pde | 10 +++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde index 471d9fc..7b9cb6d 100644 --- a/raindropGameCode/catcher.pde +++ b/raindropGameCode/catcher.pde @@ -8,9 +8,11 @@ class Bucket { //declare new class for catching raindrops s = loadImage("snowman.png"); loc = new PVector (random(width), random(height)); imageMode(CENTER); //centers image + c = 250; + d = 278; } - void display (float c, float d) { //function display bucket + void display () { //function display bucket image (s, loc.x, loc.y, c, d); } @@ -19,8 +21,7 @@ class Bucket { //declare new class for catching raindrops } void decrease (float a) { //function to decrease size of img - image(s, loc.x, loc.y, c, d); - c = c*a; - d = c*a; + c = c- a; + d = d - a; } } \ No newline at end of file diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 9b37259..4c8f78c 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -37,7 +37,7 @@ void draw() { } b.update(); //updates b.loc as mouse - b.display(250, 278); //display bucket + b.display(); //display bucket for (int i= rds.size() - 1; i >= 0; i --) { Raindrop r = rds.get(i); //getting item in array rds at index i @@ -49,14 +49,13 @@ void draw() { count++; //increase count each time bucket touches raindrop r.diam += 5; //increase diam of raindrop - if (count >= 500) { + if (count >= 300) { s++; //increase score count = 0; //reset count to 0 - b.decrease(1.1); //increase the bucket's diameter by 5 } - if (count <= 400 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 - b.decrease(.8); + if (count <= 250 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 + b.decrease(.1); } if (r.loc.y > height) { //if randrop hits the bottom of the screen @@ -75,6 +74,7 @@ void draw() { background(0, 200, 255); //bg color textSize(50); text("YOU WIN", width/2, height/2); //you win + rds.clear(); } } } \ No newline at end of file From a50cd4f946fccf98f14c1b0eedc97cfe1de91d1d Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 23:12:17 -0500 Subject: [PATCH 24/36] made functin to call upon array list is getting too large, keeps crashing need to fix that --- raindropGameCode/raindropGameCode.pde | 32 ++++++++++++++++++--------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 4c8f78c..33e3f02 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -5,7 +5,7 @@ Bucket b; //make bucket catcher PVector mouse; //declare a Pvector mouse -PImage sun; //declare pimage + int s = 0; //declare + intialize s = score @@ -16,12 +16,21 @@ void setup() { mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} rds.add(new Raindrop(random(width), random(-height, 0))); b = new Bucket(); //bucket with diameter of 100 - sun = loadImage("sun.png"); //loads sun image textAlign(CENTER); //centers text } -void draw() { - println(rds.size()); + + +void draw () { + if (keyCode == SHIFT) { + startgame(); + } +} + + + +void startgame() { + println(rds.size()); //check size of array list background(0, 200, 255); //bg color @@ -60,15 +69,16 @@ void draw() { if (r.loc.y > height) { //if randrop hits the bottom of the screen rds.remove(i); //remove raindrop + rds.clear(); } } - /*if (b.diam <= 10) { //if bucket's diameter < 10 - background(0, 200, 255); //bg color - textSize(50); - text("GAME OVER", width/2, height/2); //game over - textSize(30); - }*/ + if (b.c <= 50) { //if snowman's width < 50 + background(0, 200, 255); //bg color + textSize(50); + text("GAME OVER", width/2, height/2); //game over + textSize(30); + } if (s >= 10) { background(0, 200, 255); //bg color @@ -77,4 +87,4 @@ void draw() { rds.clear(); } } -} \ No newline at end of file +} From 14971ee8e8cf5155bd528f5968dbeeea53e4ad44 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 23:31:36 -0500 Subject: [PATCH 25/36] added a sun arraylist gets too big need to fix --- raindropGameCode/raindropGameCode.pde | 39 ++++++++++++++++++--------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 33e3f02..8f1c975 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -1,13 +1,11 @@ ArrayList rds = new ArrayList (); //make array list Bucket b; //make bucket catcher +Sun melt; PVector mouse; //declare a Pvector mouse - - - int s = 0; //declare + intialize s = score int count = 0; //counts number of raindrops in bucket @@ -16,19 +14,30 @@ void setup() { mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} rds.add(new Raindrop(random(width), random(-height, 0))); b = new Bucket(); //bucket with diameter of 100 + melt = new Sun(); textAlign(CENTER); //centers text } void draw () { - if (keyCode == SHIFT) { - startgame(); + + background(0, 200, 255); //bg color + textSize(100); + fill(255); + text("Snowman", width/2, 350); + textSize(20); + text("The goal of this game is to make Frosty as big as possible by collecting snowballs.", width/2, height/2); + text("Press 'SHIFT' to start", width/2, 430); + + if (keyCode == SHIFT) { //if shift key is pressed + startgame(); //game starts } } + void startgame() { println(rds.size()); //check size of array list @@ -41,6 +50,8 @@ void startgame() { textSize(30); //change text size text(s, 1150, 750); //displays score + melt.display(); + for (int i = 0; i < 40; i++) { rds.add(new Raindrop(random(width), random(-height, 0))); } @@ -56,20 +67,21 @@ void startgame() { if (r.isInContactWith(b)) { //if a raindrop is in contact with the bucket rds.remove(i); //remove raindrop count++; //increase count each time bucket touches raindrop - r.diam += 5; //increase diam of raindrop - if (count >= 300) { + + if (count >= 100) { s++; //increase score count = 0; //reset count to 0 + b.decrease(-15); //increases size of snowman } - if (count <= 250 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 - b.decrease(.1); + if (count <= 5 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 + b.decrease(.1); //decreases size of snowman } if (r.loc.y > height) { //if randrop hits the bottom of the screen rds.remove(i); //remove raindrop - rds.clear(); + rds.clear(); //clears out array } } @@ -77,14 +89,17 @@ void startgame() { background(0, 200, 255); //bg color textSize(50); text("GAME OVER", width/2, height/2); //game over - textSize(30); + textSize(30); + text("Press 'Shift' to restart game", width/2, 450); } - if (s >= 10) { + if (s == 10 || b.c > 600) { //if score gets to 10 background(0, 200, 255); //bg color textSize(50); text("YOU WIN", width/2, height/2); //you win rds.clear(); + textSize(30); + text("Press 'Shift' to restart game", width/2, 450); } } } From 41d956f7eb259e455ab690369aecd1f2ee3e0314 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 23:31:56 -0500 Subject: [PATCH 26/36] committing changes just in case --- raindropGameCode/catcher.pde | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde index 7b9cb6d..a49508e 100644 --- a/raindropGameCode/catcher.pde +++ b/raindropGameCode/catcher.pde @@ -1,6 +1,5 @@ class Bucket { //declare new class for catching raindrops PVector loc; - int diam; PImage s; float c, d; //control size of image @@ -24,4 +23,4 @@ class Bucket { //declare new class for catching raindrops c = c- a; d = d - a; } -} \ No newline at end of file +} From a5e1289dbcbe56925134b878a7f77f452ec9aa7e Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Tue, 5 Jan 2016 23:33:00 -0500 Subject: [PATCH 27/36] added a sun to move around --- raindropGameCode/sun | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 raindropGameCode/sun diff --git a/raindropGameCode/sun b/raindropGameCode/sun new file mode 100644 index 0000000..43b955e --- /dev/null +++ b/raindropGameCode/sun @@ -0,0 +1,25 @@ +class Sun { //declare new class for catching raindrops + PVector loc, vel; + PImage s; + float c, d; //control size of image + + Sun () { //create constructor + s = loadImage("sun.png"); + loc = new PVector (random(width), 100); + vel = new PVector (random(-10, 10), 0); + imageMode(CENTER); //centers image + c = 250; + d = 200; + } + + void display () { //function display bucket + image (s, loc.x, loc.y, c, d); + loc.add(vel); //give sun velocity + if (loc.x + c/2 >= width) { //if sun passes off screen + vel.mult(-1); //reverse direction + } + if (loc.x - c/2 <= 0) { + vel.mult(-1); + } + } +} From 10eaa44c378d8bf6fb93d5ece5c05ddfd75003af Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 6 Jan 2016 13:29:03 -0500 Subject: [PATCH 28/36] reput sun stuff into new .pde --- raindropGameCode/raindropGameCode.pde | 2 +- raindropGameCode/sun.pde | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 raindropGameCode/sun.pde diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 8f1c975..2495ceb 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -102,4 +102,4 @@ void startgame() { text("Press 'Shift' to restart game", width/2, 450); } } -} +} \ No newline at end of file diff --git a/raindropGameCode/sun.pde b/raindropGameCode/sun.pde new file mode 100644 index 0000000..4ed1f5c --- /dev/null +++ b/raindropGameCode/sun.pde @@ -0,0 +1,25 @@ +class Sun { //declare new class for catching raindrops + PVector loc, vel; + PImage s; + float c, d; //control size of image + + Sun () { //create constructor + s = loadImage("sun.png"); + loc = new PVector (random(width), 100); + vel = new PVector (random(-10, 10), 0); + imageMode(CENTER); //centers image + c = 250; + d = 200; + } + + void display () { //function display bucket + image (s, loc.x, loc.y, c, d); + loc.add(vel); //give sun velocity + if (loc.x + c/2 >= width) { //if sun passes off screen + vel.mult(-1); //reverse direction + } + if (loc.x - c/2 <= 0) { + vel.mult(-1); + } + } +} \ No newline at end of file From 1334d174315fa83ff23b407e868ba04d759effa8 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 6 Jan 2016 14:12:41 -0500 Subject: [PATCH 29/36] got sun to melt stuff --- raindropGameCode/raindropGameCode.pde | 13 +++++++++---- raindropGameCode/raindrop_class.pde | 7 +++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 2495ceb..63c49dd 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -12,7 +12,7 @@ int count = 0; //counts number of raindrops in bucket void setup() { size(1200, 800); //set size of screen mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} - rds.add(new Raindrop(random(width), random(-height, 0))); + rds.add(new Raindrop(random(width), random(-height, 0))); //add raindrops to arraylist b = new Bucket(); //bucket with diameter of 100 melt = new Sun(); textAlign(CENTER); //centers text @@ -25,7 +25,7 @@ void draw () { background(0, 200, 255); //bg color textSize(100); fill(255); - text("Snowman", width/2, 350); + text("Snowman", width/2, 350); //beginning info and such textSize(20); text("The goal of this game is to make Frosty as big as possible by collecting snowballs.", width/2, height/2); text("Press 'SHIFT' to start", width/2, 430); @@ -50,10 +50,10 @@ void startgame() { textSize(30); //change text size text(s, 1150, 750); //displays score - melt.display(); + melt.display(); //displays sun for (int i = 0; i < 40; i++) { - rds.add(new Raindrop(random(width), random(-height, 0))); + rds.add(new Raindrop(random(width), random(-height, 0))); //add new snowballs to array list } b.update(); //updates b.loc as mouse @@ -64,6 +64,11 @@ void startgame() { r.display(); //displays raindrop r.fall(); //raindrops will fall + + if (r.melts(melt)) { //if sun touches snowball + rds.remove(i); // remove snowball + } + if (r.isInContactWith(b)) { //if a raindrop is in contact with the bucket rds.remove(i); //remove raindrop count++; //increase count each time bucket touches raindrop diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index cc4a742..98272b7 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -36,4 +36,11 @@ class Raindrop { //create class for raindrop return false; } } + boolean melts (Sun m) { //function melt snowballs + if (loc.dist(m.loc) < diam/2 + m.loc.x/4) { + return true; + } else { + return false; + } + } } \ No newline at end of file From 26649629d2b9cc4104359dbc2ef062366de4176a Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 6 Jan 2016 14:24:08 -0500 Subject: [PATCH 30/36] oing to add a game mode --- raindropGameCode/raindropGameCode.pde | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 63c49dd..03be78d 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -86,7 +86,7 @@ void startgame() { if (r.loc.y > height) { //if randrop hits the bottom of the screen rds.remove(i); //remove raindrop - rds.clear(); //clears out array + rds.clear(); //clears out arraylist } } @@ -96,13 +96,14 @@ void startgame() { text("GAME OVER", width/2, height/2); //game over textSize(30); text("Press 'Shift' to restart game", width/2, 450); + rds.clear(); //clear arraylist } if (s == 10 || b.c > 600) { //if score gets to 10 background(0, 200, 255); //bg color textSize(50); text("YOU WIN", width/2, height/2); //you win - rds.clear(); + rds.clear(); //clear arraylist textSize(30); text("Press 'Shift' to restart game", width/2, 450); } From fec9da78c169800b210f70fd80d488847b4e640c Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 6 Jan 2016 14:30:49 -0500 Subject: [PATCH 31/36] added my gamemodes successfully but arraylist still not working??? itll work if i comment out rds.clear(); from gamemode = 1 if statement --- raindropGameCode/raindropGameCode.pde | 61 +++++++++++++++++---------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 03be78d..6efff0c 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -8,6 +8,9 @@ PVector mouse; //declare a Pvector mouse int s = 0; //declare + intialize s = score int count = 0; //counts number of raindrops in bucket +int gamemode = 0; //variabl efor game mode + + void setup() { size(1200, 800); //set size of screen @@ -21,18 +24,42 @@ void setup() { void draw () { - - background(0, 200, 255); //bg color - textSize(100); - fill(255); - text("Snowman", width/2, 350); //beginning info and such - textSize(20); - text("The goal of this game is to make Frosty as big as possible by collecting snowballs.", width/2, height/2); - text("Press 'SHIFT' to start", width/2, 430); - - if (keyCode == SHIFT) { //if shift key is pressed + if (gamemode == 0) { //if game mode is 0 , show start screen + background(0, 200, 255); //bg color + textSize(100); + fill(255); + text("Snowman", width/2, 350); //beginning info and such + textSize(20); + text("The goal of this game is to make Frosty as big as possible by collecting snowballs.", width/2, height/2); + text("Press 'SHIFT' to start", width/2, 430); + if (keyPressed && keyCode == SHIFT) { //if shift key is pressed + gamemode = 1; //game mode changes + } + } + if (gamemode == 1) { + rds.clear(); //clear arraylist startgame(); //game starts } + if (gamemode == 2) { //if gamemmode is 2, game over screen + background(0, 200, 255); //bg color + textSize(50); + text("GAME OVER", width/2, height/2); //game over + textSize(30); + text("Press 'Shift' to restart game", width/2, 450); + if (keyPressed && keyCode == SHIFT) { //if shift key is pressed + gamemode = 1; //game mode changes + } + } + if (gamemode == 3) { //if gamemode is 3, you win screen + background(0, 200, 255); //bg color + textSize(50); + text("YOU WIN", width/2, height/2); //you win + textSize(30); + text("Press 'Shift' to restart game", width/2, 450); + if (keyPressed && keyCode == SHIFT) { //if shift key is pressed + gamemode = 1; //game mode changes + } + } } @@ -91,21 +118,11 @@ void startgame() { } if (b.c <= 50) { //if snowman's width < 50 - background(0, 200, 255); //bg color - textSize(50); - text("GAME OVER", width/2, height/2); //game over - textSize(30); - text("Press 'Shift' to restart game", width/2, 450); - rds.clear(); //clear arraylist + gamemode = 2; //game over screen } if (s == 10 || b.c > 600) { //if score gets to 10 - background(0, 200, 255); //bg color - textSize(50); - text("YOU WIN", width/2, height/2); //you win - rds.clear(); //clear arraylist - textSize(30); - text("Press 'Shift' to restart game", width/2, 450); + gamemode = 3; //you win screen } } } \ No newline at end of file From 1a169b9c1ebfe0033d8e6b4f737c48b2e5ab045f Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 6 Jan 2016 14:42:05 -0500 Subject: [PATCH 32/36] gah a few more glitches --- raindropGameCode/raindropGameCode.pde | 38 +++++++++++++++------------ 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 6efff0c..58d87ef 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -32,33 +32,20 @@ void draw () { textSize(20); text("The goal of this game is to make Frosty as big as possible by collecting snowballs.", width/2, height/2); text("Press 'SHIFT' to start", width/2, 430); - if (keyPressed && keyCode == SHIFT) { //if shift key is pressed - gamemode = 1; //game mode changes - } - } - if (gamemode == 1) { - rds.clear(); //clear arraylist - startgame(); //game starts - } - if (gamemode == 2) { //if gamemmode is 2, game over screen + } else if (gamemode ==1) { + startgame(); + } else if (gamemode == 2) { //if gamemmode is 2, game over screen background(0, 200, 255); //bg color textSize(50); text("GAME OVER", width/2, height/2); //game over textSize(30); text("Press 'Shift' to restart game", width/2, 450); - if (keyPressed && keyCode == SHIFT) { //if shift key is pressed - gamemode = 1; //game mode changes - } - } - if (gamemode == 3) { //if gamemode is 3, you win screen + } else if (gamemode == 3) { //if gamemode is 3, you win screen background(0, 200, 255); //bg color textSize(50); text("YOU WIN", width/2, height/2); //you win textSize(30); text("Press 'Shift' to restart game", width/2, 450); - if (keyPressed && keyCode == SHIFT) { //if shift key is pressed - gamemode = 1; //game mode changes - } } } @@ -125,4 +112,21 @@ void startgame() { gamemode = 3; //you win screen } } +} + +void keyPressed() { + if (keyCode == SHIFT) { + if (gamemode == 0) { + gamemode = 1; //game mode changes + rds.clear(); //clear arraylist + } else if (gamemode == 1) { + startgame(); //game starts + } else if (gamemode == 2) { + gamemode = 1; //game mode changes + rds.clear(); //clear arraylist + } else if (gamemode == 3) { + gamemode = 1; //game mode changes + rds.clear(); //clear arraylist + } + } } \ No newline at end of file From 9822099ce4b0743ec19e0d09ad657290fe0c876c Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 6 Jan 2016 14:49:24 -0500 Subject: [PATCH 33/36] eeek --- raindropGameCode/raindropGameCode.pde | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 58d87ef..97d6507 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -33,7 +33,7 @@ void draw () { text("The goal of this game is to make Frosty as big as possible by collecting snowballs.", width/2, height/2); text("Press 'SHIFT' to start", width/2, 430); } else if (gamemode ==1) { - startgame(); + startgame(); //starts game } else if (gamemode == 2) { //if gamemmode is 2, game over screen background(0, 200, 255); //bg color textSize(50); @@ -87,7 +87,6 @@ void startgame() { rds.remove(i); //remove raindrop count++; //increase count each time bucket touches raindrop - if (count >= 100) { s++; //increase score count = 0; //reset count to 0 From 7a0d51bdcaf64f35737aa17aee78595f5963ab50 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Wed, 6 Jan 2016 14:50:47 -0500 Subject: [PATCH 34/36] other stuff --- raindropGameCode/raindropGameCode.pde | 4 ++-- raindropGameCode/sun.pde | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 97d6507..459c130 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -93,8 +93,8 @@ void startgame() { b.decrease(-15); //increases size of snowman } - if (count <= 5 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 - b.decrease(.1); //decreases size of snowman + if (count <= 500 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 + b.decrease(.3); //decreases size of snowman } if (r.loc.y > height) { //if randrop hits the bottom of the screen diff --git a/raindropGameCode/sun.pde b/raindropGameCode/sun.pde index 4ed1f5c..7c43fd7 100644 --- a/raindropGameCode/sun.pde +++ b/raindropGameCode/sun.pde @@ -8,7 +8,7 @@ class Sun { //declare new class for catching raindrops loc = new PVector (random(width), 100); vel = new PVector (random(-10, 10), 0); imageMode(CENTER); //centers image - c = 250; + c = 250; d = 200; } From b69412235d520d787ae197d4130dd82ed4b5df91 Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Thu, 7 Jan 2016 11:08:55 -0500 Subject: [PATCH 35/36] fixed some stuff and added some commnets trying to use function playgame() after winning/losing doesnt seem to work... --- raindropGameCode/catcher.pde | 8 ++-- raindropGameCode/raindropGameCode.pde | 67 +++++++++++++++------------ raindropGameCode/raindrop_class.pde | 10 ++-- raindropGameCode/sun.pde | 10 ++-- 4 files changed, 51 insertions(+), 44 deletions(-) diff --git a/raindropGameCode/catcher.pde b/raindropGameCode/catcher.pde index a49508e..afea917 100644 --- a/raindropGameCode/catcher.pde +++ b/raindropGameCode/catcher.pde @@ -12,7 +12,7 @@ class Bucket { //declare new class for catching raindrops } void display () { //function display bucket - image (s, loc.x, loc.y, c, d); + image (s, loc.x, loc.y, c, d); //draw image } void update () { @@ -20,7 +20,7 @@ class Bucket { //declare new class for catching raindrops } void decrease (float a) { //function to decrease size of img - c = c- a; - d = d - a; + c = c- a; //decrease width + d = d - a; //decrease height } -} +} \ No newline at end of file diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 459c130..4cbd929 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -25,34 +25,44 @@ void setup() { void draw () { if (gamemode == 0) { //if game mode is 0 , show start screen - background(0, 200, 255); //bg color - textSize(100); - fill(255); - text("Snowman", width/2, 350); //beginning info and such - textSize(20); - text("The goal of this game is to make Frosty as big as possible by collecting snowballs.", width/2, height/2); - text("Press 'SHIFT' to start", width/2, 430); + startscreen(); } else if (gamemode ==1) { - startgame(); //starts game + playgame(); //starts game } else if (gamemode == 2) { //if gamemmode is 2, game over screen - background(0, 200, 255); //bg color - textSize(50); - text("GAME OVER", width/2, height/2); //game over - textSize(30); - text("Press 'Shift' to restart game", width/2, 450); + losescreen(); } else if (gamemode == 3) { //if gamemode is 3, you win screen - background(0, 200, 255); //bg color - textSize(50); - text("YOU WIN", width/2, height/2); //you win - textSize(30); - text("Press 'Shift' to restart game", width/2, 450); + winscreen(); } } +void startscreen() { + background(0, 200, 255); //bg color + textSize(100); + fill(255); + text("Snowman", width/2, 350); //beginning info and such + textSize(20); + text("The goal of this game is to make Frosty as big as possible by collecting snowballs.", width/2, height/2); + text("Press 'SHIFT' to start", width/2, 430); +} + +void winscreen() { + background(0, 200, 255); //bg color + textSize(50); + text("YOU WIN", width/2, height/2); //you win + textSize(30); + text("Press 'Shift' to restart game", width/2, 450); +} +void losescreen() { + background(0, 200, 255); //bg color + textSize(50); + text("GAME OVER", width/2, height/2); //game over + textSize(30); + text("Press 'Shift' to restart game", width/2, 450); +} -void startgame() { +void playgame() { //playgame funcion println(rds.size()); //check size of array list background(0, 200, 255); //bg color @@ -66,7 +76,7 @@ void startgame() { melt.display(); //displays sun - for (int i = 0; i < 40; i++) { + for (int i = 0; i < 40; i++) { //start w/ 40 snowballs rds.add(new Raindrop(random(width), random(-height, 0))); //add new snowballs to array list } @@ -94,7 +104,7 @@ void startgame() { } if (count <= 500 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 - b.decrease(.3); //decreases size of snowman + b.decrease(.65); //decreases size of snowman } if (r.loc.y > height) { //if randrop hits the bottom of the screen @@ -102,14 +112,13 @@ void startgame() { rds.clear(); //clears out arraylist } } + } + if (b.c <= 50) { //if snowman's width < 50 + gamemode = 2; //game over screen + } - if (b.c <= 50) { //if snowman's width < 50 - gamemode = 2; //game over screen - } - - if (s == 10 || b.c > 600) { //if score gets to 10 - gamemode = 3; //you win screen - } + if (s == 10 || b.c > 600) { //if score gets to 10 + gamemode = 3; //you win screen } } @@ -118,8 +127,6 @@ void keyPressed() { if (gamemode == 0) { gamemode = 1; //game mode changes rds.clear(); //clear arraylist - } else if (gamemode == 1) { - startgame(); //game starts } else if (gamemode == 2) { gamemode = 1; //game mode changes rds.clear(); //clear arraylist diff --git a/raindropGameCode/raindrop_class.pde b/raindropGameCode/raindrop_class.pde index 98272b7..63d8e95 100644 --- a/raindropGameCode/raindrop_class.pde +++ b/raindropGameCode/raindrop_class.pde @@ -30,17 +30,17 @@ class Raindrop { //create class for raindrop vel.y = 0; //this way raindrop wont speed up } boolean isInContactWith(Bucket b) { - if (loc.dist(b.loc) < diam/2 + b.loc.y*.3) { //if mouse near snowman + if (loc.dist(b.loc) < diam/2 + b.loc.y*.3) { //if distance between mouse and snowball is less than the snowball's raidus and image's height/3 return true; } else { return false; } } boolean melts (Sun m) { //function melt snowballs - if (loc.dist(m.loc) < diam/2 + m.loc.x/4) { - return true; - } else { - return false; + if (loc.dist(m.loc) < diam/2 + m.loc.x/4) { //if distance is less than the diameter of the snowball + width of image/4 + return true; //then return true + } else { //otherwise + return false; //otherwise return false } } } \ No newline at end of file diff --git a/raindropGameCode/sun.pde b/raindropGameCode/sun.pde index 7c43fd7..f0a1ff2 100644 --- a/raindropGameCode/sun.pde +++ b/raindropGameCode/sun.pde @@ -8,18 +8,18 @@ class Sun { //declare new class for catching raindrops loc = new PVector (random(width), 100); vel = new PVector (random(-10, 10), 0); imageMode(CENTER); //centers image - c = 250; - d = 200; + c = 250; //width + d = 200; //height } void display () { //function display bucket image (s, loc.x, loc.y, c, d); loc.add(vel); //give sun velocity - if (loc.x + c/2 >= width) { //if sun passes off screen + if (loc.x + c/2 >= width) { //if sun passes off right side of screen vel.mult(-1); //reverse direction } - if (loc.x - c/2 <= 0) { - vel.mult(-1); + if (loc.x - c/2 <= 0) { //if sun passes off left side of screen + vel.mult(-1); //reverse direction } } } \ No newline at end of file From 05d81a353fc07f7e0462dc5a237404495beb752a Mon Sep 17 00:00:00 2001 From: thermodynamicallyunfavored Date: Thu, 7 Jan 2016 11:16:05 -0500 Subject: [PATCH 36/36] final updates!! --- raindropGameCode/raindropGameCode.pde | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 4cbd929..fad863b 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -35,7 +35,7 @@ void draw () { } } -void startscreen() { +void startscreen() { //startscreen fuctnion background(0, 200, 255); //bg color textSize(100); fill(255); @@ -45,7 +45,7 @@ void startscreen() { text("Press 'SHIFT' to start", width/2, 430); } -void winscreen() { +void winscreen() { //winscreen function background(0, 200, 255); //bg color textSize(50); text("YOU WIN", width/2, height/2); //you win @@ -53,7 +53,7 @@ void winscreen() { text("Press 'Shift' to restart game", width/2, 450); } -void losescreen() { +void losescreen() { //losescreen fnction background(0, 200, 255); //bg color textSize(50); text("GAME OVER", width/2, height/2); //game over @@ -104,7 +104,7 @@ void playgame() { //playgame funcion } if (count <= 500 && s >= 5) { //if the bucket has caught < 199 raindrops and score is > 5 - b.decrease(.65); //decreases size of snowman + b.decrease(.55); //decreases size of snowman } if (r.loc.y > height) { //if randrop hits the bottom of the screen @@ -129,9 +129,15 @@ void keyPressed() { rds.clear(); //clear arraylist } else if (gamemode == 2) { gamemode = 1; //game mode changes + s = 0; //reset score + b.c = 250; //reset snowman's width + b.d = 278; //reset snowman's height rds.clear(); //clear arraylist } else if (gamemode == 3) { gamemode = 1; //game mode changes + s = 0; //reset score + b.c = 250; //reset snowman's width + b.d = 278; //reset snowman's height rds.clear(); //clear arraylist } }