# How to add gravity to this example?

**URL:** <https://discourse.processing.org/t/how-to-add-gravity-to-this-example/20751>\
**Category:** Coding Questions\
**Created:** [May 11, 2020, 3:31pm UTC](https://discourse.processing.org/t/how-to-add-gravity-to-this-example/20751 "2020-05-11T15:31:30Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pepbaggen](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/pepbaggen/32/9119_2.png) [@Pepbaggen](https://discourse.processing.org/u/Pepbaggen)\
**Post date:** [May 11, 2020, 3:31pm UTC](https://discourse.processing.org/t/how-to-add-gravity-to-this-example/20751/1 "2020-05-11T15:31:30Z")

</div>

Thanks in advance!!!

```auto
int schermMode = 0; //begint bij beginscherm
PImage img;
int punten = 0;
float schiethoek = 0; //schiethoek : -100
float schiethoekrekenen;
PVector plaats; //xt --> uitendelijke pos
PVector snelheid; //vt --> kracht weggeschoten kogel(te maken met schiethoek)
PVector versnelling; //at --> voor ons de enige tegenwerkende kracht
float snelheidbegin = 70; //afschietsnelheid
float vsnelheid;
float hsnelheid;
float vrekensnelheid;
float hrekensnelheid;
PImage bg;
boolean geklikt = false;

void setup() {
  size(640, 360);
  smooth();
  plaats = new PVector(50, 340); //xt
  snelheid = new PVector(hrekensnelheid, vrekensnelheid); //vt
  versnelling = new PVector(0, 0.098); //at
  frameRate(50);
}

void draw() {
  if (schermMode == 0) {
    beginScherm();
  } else if (schermMode == 1) {
    gameScherm();
  } else if (schermMode == 2) {
    gameoverScherm();
  }
}

void beginScherm() {
  img = loadImage("beginscherm.jpg");
  background(img);
}

void gameScherm() {
  
  schiethoekrekenen = schiethoek * 180 / PI; //:-100 om echte graden te krijgen
  vsnelheid = snelheidbegin * sin(abs(schiethoek)); //schuine vector ontbinden in horizontale en verticale component
  hsnelheid = snelheidbegin * cos(abs(schiethoek));
  vrekensnelheid = vsnelheid / 10; //correctie voor verhouding met andere waarden
  hrekensnelheid = hsnelheid / 10;
  snelheid.set(hrekensnelheid, vrekensnelheid);

  img = loadImage("achtergrond.jpg");
  background(img);
  stroke(100);
  text("punten : " + punten, 20, 30); // punten
  text(schiethoekrekenen, 120, 30); //schiethoek
  
  img = loadImage("tankrood.png");
  image(img, 520, 315, 50, 50);
  rect(514, 330, 40, 4);
  fill(104, 156, 56);
  noStroke(); //geen rand
  
  img = loadImage("tank.png"); //tankzelf
  image(img, 20, 313, 50, 50);
  pushMatrix();
  translate(48, 337);
  rotate(-schiethoek);
  rect(0, 0, 25, 3); //geweer
  popMatrix();
  fill(209, 33, 0);
  noStroke(); //geen rand
  
  if (keyPressed == true) { //moet voor niet-continu beweging
    if (keyCode == LEFT) {
      schiethoek = schiethoek + 0.01;
      if (schiethoek > 1.5) { //stopt zodat hij niet te ver doordraait
        schiethoek = 1.5;
      }
    }
  }
  if (keyPressed == true) {
    if (keyCode == RIGHT) {
      schiethoek = schiethoek - 0.01;
      if (schiethoek < 0) { //stopt zodat hij niet te ver doordraait
        schiethoek = 0;
      }
    }
  }
  if (key == TAB) {
    geklikt = true;
  }
  if (geklikt == true) {
    plaats.x = plaats.x + snelheid.x;
    plaats.y = plaats.y - snelheid.y;
    snelheid.add(versnelling);
    ellipse(plaats.x, plaats.y, 9, 9); //bewegende kogel
  }
  
  
  
}

void gameoverScherm() {
  background(235, 64, 52);
}

public void mousePressed() {
  if (schermMode == 0) { //alleen doorklikken als je bij beginscherm bent
    if (mousePressed) {
      schermMode++;
    }
  }
}
//https://www.youtube.com/watch?v=PXheUQ7Ih_U

```

---

<div class="post-metadata">

**Author:** ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)\
**Post date:** [May 11, 2020, 9:35pm UTC](https://discourse.processing.org/t/how-to-add-gravity-to-this-example/20751/2 "2020-05-11T21:35:55Z")

</div>

there are things to be discussed

eg. best when you have **different** images (different variables with different names like PImage startImg, tankImg1, tankImg2…) and **load them all in setup()** because it’s time consuming to load them from draw() (or functions called by draw()), because draw() runs 60 times per second.

also, use resize in setup and later use image() only with 3 parameters, not 5. Faster.

**gravity**

to add gravity, add something to the value you add to the value of the ball. also make sure, the values are not resetted at start of draw(). I moved this part into the section where you check the tab key.

see [Bouncy Bubbles / Examples / Processing.org](https://www.processing.org/examples/bouncybubbles.html)

Chrisir

```auto
//snelheid

int schermMode = 0; //begint bij beginscherm
PImage img;
int punten = 0;
float schiethoek = 0; //schiethoek : -100
float schiethoekrekenen;
PVector plaats; //xt --> uitendelijke pos
PVector snelheid; //vt --> kracht weggeschoten kogel(te maken met schiethoek)
PVector versnelling; //at --> voor ons de enige tegenwerkende kracht
float snelheidbegin = 70; //afschietsnelheid
float vsnelheid;
float hsnelheid;
float vrekensnelheid;
float hrekensnelheid;
PImage bg;
boolean geklikt = false;

void setup() {
  size(640, 360);
  smooth();
  plaats = new PVector(50, 340); //xt
  snelheid = new PVector(hrekensnelheid, vrekensnelheid); //vt
  versnelling = new PVector(0, 0.098); //at
  frameRate(50);
}

void draw() {
  if (schermMode == 0) {
    beginScherm();
  } else if (schermMode == 1) {
    gameScherm();
  } else if (schermMode == 2) {
    gameoverScherm();
  }
}

void beginScherm() {
  img = loadImage("beginscherm.jpg");
  background(0);
}

void gameScherm() {

  img = loadImage("achtergrond.jpg");
  background(0);
  stroke(100);
  text("punten : " + punten, 20, 30); // punten
  text(schiethoekrekenen, 120, 30); //schiethoek

  img = loadImage("tankrood.png");
  text("tank", 520, 315
    );
  rect(514, 330, 40, 4);
  fill(104, 156, 56);
  noStroke(); //geen rand

  img = loadImage("tank.png"); //tankzelf
  text("img2", 20, 313);
  pushMatrix();
  translate(48, 337);
  rotate(-schiethoek);
  rect(0, 0, 25, 3); //geweer
  popMatrix();
  fill(209, 33, 0);
  noStroke(); //geen rand

  if (keyPressed == true) { //moet voor niet-continu beweging
    if (keyCode == LEFT) {
      schiethoek = schiethoek + 0.01;
      if (schiethoek > 1.5) { //stopt zodat hij niet te ver doordraait
        schiethoek = 1.5;
      }
    }
  }
  if (keyPressed == true) {
    if (keyCode == RIGHT) {
      schiethoek = schiethoek - 0.01;
      if (schiethoek < 0) { //stopt zodat hij niet te ver doordraait
        schiethoek = 0;
      }
    }
  }
  if ((keyPressed == true) && key == TAB) {
    geklikt = true;

    schiethoekrekenen = schiethoek * 180 / PI; //:-100 om echte graden te krijgen
    vsnelheid = snelheidbegin * sin(abs(schiethoek)); //schuine vector ontbinden in horizontale en verticale component
    hsnelheid = snelheidbegin * cos(abs(schiethoek));
    vrekensnelheid = vsnelheid / 10; //correctie voor verhouding met andere waarden
    hrekensnelheid = hsnelheid / 10;
    snelheid.set(hrekensnelheid, vrekensnelheid);
  }

  if (geklikt) {
    plaats.x = plaats.x + snelheid.x;
    plaats.y = plaats.y - snelheid.y;
    snelheid.y-=.21; 
    snelheid.add(versnelling);
    ellipse(plaats.x, plaats.y, 
      9, 9); //bewegende kogel
  }
}

void gameoverScherm() {
  background(235, 64, 52);
}

public void mousePressed() {
  if (schermMode == 0) { //alleen doorklikken als je bij beginscherm bent
    if (mousePressed) {
      schermMode++;
    }
  }
}
//https://www.youtube.com/watch?v=PXheUQ7Ih_U
//

```

---

<div class="post-metadata">

**Author:** ![glv](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/glv/32/18785_2.png) [@glv](https://discourse.processing.org/u/glv)\
**Post date:** [May 12, 2020, 1:06am UTC](https://discourse.processing.org/t/how-to-add-gravity-to-this-example/20751/3 "2020-05-12T01:06:12Z")

</div>

Hello,

This was a good resource for me exploring gravity:  
[https://natureofcode.com/book/](https://natureofcode.com/book/)

Something I did a while back:

[![](https://img.youtube.com/vi/CsmVktLohl4/maxresdefault.jpg "Exploring Gravity") ](https://www.youtube.com/watch?v=CsmVktLohl4)

`:)`
