top of page
  • Writer's pictureRikka Ly

The Cyclist and The Car Processing3 Code

Updated: Jul 24, 2023

Apologies in advance for my code structure. This project was a labour of love.


import processing.sound.*;
SoundFile file;
PImage background, tortoise, hare, gas1, angry, honk;
turtle turtle = new turtle();
ArrayList<bunny> bunnies = new ArrayList<bunny>();
static float bgY = -6000;
static int bgX = -425;
int frame = 0;
boolean check = false;
float slow = 4;

void setup(){
  size(1000, 1000);
  background = loadImage("bg3.png");
  tortoise = loadImage("tortoise.png");
  hare = loadImage("hare.png");
  gas1 = loadImage("gas1.png");
  angry = loadImage("angry.png");
  honk = loadImage("honk.png");
  file = new SoundFile(this, "honk.wav");
  
  for(int i = 0; i < 4; i++){
    bunnies.add(new bunny());
  }
  bunnies.get(0).setY(600);
  bunnies.get(1).setY(900);
  bunnies.get(2).setY(1200);
}

void draw(){
  frame++;
  println(frame);
  image(background, bgX, bgY);
  image(tortoise, 425, 425);
  
  for(int i = 0; i < 3; i++){
    bunnies.get(i).display(hare);
    bunnies.get(i).gas(gas1);
  }
  
   turtleStage1();
   bunnyStage1();
   
   if(frame > 150 && frame < 250){
     image(angry, random(550, 555), random(595, 600));
   }
   
   if(bgY >= 0){
        frame = 0;
        bgY = -6000;
  }
  //saveFrame("gifFrames/road-####.png");
}

void turtleStage1(){
  if(frame > 445 && bgX < -322 && frame < 1000){
    turtle.left(2);
    for(int i = 0; i < 4; i++){
      bunnies.get(i).translation(2);
    }
  }
  
  if(frame == 500){
    for(int i = 0; i < 3; i++){
        bunnies.get(i).move(2);
    }
  }
  
  if(frame > 1190 && bgX > -425){
    turtle.right(2);
    for(int i = 0; i < 4; i++){
      bunnies.get(i).translation(-2);
      }
  }
  if(frame == 1300){
    bunnies.get(0).setY(1100);
    bunnies.get(1).setY(1500);
    bunnies.get(2).setY(1600);
  }else if(frame == 1625){
    file.play();
  }else if(frame > 1626 && frame < 1675){
    image(honk, 472, 580);
  }
  
  if(bgX >= -325 && frame < 1050){
    turtle.move(4);
  }
  if(frame > 1050 && frame < 1190){
    turtle.move(3);
  }
  turtle.move(2);
}

void bunnyStage1(){
  
  if(bunnies.get(0).hareY != 600){
    bunnies.get(0).move(2);
  }
  if(bunnies.get(1).hareY != 900){
    bunnies.get(1).move(2);
  }
  
  if(bunnies.get(2).hareY != 1200){
    bunnies.get(2).move(2);
  }
  
}

class bunny{
  int hareY = 1000;
  int hareX = 425;
  ArrayList<gas> gas = new ArrayList<gas>();
  int tintA = 255;
  
  bunny(){
    for(int i = 0; i < 4; i++){
      gas.add(new gas());
    }
  }
  
  void display(PImage hare){
    image(hare, hareX, hareY);
  }
  
  void move(float speed){
    hareY -= speed;
  }
  void left(int speed){
    hareX += speed;
  }
  void right(int speed){
    hareX -= speed;
  }
  void translation(int move){
    hareX += move;
  }
  
  void setY(int y){
    hareY = y;
  }
  
  void gas(PImage gas1){
    for(int i = 0; i < 4; i++){
      gas.get(i).display(gas1, hareX, hareY);
    }
  }
}

class gas{
  int tintA = 255;
  float direction = random(-3, 3);
  float speed = random(1, 3);
  float disperse = random(4, 7);
  
  float x = 50;
  float y = 175;
  
  gas(){}

  void display(PImage gas1, int hareX, int hareY){
    tint(255, tintA);
    image(gas1, hareX+x, hareY+y);
    tintA -= disperse;
    noTint();
    
    x = x + direction;
    y = y + speed;
    
    if(tintA < 0){
      direction = random(-3, 3);
      speed = random(1, 3);
      x = 50;
      y = 175;
      tintA = 255;
    }
  }
}

class turtle{
  
  
  turtle(){}

  void move(float speed){
    race.bgY += speed;
  }
  void left(int speed){
    race.bgX += speed;
  }
  void right(int speed){
    race.bgX -= speed;
  }
}

34 views0 comments

Recent Posts

See All
bottom of page