AnD4D's Recent Forum Activity

  • AnD4D

    I Love challenges so I give it a try

    Capx:

    https://www.dropbox.com/s/vu4b0v2dmgbkfoe/LimitedFlood_1.capx?dl=0

    This is based on what I understood but maybe I understood it wrong though

    Not bad, but if you click on one tile, then click on one far away, the original tiles continue to 'flow'.

  • I think this may be solved by replacing the mentioned distance event with a "nearest" event.

  • I can’t open the capx right now, but Here’s another idea. I looked a your first capx briefly when I was at my computer.

    Give the grid sprite a number instance variable and call it n. You’ll also want the origin of the sprite to be centered.

    Also create another sprite and call it detector. Make it’s origin to the left and make it’s size 32,4. I’m assuming the grids are 32,32.

    Global n=1
    
    On click
    —set n to 0
    —set grid.n to 0
    —if mouse is over grid
    ——add 1 to n
    ——set grid.n to n
    
    On click
    Repeat 50 times
    —If grid.n=loopindex+1
    ——set grid.opacity to 50
    ——set detector position to grid
    —Repeat 4 times
    ——Set detector.angle to 90*loopindex
    ——if detector not overlapping wall
    ——if grid overlapping detector
    ——if grid.n=0
    ———add 1 to n
    ———set grid.n to n[/code:3rd394h9]
    
    Change the repeat to the number of grids to highlight. Also I used opacity to do the highlighting but you can use anything.
    

    Thanks R0j0. Wouldn't the overlapping detector use more cpu than dop2000's above method?

    Imagine my grid is 16/16 made up of hundreds of tiles, with lots of flooding. I usually find that when I included collision or overlapping in my games, things start to slow down rather quickly.

  • Here is my attempt:

    https://www.dropbox.com/s/xtyt0o9icn9jr ... .capx?dl=0

    Not sure if this is how you want it to work, but my version doesn't require "waits". And I also don't like using arrays <img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Smile">

    Oh that is clever. I completely forgot that a sprite views it's family version of itself as a different thing.

    I'm now trying to push it a little bit further, having the flooded parts remain in a second click, but spreading. By that, I mean, say you're using a flood of 5. When you click on a tile, 5 other tiles are highlighted. Then if you click the exact same tile, 5 additional tiles appear, spreading out from the additional flood, meaning you're now covering 10 tiles.

    So no matter where you click, the flood will form from the clicked tile, but consider every already flooded tile as already flooded, and just move past it to an unflooded space.

    I've changed the code enough to get this working with 2 tiles, but after 4 clicks, it won't spread past it. I think it's something to do with the TileFloor.Width*1.1, but can't see why.

    I've uploaded your example which I amended here.

    http://bearboxmedia.com/apps/Temp/flooding_.capx

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • I would go with some recursive function using "is over lapping", which is where it would all go horribly wrong.

    Luckily R0j0 will be along shortly to do it correctly.

    See, I did think of doing it with overlapping, in fact, I started to do it using offsets, but I can very rarely get them working, and fear that I'm likely to use too much CPU checking so many collisions.

    I've updated the original post's capx to show the new version.

    Now, for some reason, which I can't figure out, nor replicate using code... If I multi-click a tile, the code appears to run faster. Why might that be?

  • So you want a flood fill?

    Ahh, it has a name! Much better than my use of the word "flow". Heh!

    I've been changing the code here and there, and managed to get something close to what I want, but it requires a loop with a "Wait 0 Seconds" included to force the next skip. Every time I remove the 'wait' it stops working. I'm trying to store the position of each Flooded Tile, so perhaps the wait is useful.

    Do you know of a better way to do what I'm looking for?

  • You could use "pick closest", and compare distance() using a function and variable filtering.

    Thanks for your message, but that is what I've already done in the capx I posted a link to.

    It doesn't help in regard to the 'flow' effect I'm looking for.

  • Think of it as water slowly pooling out from where you initially select. I only used line of sight to ensure it doesn't 'flow' through walls.

  • I'm having a bit of trouble with this code.

    Object Selection

    I want to be able to click on a sprite, and have the closest X number of similar sprites selected as well.

    In my example CAPX, I have a grid which is divided by a wall. On the left is a textbox that will allow you to alter a number. Note that when you click on a sprite, the closest X other objects that the initial selection can "see" will be selected.

    This is great if you want to do a grid based 'fog of war' type of game, but I literally just want to do it with selection. I have the wall in place because I want to select the objects within one 'room' before selecting objects in the next, rather than it just spreading out in an area around the initial selection.

    As it stands, if the initial selection can't see the next room, none of the sprites in that room will be selected, no matter how high the X number selection is.

    Does anyone know of a clever way to achieve this?

    Going to be cheeky and tag in R0J0hound on this one, seeing as I was helped a lot the last time

  • Ah, of course. The second loopindex effectively resets the loop back down to zero. Silly mistake to make.

    Thank you very much!

  • R0J0hound That's some brilliant code there. I especially like the little bounce. I do, however, note that it's quite a large number of events. I understand you don't like to use plugins, but I use them if it means fewer events. The more events I have, the greater the chance that I make a mistake.

    However, I will give it a go, as it looks like it can be integrated quite easily into many projects.

    As FTL has a series of different layouts, however, I feel it may be easier to create the levels with a runtime program, and converting the sprite positions and angles.

    I therefore created the following: http://bearboxmedia.com/Temp/Clone2.capx

    BUT I don't know if I'm looking at a bug, or if there's something I'm doing wrong. When I run a function to convert the positions to an array, it'll do the first set, but not the second. When I disable the first set, the second will be added, so I think everything's correct with the code. I put in a delay in the hope that it'll fix it, as well as create a separate function for the second group, but that's not working either.

    I'm also still having problems with the positioning. I don't like the fact that I can place a wall in the middle of a floor. Also, I tried "INT" instead of "ROUND", but that also caused problems.

    Honestly, I thought this little exercise would be a lot easier than it is. Genuinely surprised, as it really does appear a lot more simple than it seems to be.

  • the prizes do not appeal to me, a dinner with Laura_D would have been better

    Creepy...

AnD4D's avatar

AnD4D

Member since 4 Nov, 2011

Twitter
AnD4D has 3 followers

Connect with AnD4D

Trophy Case

  • 13-Year Club
  • Forum Contributor Made 100 posts in the forums
  • Forum Patron Made 500 posts in the forums
  • Forum Hero Made 1,000 posts in the forums
  • Coach One of your tutorials has over 1,000 readers
  • Regular Visitor Visited Construct.net 7 days in a row
  • RTFM Read the fabulous manual
  • Email Verified

Progress

20/44
How to earn trophies