Example #1
0
int
initializeGame(tGame * game)
{
    int error = 0;

    /* Inicializar Ai */
    game->ai.lockWay = FALSE;
    game->ai.lockTarget = FALSE;
    game->ai.minAlive = 1;
    game->undos = 0;

    if ((error = initializePlayer(&(game->user), &(game->theme)))!=0)
    {
        if (error)
        {
            switch(error)
            {
            case STATUS_ARMY:
                freeField((game->user.enemyField), game->theme.rows);
                freeField((game->user.defenseField), game->theme.rows);
                break;
            case DEFENSE_FIELD:
                freeField((game->user.enemyField), game->theme.rows);
                break;
            case ENEMY_FIELD:
                break;
            }
            return NO_MEMORY;
        }
    }
    if ((error = initializePlayer(&(game->machine), &(game->theme)))!=0)
    {
        if (error)
        {
            switch(error)
            {
            case STATUS_ARMY:
                freeField((game->machine.enemyField), game->theme.rows);
                freeField((game->machine.defenseField), game->theme.rows);
                break;
            case DEFENSE_FIELD:
                freeField((game->machine.enemyField), game->theme.rows);
                break;
            case ENEMY_FIELD:
                break;
            }
            freeField((game->user.enemyField), game->theme.rows);
            freeField((game->user.defenseField), game->theme.rows);
            freeStatusArmy(&(game->user.statusArmy), &(game->theme));
            return NO_MEMORY;
        }
    }
    return error;
}
Example #2
0
void playerGameover(Game* game)
{
    if(game->doGameover == 1){
        int i;
        char text[200];

        sprintf(text, "Press ENTER");
        loadSong(1,"data/sounds/gameover.mp3",game);

        while(game->input->enter == 0)
        {
        i = SDL_GetTicks();

        drawImage(game->gameover,0,0, game);
        drawString(text, 350, 400, 150, 150, 150, game->fontGameover,game);
        SDL_Flip(game->screen);
        while(SDL_GetTicks()-i != 500 && game->input->enter == 0)
        getInput(game->input,game);
        drawImage(game->gameover,0,0, game);
        SDL_Flip(game->screen);
        while(SDL_GetTicks()-i != 1000 && game->input->enter == 0)
        getInput(game->input,game);

        }
        game->input->enter = 0;

        loadGame(game);
        initializePlayer(game->player);

    }

}
Example #3
0
/**
* \fn int main(int argc, char* argv[])
* \brief Main function.
* \param[in] argc Number of argument passed to the program.
* \param[in] argv Arguments passed to the program.
*/
int main(int argc, char* argv[]) {

   unsigned int frameLimit;

   /*Create the Game structure*/
   Game* game = createGame();

   frameLimit = SDL_GetTicks()+16;

   /* initializes SDL */
   initGame("MyLittleProject",game);

   /* initializes player */
   initializePlayer(game->player);

   /* loads resources */
   loadGame(game);

   /* Main loop */
   while(game->go == 1) {
      /* reads input from keyboard */
      getInput(game->input, game);

      /* checks if menu is used */
      if(game->onMenu == 0) {
         /* updates game */
         updatePlayer(game->player,game);
         updateObject(game);

         /* displays everything */
         draw(game);

      } else {
         switch(game->menuType) {

         case START :
            updateStartMenu(game->input,game);
            drawStartMenu(game); // ya un bug ici !
            break;

         case SELECT_LEVEL :
            updateSelectLevelMenu(game->input,game);
            drawSelectLevelMenu(game);

         }
      }

      /*set the framerate at 60 FPS*/
      delay(frameLimit);
      frameLimit = SDL_GetTicks()+16;
   }

   /*free everything*/
   destroyGame(game);

   return EXIT_SUCCESS;
}
Example #4
0
void updatePlayer(Input *input)
{
    /* On rajoute un timer au cas où notre héros mourrait
    Si le timer vaut 0, c'est que tout va bien, sinon, on le décrémente jusqu'à 0, et là,
    on réinitialise.
    C'est pour ça qu'on ne gère le joueur que si ce timer vaut 0. */
    if(player.timerMort == 0)
    {
        if(!player.touch) // S'il n'est pas touché
        {
            /* On gère le timer de l'invincibilité */
            if(player.invincibleTimer > 0) player.invincibleTimer--;

            /* On réinitialise notre vecteur de déplacement latéral (X), pour éviter que le perso
            ne fonce de plus en plus */
            player.dirX = player.dirY = player.isAttacking = 0;

            attackManagement(input, &player);

            if(player.state < ATTACK_HORIZONTAL && input->puched < 3) playerDir(input, &player);

            /* Si on n'appuie sur rien, on charge l'animation marquant l'inactivité (Idle), je n'ai pas regarder encore si je pouvais l'optimiser */
            playerIdle(input, &player);

            resetInput(input);
        }
        /* Sinon si il est touché */
        else if(player.touch)
            entityTouch();

        /* On rajoute notre fonction de détection des collisions qui va mettre à
        jour les coordonnées de notre héros. */
        mapCollision(&player);

        /* On gère le scrolling */
        centerScrollingOnPlayer();
    }



    /*Gestion de la mort. Si timerMort est différent de 0, c'est qu'il faut réinitialiser le joueur.
    On ignore alors ce qui précède et on joue cette boucle (un wait en fait) jusqu'à ce que
    timerMort == 1. A ce moment-là, on le décrémente encore -> il vaut 0 et on réinitialise
    le jeu avec notre bonne vieille fonction d'initialisation */
    if(player.timerMort > 0)
    {
        player.timerMort--;
        if(player.timerMort == 0)
        {
            changeLevel();
            initializePlayer(0);
        }
    }

}
Example #5
0
int main(int argc, char *argv[])
{
	unsigned int frameLimit = SDL_GetTicks() + 16;
	int go;

   	/* Initialisation de la SDL */

	init("RageGame");

    /* On initialise le joueur */
     initializePlayer();

	/* Chargement des ressources (graphismes, sons) */
	loadGame();

	/* Appelle la fonction cleanup à la fin du programme */

	atexit(cleanup);

	go = 1;


	/* Boucle infinie, principale, du jeu */

	while (go == 1)
	{

		/* On prend on compte les input (clavier, joystick... */
		getInput();

		/* On met à jour le jeu */
		updatePlayer();

		/* On affiche tout */
		draw();

		/* Gestion des 60 fps (1000ms/60 = 16.6 -> 16 */
		delay(frameLimit);
		frameLimit = SDL_GetTicks() + 16;

	}

	/* Exit */

	exit(0);
}
Example #6
0
void endLevel(Game* game)
{

    int i;
    char text[200];


    sprintf(text, "Press ENTER to CONTINUE");
    loadSong(1,"data/music/Victory Theme (Faded).mp3",game);


    while(game->input->enter == 0)
    {
    i = SDL_GetTicks();

    drawImage(game->endLevel,0,0, game);
    drawString(text, 160, 560, 250, 250, 250, game->fontGameover,game);
    SDL_Flip(game->screen);
    while(SDL_GetTicks()-i != 500 && game->input->enter == 0)
    getInput(game->input, game);
    drawImage(game->endLevel,0,0, game);
    SDL_Flip(game->screen);
    while(SDL_GetTicks()-i != 1000 && game->input->enter == 0)
    getInput(game->input,game);

    }
    game->input->enter = 0;

    if(game->level <= LEVEL_MAX){

        initializePlayer(game->player);
        loadGame(game);
    }

    else{

        game->level = 1;
        loadGame(game);
        game->onMenu = 1;
        game->menuType = START;
    }
}
Example #7
0
// WinMain関数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	LPSTR lpCmdLine, int nCmdShow)
{
	ChangeWindowMode(TRUE);

	// DXライブラリの初期化
	if (DxLib_Init() == -1) return -1;

	//マップ初期化
	initializeMap();

	//画像読み込み
	initializePlayer();


	// アクションゲームのメイン関数を呼ぶ
	ActMain();

	// DXライブラリの後始末
	DxLib_End();

	// 終了
	return 0;
}