title: How can I scroll more than one object at the same time?
body: <p>New question was asked after this one, found <a href="https://stackoverflow.com/questions/21592492/how-can-i-switch-between-jpanels?lq=1">here</a>.</p>
  
  <p>I'm new to Java, but I am working on a recreation of "Flappy Bird" to learn more about java and the way that graphics are displayed.  Any solutions or suggestions to any of my questions is greatly appreciated. Thanks!</p>
  
  <p>Right now, my program makes a random pipe and scrolls it, but I don't need it to keep scrolling when <code>x1-3 = -83</code> (<strong>this is when the pipe will be off of the screen completely and is no longer needed</strong>).</p>
  
  <p><strong>Questions</strong></p>
  
  <p>How can I make my <code>Game.class</code> scroll more than one instance of <code>Pipes.class</code> while adding a preset distance between them?  I could find out the distance to put between them, but as far as displaying more than one, I'm not sure how to do that. At most, 3 pipes have to be displayed at the same time.</p>
  
  <p>How can I display a panel for the main menu, and then switch to the pipes panel after a start button is pressed?</p>
  
  <p><strong>Classes</strong></p>
  
  <p>Game.java</p>
  
  <pre><code>import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import javax.swing.JFrame;
  import javax.swing.JPanel;
  import javax.swing.SwingUtilities;
  import javax.swing.Timer;
  
  public class Game {
  
      Pipes panel = new Pipes();
  
      public Game() {
          JFrame f = new JFrame();
  
          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          f.add(panel);
          f.setTitle("Pipe Game");
          f.setResizable(false);
          f.pack();
          f.setLocationRelativeTo(null);
          f.setVisible(true);
  
          Timer timer = new Timer(10, new ActionListener() {  //pipe speed
              @Override
              public void actionPerformed(ActionEvent e) {
                  panel.move();
              }
          });
          timer.start();
  
          Timer refresh = new Timer(30, new ActionListener() {    //refresh rate
              @Override
              public void actionPerformed(ActionEvent e) {
                  panel.repaint();
              }
          });
          refresh.start();
  
  
      }
  
      public static void main(String args[]) {
          SwingUtilities.invokeLater(new Runnable() {
  
              @Override
              public void run() {
                  new Game();
              }
          });
      }
  }
  </code></pre>
  
  <p>Pipes.java</p>
  
  <pre><code>import java.awt.Dimension;
  import java.awt.Graphics;
  import javax.swing.JPanel;
  
  public class Pipes extends JPanel {
      //Declare and initialiaze variables
      int x1 = 754;               //xVal start
      int x2 = 75;                //pipe width
                                  //total width is 83
      int y1 = -1;                //yVal start
      int y2 = setHeightVal();    //pipe height
      int gap = 130;              //gap height
  
      @Override
      public void paintComponent(Graphics g) {
          super.paintComponent(g);
  
          g.clearRect(0,0,750,500);                       //Clear screen
          g.drawRect(x1,y1,x2,y2);                        //Draw part 1
          g.drawRect(x1-3,y2-1,x2+6,25);                  //Draw part 2
          g.drawRect(x1-3,y2+25+gap,x2+6,25);             //Draw part 3
          g.drawRect(x1,y2+25+gap+25,x2,500-y2-49-gap);   //Draw part 4
      }
  
      public void move() {
          x1--;
      }
  
      public int getMyX() {   //To determine where the pipe is horizontally
          return x1-3;
      }
  
      public int getMyY() {   //To determine where the pipe is vertically
          return y2+25;
      }
  
      public int setHeightVal() {     //Get a random number and select a preset height
          int num = (int)(9*Math.random() + 1);
          int val = 0;
          if (num == 9)
          {
              val = 295;
          }
          else if (num == 8)
          {
              val = 246;
          }
          else if (num == 7)
          {
              val = 216;
          }
          else if (num == 6)
          {
              val = 185;
          }
          else if (num == 5)
          {
              val = 156;
          }
          else if (num == 4)
          {
              val = 125;
          }
          else if (num == 3)
          {
              val = 96;
          }
          else if (num == 2)
          {
              val = 66;
          }
          else
          {
              val = 25;
          }
          return val;
      }
  
      @Override
      public Dimension getPreferredSize() {
          return new Dimension(751, 501);
      }
  }
  </code></pre>