title: Java - Creating a 2D tile map in a panel using Graphics2D Rectangles?
body: <p>I'm trying to simulate a battle in a really basic program, but since this is my first time with a big program in Java I'm pretty much clueless on how to proceed. I was thinking I'd have a big 600-by-600 panel and use Graphics2D to just draw the terrain as 20x20 rectangles... Unfortunately even with several tutorials I have no idea what to do.</p>
  
  <p>I have 10 different types of terrain to cycle through, and 5 different landscape profiles. Basically what I want the program to do is when I select a certain profile in a combobox, it paints the landscape and the two opposing sides in the battle (though I'm not quite there yet)</p>
  
  <p>Honestly I haven't made very much progress in the program. Should I be using just Graphics2D and rectangles for something like this, or should I switch to OpenGL or something similar? Although with my current Java experience, I don't think I'd get very far with it without help. Anyways, here's what I have so far:</p>
  
  <pre><code>public class Map extends JPanel {
      int n = 1;
      int x; int y;
      int Area = 750;
      public Color City = new Color(214,217,223);
      public Color Desert = new Color(255,204,102);
      public Color DirtRoad = new Color(153,102,0);
      public Color Forest = new Color(0,102,0);
      public Color Hills = new Color(51,153,0);
      public Color Lake = new Color(0,153,153);
      public Color Mountains = new Color(102,102,255);
      public Color Ocean = new Color(0,0,153);
      public Color PavedRoad = new Color(51,51,0);
      public Color Plains = new Color(102,153,0);
      public Rectangle blocks[];
      public Map(){
          blocks = new Rectangle[750];
          if (n == 1) {
              setBackground(City);
              n = 2;
          } else if (n == 2) {
              setBackground(Desert);
              n = 3;
          } else if (n == 3) {
              setBackground(DirtRoad);
              n = 4;
          } else if (n == 4) {
              setBackground(Forest);
              n = 5;
          } else if (n == 5) {
              setBackground(Hills);
              n = 6;
          } else if (n == 6) {
              setBackground(Lake);
              n = 7;
          } else if (n == 7) {
              setBackground(Mountains);
              n = 8;
          } else if (n == 8) {
              setBackground(Ocean);
              n = 9;
          } else if (n == 9) {
              setBackground(PavedRoad);
              n = 10;
          } else if (n == 10) {
              setBackground(Plains);
              n = 1;
          } else {
          }
          for (int i = 1; i &lt;= Area; i++) {
              blocks[i] = new Rectangle(x, y, 20, 20);
          }
      }
  </code></pre>
  
  <p>I got this far with several Youtube tutorials, so my code is a bit erratic. All I have in the main form code is a checkBox firing event. (GUI is pre-designed in Netbeans editor.)</p>