title: Processing. Class Does Not Exist
body: <p>I am creating a breakout game for a Programming class. </p>
  
  <pre><code>import processing.serial.*;
  //sets the conditions for winning
  int lose = 1;
  boolean flip_sensor_value = false;
  
  //variable declarations for ports, paddles, conditions, and start/end 
  Serial myPort;
  PFont myFont;
  int lf = 10;
  Paddle Paddle; //Error Here
  Ball breakout;
  int padWidth = 15;
  int padHeight = 60;
  int leftPaddlePos = 0;
  int distWall = 20;
  float lpp;
  boolean Win = false;
  PImage pStart;
  PImage pEnd;
  boolean Contact = false;
  boolean started = false;
  int timePlayed = 0;
  
  //sets the game window up 
  void setup(){
     size(1000, 600);
  
     myFont = createFont("FFScala", 16);
     textFont(myFont);
  
     rectMode(CENTER);
     ellipseMode(CENTER);
  
     println(Serial.list());
     //If the paddle isn't working set the number in the [] to 1, 2, or 3
     myPort = new Serial(this, Serial.list()[0], 9600);
     myPort.bufferUntil('\n');
  
     Paddle = new Paddle(padWidth, padHeight, distWall, leftPaddlePos); //Error Here
     //creates the ball
     breakout = new Ball (15, width/2, height/2, 8, 2, 1, 1);
  }
  void showGUI() {
  
    stroke(87, 36, 124);
    line(width/2, 0, width/2, height);
  
    textSize(16);
    pushStyle();
    fill(87, 36, 124);
    popStyle();
    //Tells you that you won
    if (Win == true) {
      textSize(48);
      image(pEnd, 0, 0, width, height);
      pushStyle();
      fill(87, 36, 124);
      text("YOU WIN!!!", width/2 - 175, 100);
      popStyle();
    }
  }
  void draw(){
    background(247);
    //dislplays and updates the Ball
    breakout.display();
    breakout.update();
  
     Paddle.display(lpp);
    //Shows the graphical user interface
    showGUI();
  
    if (started == false){
      image(pStart, 0, 0, width, height);
      println("Start");
    }
    timePlayed ++;  //Controls the timer in the game
    breakout.bRadius = breakout.bRadius + (timePlayed * 0.5);
  }
  void serialEvent(Serial myPort) {
  
    String myString = myPort.readStringUntil('\n');
    if (myString != null) {
  
      myString = trim(myString);
  
      // if you haven't heard from the microncontroller yet, listen:
      if (Contact == false) {
        if (myString.equals("hello")) { 
          myPort.clear();          // clear the serial port buffer
          Contact = true;     // you've had first contact from the microcontroller
          myPort.write('A');       // ask for more
          println("contact");
        }
      }else {
        int sensors[] = int(split(myString, ','));
        for (int sensorNum = 0; sensorNum &lt; sensors.length; sensorNum++) {
          println("Sensor " + sensorNum + ": " + sensors[sensorNum]);
        }
        if(sensors.length&gt;1){
          leftPaddlePos = sensors[0];
  
          lpp = (float)leftPaddlePos;
          if ( flip_sensor_value == false ) {
            lpp = map(lpp, 0, 1023, 1, height);
          } 
          else if ( flip_sensor_value == true ) {
            lpp = map(lpp, 1023, 0, 1, height);
          }
        }
      }
      myPort.write("A");
    }
  }
  void keyPressed() {
    if (started == true) {   //added for Start Screen
      breakout.keyPressed();
    }                        //added for Start Screen
    if (started == false) {  //added for Start Screen
      started = true;        //added for Start Screen
    }                        //added for Start Screen
  }
  </code></pre>
  
  <p><strong>Paddle class</strong></p>
  
  <pre><code>    class Paddle{
  
    float pWidth;
    float pHeight;
    float yPos;
    float xPos;
  
    Paddle(float ipWidth, float ipHeight, float ixPos, float iyPos) {
  
      pWidth = ipWidth;
      pHeight = ipHeight;
      xPos = ixPos;
      yPos = iyPos;
    }
  
    void display(float yPos) {
      pushStyle();
      fill(87, 36, 124);// or littleBits white(247)
      rect(xPos, yPos, pWidth, pHeight);
      popStyle();
    }
  }}
  </code></pre>
  
  <p><strong>Ball class</strong></p>
  
  <pre><code>    class Ball {
    Paddle Paddle; //Added so that it would accept the Class Paddle
    float bAngle = 0; //added to keep track of ball's current angle
    float bRadius; //add this line to create a vector for the ball
  
    int bSize;
    float xpos, ypos;
    float xspeed, yspeed;
    float xdir, ydir;
  
    Ball(int ibSize, float ixpos, float iypos, float ixspeed, float iyspeed, float ixdir, float iydir) {
  
      bSize = ibSize;
      xpos = ixpos;
      ypos = iypos;
      xspeed = ixspeed;
      yspeed = iyspeed;
      xdir = ixdir;
      ydir = iydir;
    }
    void display() {
      pushStyle();
      fill(87, 36, 124);
      ellipse(xpos+bSize/2, ypos+bSize/2, bSize, bSize);
      popStyle();
    }
  void update(){
  
      xpos = xpos + (xspeed * xdir);
      ypos = ypos + (yspeed * ydir);
  
      calcRadius();
  }
    void keyPressed() {
  
      if (keyCode=='`') {
        newGame();
      }
  
      if (keyCode=='1') {
        bSize++;
      }
      if (keyCode=='2') {
        bSize--;
      }
      if (keyCode=='3') {
        Paddle.pHeight++;
      }    
      if (keyCode=='4') {
        Paddle.pHeight--;
      }
    }
  
    void reset() {
      xpos = width;
      ypos = height/2;
      ydir = random(-1, 1);
      float dir = random(-1, 1);
      if (dir &gt; 0) {
        xdir = 1;
      }
      else if (dir &lt;= 0) {
        xdir = -1;
      }
      breakout.xspeed = 8; //reset ball speed
      breakout.yspeed = 2; //reset ball speed
      timePlayed = 0;  //reset time played counter
      bRadius = 8.25;  //reset ball vector
    }
  void newGame(){
    reset();
  }
   void calcRadius() { //added to calculate radius/vector of ball trajectory
      bRadius = sqrt(pow(abs(xspeed), 2) + pow(abs(yspeed), 2)); //added to figure out ball vector
    }
     void lPadHitTest() {
      if (xpos &lt; Paddle.xPos - Paddle.pWidth/2 - bSize/2  //check to see if it's hitting paddle side to side
      &amp;&amp; ypos &lt; lpp + Paddle.pHeight/2 + bSize/2           //check to see if it's hitting paddle up and down
      &amp;&amp; ypos &gt; lpp - Paddle.pHeight/2 - bSize/2)          //check to see if it's hitting paddle up and down
      {
        lPadAngle();                                            //change the angle of the ball depending where it hits the paddle
        xdir *= -1;                                             //turn the ball around so it bounces
      }
    }
      void lPadAngle() {
      if (ypos &lt; lpp - 10) {  //checks if y position is above the middle section of the right paddle
        println(bAngle);
        bAngle = bAngle + (map(abs(lpp - 10 - ypos), 0, 50, 0, 15));  //adds to angle of ball trajectory
        xspeed = cos (radians(bAngle)) * bRadius; //change ball's x speed
        yspeed = sin (radians(bAngle)) * bRadius; //change ball's y spped
        println(bAngle);
      }
      if (ypos &lt; lpp + 10) {  //checks if y position is below the middle section of the right paddle
        println(bAngle);
        bAngle = bAngle - (map(abs(lpp + 10 - ypos), 0, 50, 0, 15));  //subtracts from angle of ball trajectory
        xspeed = cos (radians(bAngle)) * bRadius; //change ball's x speed
        yspeed = sin (radians(bAngle)) * bRadius; //change ball's y spped
        println(bAngle);
      }
      xpos = Paddle.xPos + Paddle.pWidth/2 + bSize/2; //corrects for sticking in right paddle
    }
  </code></pre>
  
  <p>I am not finished with the parts that actually make the game breakout but, the problem is that I am being thrown an error that reads "the class 'Paddle' does not exist."</p>
  
  <p>I have tried re-ordering the variable declarations (even though that shouldn't matter) and I have tried fixing all of the errors in the "Paddle" class itself. </p>
  
  <p>I used to have the problem within the "Ball" class but, I added </p>
  
  <pre><code>class Ball {
    Paddle Paddle; //Added so that it would accept the Class Paddle
    float bAngle = 0; //added to keep track of ball's current angle
     ...
  }
  </code></pre>
  
  <p>And it accepted it so I'm not sure what the problem is. </p>
  
  <p>Is it a syntax thing or did I omit something important? </p>