• Content count

  • Joined

  • Last visited

Community Reputation

107 Neutral

About DuckerDuck

  • Rank
  1. [SDL] SDL_Rect array

    Well, I found the problem. Somehow I got the function of code block 4 in a loop. Making NumberOfPlatforms grow far above 19. Thanks everybody for the respones,
  2. [SDL] SDL_Rect array

    [quote name='mrjones' timestamp='1340714851' post='4952991'] If number of platforms is 20 and you are looping over i<=NumberOfPlatforms then the last element is 21st out of 20, because you are looping over 0, 1, ..., 20 and that's 21 elements. So it's likely out of bounds as already mentioned. [/quote] The "NumberOfPlatforms" int starts out as 0, than (with the function of code block 4) the number is increased. Also, not rendering still makes the game crash. [quote name='Rene Z' timestamp='1340714632' post='4952990'] Also, have you ever used a debugger? It allows you to step through your code while the program is running, so you can see when and why it's crashing. [/quote] I have not, but setting breakpoints doesn't seem to work for me, when debugging the app closes instantly. (Visual Studio 2010 Express)
  3. [SDL] SDL_Rect array

    Hello, At the moment i'm trying implement plaforms in my 2d platformer. I want to store the platform data in an array of SDL_Rects. This is what I have: In my header: [CODE] private: SDL_Rect rPlatformArray[20];//maximum platforms in a level is 20 (for now) [/CODE] This is how I change the array data: [CODE] if (type == 4){ rPlatformArray[NumberOfPlatforms].x = x; rPlatformArray[NumberOfPlatforms].y = y; rPlatformArray[NumberOfPlatforms].h = h; rPlatformArray[NumberOfPlatforms].w = w; NumberOfPlatforms++; } [/CODE] And for rendering: [CODE] for (int i = 0; i <= NumberOfPlatforms;i++){ SDL_FillRect(screen,&rPlatformArray[i],0xFFFFFF); } [/CODE] The problem seems to occur when I try to run the second code block. There are no compile errors, only as soon as the game starts it crashes. Can you help me? Thanks, DuckerDuck
  4. [SDL] Timer problem

    Thanks BeerNutts, you're pseudo code got the job done.
  5. [SDL] Timer problem

    [quote name='ASnogarD' timestamp='1340196840' post='4950940'] A alternative way to overcome the problem is to set a flag on the portals, so that when you use a portal the exit portal will set the flag to cannot use until it stops detecting a collision with the player, and then it sets the flag to be can be used. Portal A - > B , player walks up to Portal A (flag set to can use) , Portal A sets Portal B flag to cannot use and teleports the player to Portal B, and while player is colliding with Portal B the flag remains cannot use but when the player walks out of collision range, Portal B sets its own flag to can use. [/quote] Thanks for the response, I tried to go with your idea with the flags, though I'm doing somwthing wrong here. Take a look: [CODE] if (CheckCol(PlayerLocation,rPortal1Loc) == true && PortalFlag1 == true){// if player collides AND the portal can be used, continue PortalFlag2 = false; //set the destination portal to: cannot use PlayerLocation.x = rPortal2Loc.x;//teleport PlayerLocation.y = rPortal2Loc.y;//teleport while (CheckCol(PlayerLocation,rPortal2Loc) == true){ //while colliding with the portal PortalFlag2 == false; // keep it set to false } PortalFlag2 = true; // not colliding? set back to true } if (CheckCol(PlayerLocation,rPortal2Loc) == true && PortalFlag2 == true){ // if player collides AND the portal can be used, continue PortalFlag1 = false; //set the destination portal to: cannot use PlayerLocation.x = rPortal1Loc.x;//teleport PlayerLocation.y = rPortal1Loc.y;//teleport while (CheckCol(PlayerLocation,rPortal1Loc) == true){ //while colliding with the portal PortalFlag1 == false; // keep it set to false } PortalFlag1 = true; // not colliding? set back to true } [/CODE] To me it seems like it should work, but it crashes the game.
  6. [SDL] Timer problem

    Hello, I'm currently trying to get familiar with SDL and C++, and i've been working on a little project involing a very basic game engine. What I want to do at the moment is to implement a simple portal system. I have two portals, if my player steps on one of them he teleports to the other and vice versa. The problem is that, when using the portal, the collsion detection of the other portal interferese, and teleports the player infinitly from portal to portal. I wanted to fix this by adding a small delay before the portal is usable again, but somehow the function I wrote makes the game crash. Here is the code i'm using: To set the delay: [CODE] void Core::setPortalDelay(int time){ Uint32 now; now = SDL_GetTicks(); while (now < time){ PortalDelay = true; } if (now > time){ PortalDelay = false; now = 0; } } [/CODE] and to teleport the player: [CODE] if (CheckCol(PlayerLocation,rPortal1Loc) == true && PortalDelay == false){ PlayerLocation.x = rPortal2Loc.x; PlayerLocation.y = rPortal2Loc.y; setPortalDelay(2000); } if (CheckCol(PlayerLocation,rPortal2Loc) == true && PortalDelay == false){ PlayerLocation.x = rPortal1Loc.x; PlayerLocation.y = rPortal1Loc.y; setPortalDelay(2000); } [/CODE] Thanks, DuckerDuck