Tuesday 4 September 2012

Select Your Side

Today I've spend about 3-4 hours working on my game, I've gotten the double jump working, bad garbage can now hit and kill rats, and the level selection page is working.

For the double jump, I was having a hard time getting it to do what I wanted, but after taking a look at the code I've been trying to use I realized something, it would be far easier so just delete the guts of the function and start over. After looking back I saw just how complicated I had been making it, when in reality I was able to cut down between 5-10 lines of code and get it to work perfectly.

When I wanted to get the garbage to his the rats as well as the rubbish I first didn't think it would have to be done any differently then the hit detection I have for the garbage hitting the rubbish or the rubbish hitting the rats, however after did some thinking I had to consider that all the garbage and rats only has two targets they were looking for, one is the single rubbish and the other is the non-moving ground. This was easy enough to do if I just kept track of the rubbish's current x and y, along with it's height and width, but since there could be multiple rats and bad garbage I had to think of a different way. I ended up making a 2D array, with each position containing a smaller array containing information about that particular bad garbage. It has it's current x and y positions, it's width and height, if it's been removed from the screen(I used a Boolean) and it's name. This allowed my rat, every time it tried to move, to scan through this array using a while loop, checking to see if it was currently colliding with any bad garbage that was still on screen. The rat kills itself then modifies the array referring to the garbage that hit it, so when the garbage updates it see's that it's collided and shouldn't be on screen anymore so it kills itself.

The level selection page wasn't that much extra work because I've been coding this game so far so it works off what the current level it, so all I have to do when a different level is selected, is to then assign stats.currentLevel to the number of the button clicked. I did have a few problems trying to catch the event that was dispatched when a level was clicked but I was able to fix this by having my map page listen for the buttons on it, then dispatch it's own event to the main page controller when something was clicked. In order to place all the different level buttons using code but without taking too much time I ended up using 2D arrays again with a while loop. Each array inside the main array just contains the x and y position of each level button, this way all I have to do is change those two numbers, which are all in one location, in order to get the buttons to move around. I'm starting to use arrays more and I have to say they really cut down on not only the lines of code that I have to write, but it also makes it easier to go back and make changes later, if you arn't a big fan of arrays I'd really suggest finding a few tutorials and trying to slowly incorporate them into your projects, before long you'll hopefully find them as helpful as I do.


No comments:

Post a Comment