Working with Tiles in Tilemap: Count amount of Tiles

2

Stats

2,380 visits, 2,917 views

Tools

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 30 May, 2018. Last updated 19 Feb, 2019

THE GREAT QUESTION: HOW DO I KNOW WHAT TILES I HAVE IN A TILEMAP?

Well that is a question I asked myself and when looking for a reference I realized that there is no tutorial or reference with a solution to this question (at least San Google did not find it).

This problem was presented to me by doing a simple ARCANOID style game and wanting to know how many TILES I drew inside a TILEMAP object and take advantage of the TILEMAP object's characteristic to do the STAGES, to which the doubt assailed me:

** How many TILES did I draw so that when I finished destroying them, the game went on to the next stage?

With several stages already ready and with no desire to start counting the TILES one by one, I wanted CONSTRUCT 2 to do the job.

We must know that no matter what mechanics we do, this will work for any TILEMAP that we have in our game.

1.- We must create 2 objects 1 TILEMAP and 1 Text. Our Tilemap for the example will be called "STAGES".

2.- Add the image with which you will work within the Tilemap.

Example:

3.- Create an Instance Variable within the Tilemap.

In this case, "CBLOQUE" will keep track of how many Tiles the corresponding Tilemap has active.

4.- We will start creating an EVENT ON START OF LAYOUT and a FOREACH set as SubEvent and with this we select from TILEMAP (0) .... to the TILEMAP (n).

Where the SENTENCE IS 0 and the Order: Ascending.

5.- We created a SubEvent of the FOR System to count VERTICALLY, here it is IMPORTANT to know the TIL ALT (not the TILEMAP), for the example that the HIGH OF EACH TILE IS = 8. To know how many TILES fit in a VERTICAL we divide the HEIGHT of the TILEMAP by the HEIGHT of the TILE .... with ETAPAS.Height / 8.

This FOR is called "CONTVERT".

6.- We created a System SubEvent FOR to count HORIZONTALLY, here it is IMPORTANT to know the Tile WIDTH (not TILEMAP), for the example I know that the WIDTH of EACH TILE IS = 16. To know how many TILES fit HORIZONTAL we divide the TILEMAP WIDTH by the TILE WIDTH .... with ETAPAS.Width / 16.

This FOR is called "CONTHOR".

A SUMMARY OF WHAT UNTIL THE MOMENT WE HAVE DONE ...

7.- Here the good starts ... this part is what makes the magic.

Again add a SubEvento System "COMPARE TWO VALUES", which will be responsible for searching with "TILEAT" of the TILEMAP and within the "LOOPINDEX": "CONTVERT" AND "CONTHOR" and compare if it is empty (Value "-1") or full (different or greater than "-1"), making a small variation we can count any number "INDICE" TILE (Example: Only the "0" or "10", to know how many of each type).

It would be like this: STAGES.TileAt (loopindex ("CONTHOR"), loopindex ("CONTVERT"))

8.- Once all these EVENTS are done, we create an ACTION that adds 1 to the variable CBLOQUE, when it finds a value different to "-1" inside the TILES spaces of TILEMAP and that represents it in a TEXT.

And that's it, we already know how many TILES we put in and we can compare how many were destroyed or generate some action based on CBLOQUE.

Final example:

Here we have 1 TILEMAP copied 1 time and with different TILES in both INDEX and quantity.

We superpose them ...

And when executing ...

https://youtu.be/vmlHqD65ook

I hope this Tutorial is clear and easy to understand and above all will help you.

  • 1 Comments

  • Order by
Want to leave a comment? Login or Register an account!