Java-Gaming.org Hi !
 Featured games (90) games approved by the League of Dukes Games in Showcase (797) Games in Android Showcase (234) games submitted by our members Games in WIP (864) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
 Home Help Search Login Register
Pages: [1]
 ignore  |  Print
 Placing houses on random generated map?  (Read 5794 times) 0 Members and 1 Guest are viewing this topic.
GustavXIII

Junior Devvie

Projects: 1

 « Posted 2018-10-19 12:29:15 »

EDIT: Fixed it by checking distance between houses.

If I create a random generated map with 2 dimension array like [50][50], how could I add random houses?
I thought about putting a random number inside every array field and if the number is like 7, then a house will be generated there.
I would have to edit the surrounding arrays to make it like a house shape.

But the problem is, what if many houses spawn close together? Then it would be weird having houses inside each other.
Is there some other solution?

 1 `int mapArray[][]= new int[50][50];`

 1  2  3  4  5  6  7  8  9  10  11  12 `  public void createMap(){            Random rand = new Random();            for (int x = 0; x < mapArray.length; x++) {               for (int y = 0; y < mapArray[x].length; y++) {                  int i = rand.nextInt(200);                  if (i==199) mapArray[x][y] = 2;                  else if (i > 150) mapArray[x][y] = 1;                                   else mapArray[x][y] = 0;               }            }}`

2 means a house should be build. 0 is grass tile and 1 earth.

I draw Map like this:
 1  2  3  4  5  6  7  8  9  10  11  12  13  14 `public void drawMap(Graphics g){        for (int x = 0; x < mapArray.length; x++) {            for (int y = 0; y < mapArray[x].length; y++) {               switch (mapArray[x][y]) {               case 0: g.drawImage(grass, x * 64, y * 64);                  break;               case 1: g.drawImage(earth, x * 64, y * 64);               break;               case 2: g.drawImage(stone, x * 64, y * 64);               break;                           }            }         }             }`
fenaryh
 « Reply #1 - Posted 2018-12-07 21:19:15 »

Hi, GustavXIII!

The way I usually do is for every object I've created in the map, it will hold his position AND size, like (x, y, width, height). And all of them will be added to a List (Array, LinkedList, etc)

So, any time you will try to create an object, you check before, using simple rectangle collision between the new one and all of the array, like so:

 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30 `class ObjectCreator(){      public static void createObject(){      MyObject newObject = new MyObject(random_x, random_y, type_of_object_width, type_of_object_height);      boolean collide = false;            for(MyObject myobj : arrayOfMyObjects){         if(collides(myobj, newObject)){            //OBJECTS ARE COLLIDING, SO YOU DON'T ADD                        collide = true;            return; //just one collide is enough, don't need to continue walkin the array         }      }            if(!collide){         arrayOfMyObjects.add(newObject);      }   }   public boolean collides(MyObject A, MyObject B){      Rectangle rA = new Rectangle(A.x, A.y, A.width, A.height);      Rectangle rB = new Rectangle(B.x, B.y, B.width, B.height);      return rA.intersects(rB);   }   }`

This way you can have multiple objects with different sizes.

Hope it can help!
Pages: [1]
 ignore  |  Print

 hadezbladez (3629 views) 2018-11-16 13:46:03 hadezbladez (1294 views) 2018-11-16 13:41:33 hadezbladez (3634 views) 2018-11-16 13:35:35 hadezbladez (697 views) 2018-11-16 13:32:03 EgonOlsen (4000 views) 2018-06-10 19:43:48 EgonOlsen (4528 views) 2018-06-10 19:43:44 EgonOlsen (2688 views) 2018-06-10 19:43:20 DesertCoockie (3548 views) 2018-05-13 18:23:11 nelsongames (3701 views) 2018-04-24 18:15:36 nelsongames (4726 views) 2018-04-24 18:14:32
 KaiHH 12x TritonDreyja 10x voismager 6x princec 5x Riven 5x dime26 4x Drenius 3x SugarBlood 3x laht 3x FabulousFellini 2x homac 2x ral0r2 2x philfrei 2x elect 2x Phased 1x SHC 1x
 Java Gaming Resourcesby philfrei2019-05-14 16:15:13Deployment and Packagingby philfrei2019-05-08 15:15:36Deployment and Packagingby philfrei2019-05-08 15:13:34Deployment and Packagingby philfrei2019-02-17 20:25:53Deployment and Packagingby mudlee2018-08-22 18:09:50Java Gaming Resourcesby gouessej2018-08-22 08:19:41Deployment and Packagingby gouessej2018-08-22 08:04:08Deployment and Packagingby gouessej2018-08-22 08:03:45
 java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org