Jump to content

  • Log In with Google      Sign In   
  • Create Account

Beginning to code in C++, some rookie questions.


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 Got_Rhythm   Members   -  Reputation: 288

Like
0Likes
Like

Posted 14 January 2013 - 10:37 PM

Good evening, I am designing an RPG and attempting to teach myself all the relevant skills involved in producing the game. 

 

Before you all laugh, I am not attempting to complete the game as a one man army, I just want to learn a decent amount of art and design so that when I hire an artist, I can more accurately describe what I want in some of their own language. 

 

And so that when I hire a programmer, I can more accurately describe what I want in some of their own language. Besides, the more I learn, the more it all affects my concept (as in, what is realistic, what is workable, what is standard, and so on). Basically I want to be the best team leader I can by having at least some knowledge of all the relevant areas.

 

Also I just love learning stuff. 

 

 

Anyway, this is the code I have so far, using Visual C++ 2010 with SDL.

 

#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#pragma comment(lib, "SDL_TTF.lib")

#include "SDL.h"
#include "SDL_image.h"
#include <iostream>
#include <stack>
#include <string>
#include "SDL_TTF.h"
#include "Defines.h"

using namespace std;

int main(int argc, char *argv[])


{
const int SCREEN_WIDTH = 644;
const int SCREEN_HEIGHT = 400;
const int SCREEN_BPP = 32;

SDL_Surface *logo = NULL;
SDL_Surface *border = NULL;
SDL_Surface *screen = NULL;

SDL_Init(SDL_INIT_EVERYTHING);

SDL_WM_SetCaption("Necromancer", NULL);


screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE);
border = IMG_Load("Graphics/Title/Border.png");
logo = IMG_Load("Graphics/Title/Logo.png");


SDL_BlitSurface(logo,NULL,screen,NULL);
SDL_BlitSurface(border,NULL,screen,NULL);

SDL_Flip(screen);
SDL_Delay( 5000 );
SDL_FreeSurface(logo);
SDL_FreeSurface(border);

SDL_Quit();
return 0;
}

 

 

I have copied most of this stuff from websites, so most of it I genuinely have no idea what it does. But after hours of furious tweaking, it creates a screen in the size I want and displays two images I want for 5 seconds. A pretty big win for someone fumbling along. 

 

My question is, where do I insert code to tell the program to 'fade in' the logo, then fade it out again (over a total period of 3 seconds), and what what would that code look like?

 

Then I would like it to fade in and fade in a second image over 5 seconds, what would that code look like?

 

Thank you for your time and putting up with my awkward starting point. 

 

 

Kind regards,

 

Dan



Sponsor:

#2 kd7tck   Members   -  Reputation: 719

Like
3Likes
Like

Posted 15 January 2013 - 12:05 AM

I wasn't going to laugh, nor was anyone else here.

 

Get rid of SDL_BlitSurface(logo,NULL,screen,NULL); SDL_BlitSurface(border,NULL,screen,NULL); SDL_Flip(screen); and SDL_Delay( 5000 );

In it's place put the following:

 

 

//use SDL_SetAlpha instead of SDL_SetSurfaceAlphaMod when using SDL 1.2 or under.
unsigned int basetick = SDL_GetTicks();
unsigned int currenttick = SDL_GetTicks();
unsigned int time = 1500;//one and half second

while(currenttick - basetick <= time)
{
    Uint8 alph = (((float)currenttick - (float)basetick) / (float)time) * 255;
    SDL_SetSurfaceAlphaMod(logo, alph);

    //clear the screen here SDL_FillRect works, there are other ways to
    //SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format, 0, 0, 0));

    SDL_BlitSurface(logo, NULL, screen, NULL);
    SDL_BlitSurface(border, NULL, screen, NULL);
    SDL_Flip(screen);
    SDL_Delay( 10 );
    currenttick = SDL_GetTicks();
}

basetick = SDL_GetTicks();
currenttick = SDL_GetTicks();
while(currenttick - basetick <= time)
{
    Uint8 alph = (((float)currenttick - (float)basetick) / (float)time) * 255;
    SDL_SetSurfaceAlphaMod(logo, 255-alph);

    //clear the screen here SDL_FillRect works, there are other ways to
    //SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format, 0, 0, 0));

    SDL_BlitSurface(logo, NULL, screen, NULL);
    SDL_BlitSurface(border, NULL, screen, NULL);
    SDL_Flip(screen);
    SDL_Delay( 10 );
    currenttick = SDL_GetTicks();
}

 

I typed this out quick, there might be errors, but for the most part it should work. It's been a while since I have used SDL.



#3 Got_Rhythm   Members   -  Reputation: 288

Like
0Likes
Like

Posted 15 January 2013 - 01:05 AM

Thank you for your response. 

 

I should explain, when I said "Before you all laugh" I am sorry if it came across as insecure or aggressive, I was trying to be playful but I sometimes forget that tone is always lost on the internet. 

 

I am about to sleep now but will try this code out tomorrow evening. Thank you again!



#4 Goran Milovanovic   Members   -  Reputation: 1104

Like
1Likes
Like

Posted 16 January 2013 - 02:41 PM

C/C++ might not be the best place to start.

 

Take a look at this python video tutorial series; It goes through the development of a complete memory match game, from start to finish.


+---------------------------------------------------------------------+

| Game Dev video tutorials  ->   http://www.youtube.com/goranmilovano |
+---------------------------------------------------------------------+

#5 DavitosanX   Members   -  Reputation: 303

Like
1Likes
Like

Posted 16 January 2013 - 05:47 PM

I would personally recommend against using code that you find on the web if you have no idea what it does. When something goes wrong (and it often does in programming) you'll have no idea what might be the problem, where is it, or how to fix it. Work through tutorials, books and references, and find it what each lines means. At the very least, get a general idea.

 

I also second the suggestion to start with python.


Starting out in game programming? Me too! Check out my blog, written by a newbie, for the newbies. http://myowngamejourney.blogspot.mx/





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS