Ejemplo n.º 1
0
/**
 * \fn void partie()
 * \brief Permet le bon déroulement de la partie.
 *
 */
void partie(){
	perso_vivant();
	while(!victoire() && action != 5){
		tour();
		i_perso_actuel = 0;
	}
	if(action == 5);
	else printf("Le joueur %i a gagné !\n", victoire());
}
Ejemplo n.º 2
0
/**
 * \fn void tour()
 * \brief Permet le bon déroulement d'un tour
 *
 */
void tour(){
	/*Tant qu'on a pas utilisé tous les persos, que personne n'a gagné et qu'on ne décide pas de retourner au menu principal*/
	while(i_perso_actuel < i_taille_tab_perso && !victoire() && action != 5){
		actio(&tab_perso[i_perso_actuel]);
		i_perso_actuel++;
	}
}
Ejemplo n.º 3
0
/**
 * \fn void actio(t_perso *perso)
 * \param perso Personnage du tableau de perso 
 * \brief Effectue une action pour un personnage 
 *
 */
void actio(t_perso *perso){
	if(perso->i_HP > 0){

		int PA_actuel = perso->i_PA, PM_actuel = perso->i_PM; /*Permet de ne pas modifier les statistiques du personnage*/
		do{
			afficher_map();
			affichage_perso(*perso);
			printf("%i PA, %i PM\n", PA_actuel, PM_actuel);
			printf("1 - Deplacement\n");
			printf("2 - Attaque\n");
			printf("3 - Passer\n");
			printf("4 - Sauvegarder\n");
			printf("5 - Menu Principal\n");
			scanf("%i", &action);
			switch(action){
				case 1:	deplacement(&PM_actuel);
					break;
				case 2: attaque(&PA_actuel);
					break;
				case 3: printf("Passage de tour\n");
					break;
				case 4: save();
					break;
				case 5: break;
			}
			perso_vivant();
		}while(action != 3 && action != 5 && !victoire());
	}
}
Ejemplo n.º 4
0
int jouerNiv(int niv)
{
    t_listePerso* liste;
    liste=creer_liste_perso();
    float mapx=0;
    float v_scroll=2;
    int test_appui=0;
    int compt=0;
    int fini=-1;

    ajouterPerso(liste,50,SCREEN_H/2);

    while (!key[KEY_ESC])
    {
        compt++;
        if (key[KEY_ENTER] && test_appui==0)
        {
            ajouterPerso(liste,0,SCREEN_H/2);
            test_appui=1;
        }
        if (!key[KEY_ENTER] && test_appui==1)
        {
            test_appui =0;
        }
        fini=victoire(&mapx,&v_scroll,liste);
        if (fini!=-1)
        {
            return fini;
        }
        score(liste);
        scroll(&mapx,&v_scroll);
        fini=actualiserListePerso(liste,&compt,v_scroll);
        if (fini!=-1)
        {
            return fini;
        }
        tuer_Perso(liste);
        affichage(&mapx,liste);
        actualiser_bitmap_collision(&mapx,liste);
        rest(8);

    }
    return fini;
}
Ejemplo n.º 5
0
/**
* \fn void Lancer_Jeu()
* \brief fonction qui permet de lancer et enregistrer la partie dans un fichier .
*/
void Lancer_Jeu()
{
	
	Pion grille[N][M]; 
	FILE * fichier; /*fichier de sauvegarde nom des joueurs et resultats partie !*/
	fichier=fopen("resultats.txt","a+");
	int joueur,j=0, colonne, compteur=0,rep=0,score, total,choix;
	char pion;
	printf("\n");
	initialiser_grille(grille);
	afficher_grille(grille);
	printf(" \n Bienvenue dans le  mode jeu puissance 4++ \n ");
	
	do
	{
		printf("\n Combien de joueurs  vont jouer ? (maximum 4) : ");
		scanf("%i",&joueur);
	}while(joueur<2 || joueur>MAX_JOUEUR);
	printf(" \33[31m /! Pour rappel, un systeme d'aide a était mit en place, si vous demandez de l'aide \n");
	printf(" alors que tous vos pions sont encerclés, ou aucun de vos pion n'est placé,  \n");
	printf(" vous serez  alors pénalisé, votre tour sautera ! Bonne Partie ! / \33[30m \n");

	while (compteur !=42) //tant que la grille n est pas remplie
    	 {
     								
			j=joueursuivant(j,joueur);
			printf("\n\n\t\t==============## Joueur \33[31m %i\33[30m   ##================\n\n",j);
			do{
				printf("Tapez 1 si vous avez besoin d'aide sinon Tapez 2 : ");
				scanf("%i",&choix);
			}while(choix!=1 && choix!=2);
			switch(choix){
				case 1: 
					Help_Me(j,grille);
					afficher_grille(grille);
					rep=victoire(j,grille);
					if (rep==1)
					{	
						printf("\n Le joueur %i a gagné ! \n", j);
						fprintf(fichier,"%i %i %i \n",j,1,1);
					};
					break;
				case 2:
					printf("Dans quelle colonne voulez-vous jouez et quel type de pièce? \n Pleine (p), Creuse (c), Bloquante (b) ");
					scanf("%i%c",&colonne,&pion);
					
					while (colonne>M || colonne<1 ||( pion !='b' && pion !='c'&& pion!='p')) /*cas erreur*/
					{ 
						printf("veuillez ressaisir le numero de la colonne (entre 1 et 7) et le type de la pièce ");
						scanf("%i%c",&colonne,&pion);
					}
					if (colonne_pleine(pion,colonne,grille))//on regarde si la colonne est pleine
					{
						printf("La colonne est pleine, ressaisissez la colonne et le type de piece ");
						scanf("%i%c",&colonne,&pion);
					}
					jouer(grille,colonne,pion,j) ;
					rep=victoire(j,grille);
					afficher_grille(grille);
					compteur++;

					
					if (rep==1){
						printf("\n Le joueur %i a gagné ! \n", j);
						fprintf(fichier,"%i %i %i \n",j,1,1);
					};
					break;
				
			}
	}
	
	if (compteur ==42){ // si la grille est remplie
		printf(" Match nul, la grille est remplie sans detection de victoire \n ");
		for(j=1;j<5;j++){
			fprintf(fichier,"%i %i %i \n",j,0,0);	
		
		}
	}else{	
		switch(j){
			case 1:fprintf(fichier,"%i %i %i \n",2,0,0);fprintf(fichier,"%i %i %i \n",3,0,0);fprintf(fichier,"%i %i %i \n",4,0,0);break;
			case 2:fprintf(fichier,"%i %i %i \n",1,0,0);fprintf(fichier,"%i %i %i \n",3,0,0);fprintf(fichier,"%i %i %i \n",4,0,0);break;
			case 3:fprintf(fichier,"%i %i %i \n",1,0,0);fprintf(fichier,"%i %i %i \n",2,0,0);fprintf(fichier,"%i %i %i \n",4,0,0);break;
			case 4:fprintf(fichier,"%i %i %i \n",1,0,0);fprintf(fichier,"%i %i %i \n",2,0,0);fprintf(fichier,"%i %i %i \n",2,0,0);break;
		
		}

	}
	
	rewind(fichier);/*met le pointeur du fichier au debut*/
	while(!feof(fichier))
	{
			fscanf(fichier,"%i",&j);// afficher les joueurs et leur score mis a jour a voir 
			fscanf(fichier,"%i",&score);
			fscanf(fichier,"%i",&total);
			printf ("joueur %i : score %i total %i \n",j,score,total);
			break;
	}
		
	fclose(fichier);
}
Ejemplo n.º 6
0
int main(int argc, char** argv) {
    Input in;
    Context C;
    navire nav_j[NB_BOATS];
    navire nav_c[NB_BOATS];
    int limit[4] = {43, 340, 43, 348};
    int i, j;
    int** grille_c= NULL;
    int** grille_j = NULL;
    int done = 0;
    int gagne = 0;

    grille_c= malloc(T_GRILLE*sizeof(int*));
    grille_j = malloc(T_GRILLE*sizeof(int*));
    if(grille_c== NULL || grille_j == NULL)
	exit(EXIT_FAILURE);
    for(i = 0; i < T_GRILLE; i++) {
	grille_c[i] = calloc(T_GRILLE, sizeof(int));
	grille_j[i] = calloc(T_GRILLE, sizeof(int));
	if(grille_c[i] == NULL || grille_j == NULL)
	    exit(EXIT_FAILURE);
    }
    
    (void) argc;
    (void) argv;

    /*Initialisation SDL, SDL_ttf*/
    if(initSDL(&C) == -1)
	return EXIT_FAILURE;
    
    srand(time(NULL));

    do {
	/*Initialisation contexte*/
	if(initC(&C) == -1)
	    return EXIT_FAILURE;

	for(i = 0; i < T_GRILLE; i++) {
	    for(j = 0; j < T_GRILLE; j++) {
		grille_c[j][i] = 0;
		grille_j[j][i] = 0;
	    }
	}

	for(i = 0; i < NB_BOATS; i++) {
	    nav_j[i].c = 0;
	    nav_c[i].c = 0;
	}

	done = 0;
	gagne = 0;

	memset(&in, 0, sizeof(in));
	memset(nav_j, 0, sizeof(nav_j));
	memset(nav_c, 0, sizeof(nav_c));

	/*Placement des nav_j...*/
	chtxt(&C, PLACE_NAV_J);
	placing_boats(&in, &C, nav_j);
	while(in.key[SDLK_RETURN]) {
	    UpdateEvents(&in);
	    SDL_Delay(20);
	}
	computer_placing_boats(nav_c);
	chtxt(&C, PLACE_NAV_C);
	
	/*On place maintenant le viseur*/
	C.cViseur.x = 43;
	C.cViseur.y = 43;
	
	/*Boucle de jeu*/
	while (!gagne && !in.key[SDLK_q] && !in.key[SDLK_r]) {
	    done = 0;
	    while(!done) {
		UpdateEvents(&in);
		if(in.quit || in.key[SDLK_q] || in.key[SDLK_r])
		    break;
		if(Evolution(&in, &C.cViseur.x, &C.cViseur.y, limit, NULL, 0)) {
		    if(case_test(C.cViseur.x, C.cViseur.y, grille_c)) {
			grille_c[((C.cViseur.y-43)/CELL_W)][((C.cViseur.x-43)/CELL_W)] = 1;
			
			if(!joueurAttaque(&C, nav_c)) {
			    done = 1;
			    chtxt(&C, "...");
			}
			else
			    chtxt(&C, TOUCHE_NAV_J);

			coule(&C, nav_j, nav_c);
		
			if(victoire(nav_j, nav_c) == 2) {
			    gagne = 1;
			    chtxt(&C, VICTOIRE_J);
			    UpdateScreen(&C, nav_j);
			    while(1) {
				UpdateEvents(&in);
				if(in.key[SDLK_r] || in.key[SDLK_q])
				    break;
				SDL_Delay(30);
			    }
			}
		    }
		}
		UpdateScreen(&C, nav_j);
		if(!in.key[SDLK_LEFT] && 
		!in.key[SDLK_RIGHT] && 
		!in.key[SDLK_DOWN] && 
		!in.key[SDLK_UP] && 
		!in.key[SDLK_RETURN])
		    SDL_Delay(20);
		else
		    SDL_Delay(200);
	    }
	    
	    UpdateEvents(&in);
	    if(in.quit || in.key[SDLK_q] || in.key[SDLK_r])
		break;

	    UpdateScreen(&C, nav_j);
	    SDL_Delay(200);
	    while(ordiAttaque(&C, nav_j, grille_j)) {
		chtxt(&C, TOUCHE_NAV_C);
		coule(&C, nav_j, nav_c);
		UpdateScreen(&C, nav_j);
		SDL_Delay(400);
	    }

	    if(victoire(nav_j, nav_c) == 1) {
		gagne = 1;
		chtxt(&C, VICTOIRE_C);
		UpdateScreen(&C, nav_j);
		while(1) {
		    UpdateEvents(&in);
		    if(in.key[SDLK_r] || in.key[SDLK_q])
			break;
		    SDL_Delay(30);
		}
	    }
	}

	if(in.quit || in.key[SDLK_q])
	    break;

    } while(1);
    
    /*On libère tout*/
    C.nbimg = sizeof(C.images_v)/sizeof(SDL_Surface);
    for(i = 0; i < C.nbimg; i++)
	SDL_FreeSurface(C.images_v[i]);
    C.nbimg = sizeof(C.images_h)/sizeof(SDL_Surface);
    for(i = 0; i < C.nbimg; i++)
	SDL_FreeSurface(C.images_h[i]);
    SDL_FreeSurface(C.viseur);
    SDL_FreeSurface(C.touche);
    SDL_FreeSurface(C.c_rate);
    SDL_FreeSurface(C.coule);
    SDL_FreeSurface(C.infobar);
    SDL_FreeSurface(C.texte);
    C.nbimg = sizeof(C.misc)/sizeof(SDL_Surface);
    for(i = 0; i < C.nbimg; i++)
	SDL_FreeSurface(C.misc[i]);
    free(C.cNavires);
    for(i = 0; i < T_GRILLE; i++) {
	free(grille_j[i]);
	free(grille_c[i]);
    }
    free(grille_c);
    free(grille_j);
    
    TTF_CloseFont(C.police);
    TTF_Quit();
    SDL_Quit();

    return EXIT_SUCCESS;
}