示例#1
0
int main() {

  int nb = 0, continuer = 0;
  char tab[TAB_MAX][TAB_MAX] = {0};
  Joueur joueur1 = {0};
  Joueur joueur2 = {0};
  Joueur ePanda = {0};

  joueur1.x = 2;
  joueur1.y = 1;
  joueur2.x = 47;
  joueur2.y = 48;
  joueur1.ico = 257;
  joueur2.ico = 258;
  ePanda.ico = 153;

  do {
    nb = afficheMenu(tab, &joueur1, &joueur2,
                     &ePanda); // Appel de la fonction d'affichage du menu

    intro(); // Affichage de l'intro
    // system("PAUSE");
    system("cls");
    jeu(tab, &joueur1, &joueur2, &ePanda);
  } while (Quitter() != 1);

  return EXIT_SUCCESS;
}
示例#2
0
int main(int argc, char* args[])
{
    srand(time(NULL));

    printf("Hello world!\n");

    /*int var=1;
    var = test();
    printf("\nvar = %d", var);*/

    jeu();
    return 0;
}
示例#3
0
文件: main.c 项目: bourgery/Mus
int main() {
  init_rand();
  SDL_Surface *ecran = NULL;
  SDL_Init(SDL_INIT_VIDEO);
  TTF_Init();
  const SDL_VideoInfo *info_ecran = SDL_GetVideoInfo();
  ecran = SDL_SetVideoMode(info_ecran->current_w, info_ecran->current_h, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
  SDL_FillRect(ecran, NULL, COULEUR_FOND);
  SDL_Flip(ecran);
  jeu(ecran);
  TTF_Quit();
  SDL_Quit();
  return 0;
}
示例#4
0
/* Affiche un texte lorsque le joueur se trouve sur la porte de la sortie */
void afficherTextePorteSortie(void)
{
	effacer();
	titre("Porte de sortie", VERT);

	/* Si le joueur possede la cle de fin de niveau */
	if(inventaire.possedeCleFinNiveau)
	{
		unsigned int choixJoueur;

		/* On affiche un texte indiquant le passage du prochain niveau */
		lireEtAfficher("Sortie/Texte_Porte_Sortie_Cle.txt");

		/* On demande si le joueur veut faire un tour a la boutique avant de passer au prochain
		niveau */
		choixJoueur = demanderConfirmation("Voulez-vous aller dans la boutique ? (0/1)", SEPARATION);

		/* S'il veut */
		if(choixJoueur == OUI)
			/* On appelle la fonction boutique */
			boutique();

		appuyezEntree("\nAppuyez sur ENTREE pour acceder au prochain niveau");

		/* On enleve la cle de fin de niveau de l'inventaire du joueur */
		inventaire.possedeCleFinNiveau = 0;
		/* On incremente de 1 la variable niveauActuel du joueur pour indiquer le passage au 
		prochain niveau */
		++(personnage.niveauActuel);

		/* On sauvegarde l'inventaire pour que le joueur conserve l'inventaire entre le passage
		de niveau */
		sauvegarderInventaire();

		/* On vide le dossier de sauvegarde sur le niveau (car on va changer de niveau) */
		viderDossierNiveauSauvegarde(personnage.nom);

		/* On relance le jeu */
		jeu();
	}
	/* Sinon */
	else
	{
		/* On affiche un texte indiquant qu'il faut une cle au joueur pour passer la porte */
		lireEtAfficher("Sortie/Texte_Porte_Sortie.txt");
		
		appuyezEntree("\nAppuyez sur ENTREE pour continuer");
	}
}
示例#5
0
 int main(void)
{
 int cont=0,locker=0,choix=0;
 
 /* login session */
 /*
 do{
  if(login()!=1 && locker<3){
   printf("votre id ou votre mot de pass n'est pas correcte\n");
  }
  if(login()!=1 && locker==3){
   printf("vous avez saisi des mauvaises donnees plus de 3 fois.votre compte sera desormais bloque\n");
   exit(1);
  }
  locker++;
 }while(login()!=1 && locker<3);
 */
 /*login reussi. le jeu va commencer */
 do{
  /*printf("bienvenu %s (id: %d)! choisissez des options!\n");*/
 /* --1 jouer au jeu de tir  --2 enregistrer un nouveau utilisateur
  --3 supprimer un utilisateur --4 afficher la liste des scores*/ 
  scanf("%d",&choix);
  switch(choix){
   case 1:jeu();
	  break;
   /*case 2:ajouter();
	  break;
   case 3:supprimer();
	  break;
   case 4:score();
	  break;*/
   default:
	  printf("saisissez le nombre valide\n");
	  break; 
  }
 
  printf("vous voulez continuer ? \n");
  printf("--0 quitter le jeu --1 continuer \n");
  scanf("%d",&cont);
 }while(cont);

 /*logout, fin de session*/
 /*free(sessio);*/
 printf("fin de jeu \n");
 return 0;
}
示例#6
0
int main() {
    sf::RenderWindow app(sf::VideoMode(800, 600), "space war");
    app.SetFramerateLimit(60);
    app.UseVerticalSync(true);
    app.ShowMouseCursor(false);
    app.EnableKeyRepeat (false);
    app.SetCursorPosition(app.GetWidth() / 2, app.GetHeight() / 2);
    if(! (Vaisseau::init() && Tir::init() && Jeu::init()) )
        return EXIT_FAILURE;
    Jeu jeu(&app);
    do {
        jeu.reinitialisation();
        jeu.jouer();
    } while(jeu.recommencerPartie());
    app.Close();
    return EXIT_SUCCESS;
}
/*
Nom : option
Entrées :
Sorties :
Date de dernière modification : 26/04
Nature de la dernière modification : debugage
Version : 1.2
*/
void option(BITMAP* img[BMP_NB],t_hero tab[MAX_HERO],t_game* level,SAMPLE* son[SON_NB])
{
    BITMAP* buffer = create_bitmap(WIDTH,HEIGHT);
    clear_bitmap(buffer);
    int test = 1;
    int test2 = 0;

    while (test)
    {
        blit(img[62],buffer,0,0,0,0,WIDTH,HEIGHT);
        //son
        textprintf_ex(buffer,font, 230, 330, makecol(255,255,255), -1, "%d", level->sound);
        if( (mouse_b & 1) && (mouse_x > 130) && (mouse_x < 180) && (mouse_y > 310) && (mouse_y < 355) )// -
        {
            level->sound--;
            if(level->sound <= 0) level->sound = 0;
        }
        if( (mouse_b & 1) && (mouse_x > 310) && (mouse_x < 350) && (mouse_y > 310) && (mouse_y < 350) ) // +
        {
            level->sound++;
            if (level->sound >= 255) level->sound = 255;
        }

        //vitesse
        //perso
        textprintf_ex(buffer,font, 770, 270, makecol(255,255,255), -1, "%d", level->hero_speed);
        if( (mouse_b & 1) && (mouse_x > 690) && (mouse_x < 730) && (mouse_y > 255) && (mouse_y < 295) ) // -
        {
            level->hero_speed --;
        }
        if( (mouse_b & 1) && (mouse_x > 840) && (mouse_x < 880) && (mouse_y > 255) && (mouse_y < 295) ) // +
        {
            level->hero_speed ++;
        }
        if (level->hero_speed < 0) level->hero_speed = 0;


        //jeu
        textprintf_ex(buffer,font, 770, 420, makecol(255,255,255), -1, "%d", level->game_speed);
        if( (mouse_b & 1) && (mouse_x > 690) && (mouse_x < 730) && (mouse_y > 400) && (mouse_y < 445) ) // -
        {
            level->game_speed --;
        }
        if( (mouse_b & 1) && (mouse_x > 840) && (mouse_x < 880) && (mouse_y > 400) && (mouse_y < 445) ) // +
        {
            level->game_speed ++;
        }
        if (level->game_speed < 0) level->game_speed = 0;

        if ((mouse_b & 1) && (mouse_x > 880) && (mouse_y > 670)) test = 0; //retour au menu

        if((mouse_b & 1) && (mouse_x < 120) && (mouse_y > 670)) //crédit
        {
            while(!key[KEY_ESC])
            {
            clear(buffer);
            blit(img[67],buffer,0,0,0,0,WIDTH,HEIGHT);
            blit(buffer,screen,0,0,0,0,WIDTH,HEIGHT);
            }
        }

        if(key[KEY_Q] || test2) //en réalité A sur clavier azerty, A pour admin
        {
            int maroon = makecol(128,0,0);
            int green = makecol (0,128,0);
            int navy = makecol(0,0,128);
            test2 = 1;
            clear(buffer);
            circlefill(buffer,50,50,50,green);
            textprintf_ex(buffer,font,50,50,makecol(255,255,255),-1,"1");
            circlefill(buffer,150,50,50,navy);
            textprintf_ex(buffer,font,150,50,makecol(255,255,255),-1,"2");
            circlefill(buffer,250,50,50,maroon);
            textprintf_ex(buffer,font,250,50,makecol(255,255,255),-1,"3");

            if((getpixel(buffer,mouse_x,mouse_y) == green) && (mouse_b & 1))
            {
                level->level = 1;
                jeu(img,tab,level,son);
            }
            if((getpixel(buffer,mouse_x,mouse_y) == navy) && (mouse_b & 1))
            {
                level->level = 2;
                jeu(img,tab,level,son);
            }
            if((getpixel(buffer,mouse_x,mouse_y) == maroon) && (mouse_b & 1))
            {
                level->level = 3;
                jeu(img,tab,level,son);
            }

            if(key[KEY_ESC]) test2 = 0;

        }

        blit(buffer,screen,0,0,0,0,WIDTH,HEIGHT);
    }
    destroy_bitmap(buffer);
}
示例#8
0
//Cette fonction charge une partie à partir d'un fichier.
int charger_partie(const char* nomFichier, Tptpartie partie)
{
    int success = 1;
    FILE* fichier = NULL;
    fichier = fopen(nomFichier, "r");

    int nb_panne_essence_deck, nb_creve_deck, nb_accident_deck, nb_limite_vitesse_deck, nb_stop_deck;
    int nb_essence_deck, nb_roue_de_secours_deck, nb_reparations_deck, nb_fin_limite_vitesse_deck, nb_roulez_deck;
    int nb_citerne_deck, nb_increvable_deck, nb_as_du_volant_deck, nb_prioritaire_deck;
    int nb_bornes25_deck, nb_bornes50_deck, nb_bornes75_deck, nb_bornes100_deck, nb_bornes200_deck;
    int nb_obstacles_deck, nb_parades_deck, nb_bottes_deck, nb_bornes_deck;

    int nb_panne_essence_poubelle, nb_creve_poubelle, nb_accident_poubelle, nb_limite_vitesse_poubelle, nb_stop_poubelle;
    int nb_essence_poubelle, nb_roue_de_secours_poubelle, nb_reparations_poubelle, nb_fin_limite_vitesse_poubelle, nb_roulez_poubelle;
    int nb_citerne_poubelle, nb_increvable_poubelle, nb_as_du_volant_poubelle, nb_prioritaire_poubelle;
    int nb_bornes25_poubelle, nb_bornes50_poubelle, nb_bornes75_poubelle, nb_bornes100_poubelle, nb_bornes200_poubelle;
    int nb_obstacles_poubelle, nb_parades_poubelle, nb_bottes_poubelle, nb_bornes_poubelle;

    int nb_panne_essence_joueur1, nb_creve_joueur1, nb_accident_joueur1, nb_limite_vitesse_joueur1, nb_stop_joueur1;
    int nb_essence_joueur1, nb_roue_de_secours_joueur1, nb_reparations_joueur1, nb_fin_limite_vitesse_joueur1, nb_roulez_joueur1;
    int nb_citerne_joueur1, nb_increvable_joueur1, nb_as_du_volant_joueur1, nb_prioritaire_joueur1;
    int nb_bornes25_joueur1, nb_bornes50_joueur1, nb_bornes75_joueur1, nb_bornes100_joueur1, nb_bornes200_joueur1;
    int nb_obstacles_joueur1, nb_parades_joueur1, nb_bottes_joueur1, nb_bornes_joueur1;

    int nb_panne_essence_joueur2, nb_creve_joueur2, nb_accident_joueur2, nb_limite_vitesse_joueur2, nb_stop_joueur2;
    int nb_essence_joueur2, nb_roue_de_secours_joueur2, nb_reparations_joueur2, nb_fin_limite_vitesse_joueur2, nb_roulez_joueur2;
    int nb_citerne_joueur2, nb_increvable_joueur2, nb_as_du_volant_joueur2, nb_prioritaire_joueur2;
    int nb_bornes25_joueur2, nb_bornes50_joueur2, nb_bornes75_joueur2, nb_bornes100_joueur2, nb_bornes200_joueur2;
    int nb_obstacles_joueur2, nb_parades_joueur2, nb_bottes_joueur2, nb_bornes_joueur2;

    /* On crée deux joueurs vides. J'ai mis « Humain » ici, mais ça n'a pas d'importance,
    le vrai type de joueur écrasera ces préréglages-ci. */
    partie -> joueur_selectionne = joueur_init(HUMAIN, PAS_DE_DIFFICULTE, 1);
    partie -> autre_joueur = joueur_init(HUMAIN, PAS_DE_DIFFICULTE, 2);

    if(fichier != NULL && partie != NULL)
    {
        /* Chargement du deck principal */
        success = success && charger_deck(fichier, partie -> deck);

        if(success)
        {
            /* Chargement de la poubelle */
            success = success && charger_deck(fichier, partie -> poubelle);

            if(success)
            {
                /* Chargement du joueur 1 */
                success = success && charger_joueur(fichier, partie -> joueur_selectionne);

                if(success)
                {
                    /* Chargement du joueur 2 */
                    success = success && charger_joueur(fichier, partie -> autre_joueur);
                }
            }
        }
        fclose(fichier);
    }
    else
        success = 0;

    if(success)
    {
        //On vérifie qu'il n'y a eu aucun trafic et qu'il y a le bon nombre de cartes au total.
        //C'est d'ailleurs uniquement à cela que sert la sauvegarde de la poubelle.

        /* On commence par comptabiliser chaque type de cartes dans chacun des quatre decks. */

        /* Deck principal */
        cartes_deck_compter_sorte
        (
            partie -> deck,
            &nb_panne_essence_deck, &nb_creve_deck, &nb_accident_deck, &nb_limite_vitesse_deck, &nb_stop_deck,
            &nb_essence_deck, &nb_roue_de_secours_deck, &nb_reparations_deck, &nb_fin_limite_vitesse_deck, &nb_roulez_deck,
            &nb_citerne_deck, &nb_increvable_deck, &nb_as_du_volant_deck, &nb_prioritaire_deck,
            &nb_bornes25_deck, &nb_bornes50_deck, &nb_bornes75_deck, &nb_bornes100_deck, &nb_bornes200_deck,
            &nb_obstacles_deck, &nb_parades_deck, &nb_bottes_deck, &nb_bornes_deck
        );

        /* Poubelle */
        cartes_deck_compter_sorte
        (
            partie -> poubelle,
            &nb_panne_essence_poubelle, &nb_creve_poubelle, &nb_accident_poubelle, &nb_limite_vitesse_poubelle, &nb_stop_poubelle,
            &nb_essence_poubelle, &nb_roue_de_secours_poubelle, &nb_reparations_poubelle, &nb_fin_limite_vitesse_poubelle, &nb_roulez_poubelle,
            &nb_citerne_poubelle, &nb_increvable_poubelle, &nb_as_du_volant_poubelle, &nb_prioritaire_poubelle,
            &nb_bornes25_poubelle, &nb_bornes50_poubelle, &nb_bornes75_poubelle, &nb_bornes100_poubelle, &nb_bornes200_poubelle,
            &nb_obstacles_poubelle, &nb_parades_poubelle, &nb_bottes_poubelle, &nb_bornes_poubelle
        );

        /* Joueur 1 */
        cartes_deck_compter_sorte
        (
            partie -> joueur_selectionne -> deck,
            &nb_panne_essence_joueur1, &nb_creve_joueur1, &nb_accident_joueur1, &nb_limite_vitesse_joueur1, &nb_stop_joueur1,
            &nb_essence_joueur1, &nb_roue_de_secours_joueur1, &nb_reparations_joueur1, &nb_fin_limite_vitesse_joueur1, &nb_roulez_joueur1,
            &nb_citerne_joueur1, &nb_increvable_joueur1, &nb_as_du_volant_joueur1, &nb_prioritaire_joueur1,
            &nb_bornes25_joueur1, &nb_bornes50_joueur1, &nb_bornes75_joueur1, &nb_bornes100_joueur1, &nb_bornes200_joueur1,
            &nb_obstacles_joueur1, &nb_parades_joueur1, &nb_bottes_joueur1, &nb_bornes_joueur1
        );

        /* Joueur 2 */
        cartes_deck_compter_sorte
        (
            partie -> autre_joueur -> deck,
            &nb_panne_essence_joueur2, &nb_creve_joueur2, &nb_accident_joueur2, &nb_limite_vitesse_joueur2, &nb_stop_joueur2,
            &nb_essence_joueur2, &nb_roue_de_secours_joueur2, &nb_reparations_joueur2, &nb_fin_limite_vitesse_joueur2, &nb_roulez_joueur2,
            &nb_citerne_joueur2, &nb_increvable_joueur2, &nb_as_du_volant_joueur2, &nb_prioritaire_joueur2,
            &nb_bornes25_joueur2, &nb_bornes50_joueur2, &nb_bornes75_joueur2, &nb_bornes100_joueur2, &nb_bornes200_joueur2,
            &nb_obstacles_joueur2, &nb_parades_joueur2, &nb_bottes_joueur2, &nb_bornes_joueur2
        );

        //On fait les vérifications !
        if(
                partie -> joueur_selectionne -> deck -> taille != CARTES_MAIN ||
                partie -> autre_joueur -> deck -> taille != CARTES_MAIN ||
                partie -> deck -> taille + partie -> poubelle -> taille + partie -> joueur_selectionne -> deck -> taille + partie -> autre_joueur -> deck -> taille != CARTES_TOTAL ||

                //Obstacles
                nb_panne_essence_deck       + nb_panne_essence_poubelle         + nb_panne_essence_joueur1          + nb_panne_essence_joueur2          != NB_PANNE_ESSENCE     ||
                nb_creve_deck               + nb_creve_poubelle                 + nb_creve_joueur1                  + nb_creve_joueur2                  != NB_CREVE             ||
                nb_accident_deck            + nb_accident_poubelle              + nb_accident_joueur1               + nb_accident_joueur2               != NB_ACCIDENT          ||
                nb_limite_vitesse_deck      + nb_limite_vitesse_poubelle        + nb_limite_vitesse_joueur1         + nb_limite_vitesse_joueur2         != NB_LIMITE_VITESSE    ||
                nb_stop_deck                + nb_stop_poubelle                  + nb_stop_joueur1                   + nb_stop_joueur2                   != NB_STOP              ||

                //Parades
                nb_essence_deck             + nb_essence_poubelle               + nb_essence_joueur1                + nb_essence_joueur2                != NB_ESSENCE           ||
                nb_roue_de_secours_deck     + nb_roue_de_secours_poubelle       + nb_roue_de_secours_joueur1        + nb_roue_de_secours_joueur2        != NB_ROUE_DE_SECOURS   ||
                nb_reparations_deck         + nb_reparations_poubelle           + nb_reparations_joueur1            + nb_reparations_joueur2            != NB_REPARATIONS       ||
                nb_fin_limite_vitesse_deck  + nb_fin_limite_vitesse_poubelle    + nb_fin_limite_vitesse_joueur1     + nb_fin_limite_vitesse_joueur2     != NB_FIN_LIMITE_VITESSE||
                nb_roulez_deck              + nb_roulez_poubelle                + nb_roulez_joueur1                 + nb_roulez_joueur2                 != NB_ROULEZ            ||

                //Bottes
                nb_citerne_deck             + nb_citerne_poubelle               + nb_citerne_joueur1                + nb_citerne_joueur2                != NB_CITERNE           ||
                nb_increvable_deck          + nb_increvable_poubelle            + nb_increvable_joueur1             + nb_increvable_joueur2             != NB_INCREVABLE        ||
                nb_as_du_volant_deck        + nb_as_du_volant_poubelle          + nb_as_du_volant_joueur1           + nb_as_du_volant_joueur2           != NB_AS_DU_VOLANT      ||
                nb_prioritaire_deck         + nb_prioritaire_poubelle           + nb_prioritaire_joueur1            + nb_prioritaire_joueur2            != NB_PRIORITAIRE       ||

                //Bornes
                nb_bornes25_deck            + nb_bornes25_poubelle              + nb_bornes25_joueur1               + nb_bornes25_joueur2               != NB_BORNES25          ||
                nb_bornes50_deck            + nb_bornes50_poubelle              + nb_bornes50_joueur1               + nb_bornes50_joueur2               != NB_BORNES50          ||
                nb_bornes75_deck            + nb_bornes75_poubelle              + nb_bornes75_joueur1               + nb_bornes75_joueur2               != NB_BORNES75          ||
                nb_bornes100_deck           + nb_bornes100_poubelle             + nb_bornes100_joueur1              + nb_bornes100_joueur2              != NB_BORNES100         ||
                nb_bornes200_deck           + nb_bornes200_poubelle             + nb_bornes200_joueur1              + nb_bornes200_joueur2              != NB_BORNES200         ||

                //Totaux
                nb_obstacles_deck           + nb_obstacles_poubelle             + nb_obstacles_joueur1              + nb_obstacles_joueur2              != NB_OBSTACLES         ||
                nb_parades_deck             + nb_parades_poubelle               + nb_parades_joueur1                + nb_parades_joueur2                != NB_PARADES           ||
                nb_bottes_deck              + nb_bottes_poubelle                + nb_bottes_joueur1                 + nb_bottes_joueur2                 != NB_BOTTES            ||
                nb_bornes_deck              + nb_bornes_poubelle                + nb_bornes_joueur1                 + nb_bornes_joueur2                 != NB_BORNES
        )
            success = 0;
        else
        {
            //Il n'y a pas d'erreur, on lance la partie !
            printf("Partie chargée avec succès !\n\n");
            jeu(partie);
        }
    }

    //En cas d'échec, on vide tout.
    if(!success)
        partie_vider(partie);

    return success;
}
示例#9
0
int main2(int argc, char *argv[],plateauGraphique *plateau){
  processeur liste_processeur[16][16];
  adresse j1,j2 ;
  int nbTours = 20;
  int x,y;
  char nomBouton[5],b[3];
  GtkColorButton *couleur1;
  GdkColor color;
  int couleur;
  srand(time(NULL));  
  j1.x = plateau->demarre[0].xy.x;
  j1.y = plateau->demarre[0].xy.y;
  j2.x = plateau->demarre[1].xy.x;
  j2.y = plateau->demarre[1].xy.y;
/*   printf("%s\n",argv[0]); */
/*   printf("%s\n",argv[1]); */
/*   printf("%s\n",argv[2]); */
  creer_liste(liste_processeur,argc,argv,j1,j2,plateau);
/*   printf("Combien de tours de jeu voulez-vous ??\n"); */
  LancerBoite();
 /*  printf("nbTour : %d\n",Choix); */
  jeu( liste_processeur, Choix,(plateauGraphique*)plateau);
  affichage_gtk(liste_processeur,plateau);
  affichage_fin_jeu(controle_victoire(liste_processeur,*(short int *)&liste_processeur[j1.x][j1.y].ram[1],*(short int *)&liste_processeur[j2.x][j2.y].ram[1]));
  
/*   for(x = 0; x<16; x+=1){ */
/*     for(y = 0; y<16; y+=1){ */
/*       couleur = liste_processeur[y][x].ram[1]; */
/*       if(x>9){ */
/* 	nomBouton[0] = '1'; */
/* 	nomBouton[1] = 48+(char)x%10; */
/*       } */
/*       else{ */
/* 	nomBouton[1] = 48+(char)x%10;	 */
/* 	nomBouton[0] = '0'; */
/*       } */
/*       nomBouton[2] = 0; */
      
/*       if(y>9){ */
/* 	b[0] = '1'; */
/* 	b[1] = (char)(48+y%10); */
/*       } */
/*       else{ */
/* 	b[1] = (char)(48+y%10);	 */
/* 	b[0] = '0'; */
/*       } */
/*       b[2] = 0; */
      
/*       strcat(nomBouton,b); */
/*       if (liste_processeur[y][x].ram[1]!=0){ */
/* /\* 	printf("Couleur : %d\n",liste_processeur[y][x].ram[1]); *\/ */
/* /\* 	printf("x = %d, y = %d, bouton : %s\n",x,y,nomBouton); *\/ */
	
/* 	couleur1 = (GtkColorButton *)gtk_builder_get_object(p_builder, nomBouton); */
/* 	color.red=0;  */
/* 	color.green=0;  */
/* 	color.blue=0;  */
/* 	gtk_color_button_set_color(couleur1,&color); */
/* 	liste_processeur[y][x].ram[1]=0; */
/*       } */
/*     } */
/*   } */
  
  return 1;
}
示例#10
0
文件: jeu.c 项目: Jeyto/rogue_like
/*Fonction jeu
*Gere le jeu en lui-meme
*Deplacement des monstres en fonctions du temps
*Deplacement du joueur et traitement de son deplacement
*/
void jeu(t_case matrice[N][M], int level){
	//declaration ncurses
	int nb_col, col, row;
	int ch = 0;
	getmaxyx(stdscr,row,col); /* get the number of rows and columns */
	nb_col= col/2;
	//declaration
	int dx, dy;
	int i,j;
	t_coord pos_sortie;
	t_coord perso_position;
	int niveau_termine=0;

	//position de la sortie à 3cases du coffre mais invisible
	for(i=0;i<N;i++){
		for(j=0;j<M;j++){
			if(matrice[i][j]==coffre){
				pos_sortie.x=i;
				pos_sortie.y=j-3;
			}
		}
	}

	//traitement
	if(level>=1){
		sauvegarde_map(matrice,level);
		//tant que la vie > 0 et niveau en cours et qu'on appuye pas sur echap
		while(valeur_PV_personnage()>0 && niveau_termine==0 && ch != 27){ 
			//Deplacment des monstres en fonction du temps
			while (!kbhit() && valeur_PV_personnage()>0 ){//tant que l'on n'appuie sur aucune touche, kbhit fais boucler
				//si personnage meurt, 3 coups pour se sauver car les monstres sont inactifs
				if(valeur_invi_personnage()==0)
					generation_mob_suivante(matrice,perso_position);

				else{
					if(valeur_invi_personnage()<=3) modif_invi_personnage(valeur_invi_personnage()+1);						
					else modif_invi_personnage(0);
				}
				//affichage du jeu avec uen temporisation de 1,5s, avec la touche p pour mettre le jeu en pause
				afficher_ecran(matrice,level);
				usleep(150000);
				while(ch == 'p') ch = getch();
			}
			//choix de deplacement (deplacement possible avec les touches zqsd, ZQSD ou les fleches directives)
			ch = getch();
			switch(ch){
				
				case 'z':
				case 'Z':
				case KEY_UP:
					dx=-1;
					dy=0;
					break;
				
				case 'q':
				case 'Q':
				case KEY_LEFT:
					dx=0;
					dy=-1;
					break;
				
				case 's':
				case 'S':
				case KEY_DOWN:
					dx=1;
					dy=0;
					break;
				
				case 'd':
				case 'D':
				case KEY_RIGHT:
					dx=0;
					dy=1;
					break;
				
				default:
					dx=0;
					dy=0;
					break;
			}
			//si deplacement choisi, traitement de la case
			if(dx != 0 || dy != 0){
				valeur_position_personnage(&perso_position);

				if(matrice[perso_position.x+dx][perso_position.y+dy]!=mur_contour && matrice[perso_position.x+dx][perso_position.y+dy]!=mur){
					perso_position.x=perso_position.x+dx;
					perso_position.y=perso_position.y+dy;
					//action en fonction de la nouvelle case

					switch(matrice[perso_position.x][perso_position.y]){
						case vide:
							matrice[perso_position.x-dx][perso_position.y-dy]=vide;
							matrice[perso_position.x][perso_position.y]=hero;
							break;
						case couloir:
							matrice[perso_position.x-dx][perso_position.y-dy]=vide;
							matrice[perso_position.x][perso_position.y]=hero;
							break;
						case porte:
							matrice[perso_position.x-dx][perso_position.y-dy]=vide;
							perso_position.x=perso_position.x+dx;
							perso_position.y=perso_position.y+dy;
							matrice[perso_position.x][perso_position.y]=hero;
							break;
						case cle:
							matrice[perso_position.x-dx][perso_position.y-dy]=vide;
							modif_cle_personnage(1);
							mvprintw(41, nb_col-5,"cle prise");
							matrice[perso_position.x][perso_position.y]=hero;
							break;
						case coffre:
							if(valeur_cle_personnage()==0){	//s'il n'a pas la cle
								perso_position.x=perso_position.x-dx; //personnage ne bouge pas
								perso_position.y=perso_position.y-dy;
								mvprintw(41, nb_col-12,"veuillez prendre la cle");
							}
							else{
								matrice[perso_position.x-dx][perso_position.y-dy]=vide;
								mvprintw(42, nb_col-6,"coffre pris");
								matrice[perso_position.x][perso_position.y]=hero;
								//creation piece sortie pour finir le niveau
								matrice[pos_sortie.x][pos_sortie.y]=sortie;
								matrice[pos_sortie.x-2][pos_sortie.y]=porte;
								matrice[pos_sortie.x-2][pos_sortie.y-1]=mur_contour;
								matrice[pos_sortie.x-2][pos_sortie.y+1]=mur_contour;
								matrice[pos_sortie.x-1][pos_sortie.y]=vide;
								matrice[pos_sortie.x-1][pos_sortie.y-1]=mur_contour;
								matrice[pos_sortie.x-1][pos_sortie.y+1]=mur_contour;
								matrice[pos_sortie.x][pos_sortie.y-1]=mur_contour;
								matrice[pos_sortie.x][pos_sortie.y+1]=mur_contour;
							}
							break;
						case bonus:
							matrice[perso_position.x-dx][perso_position.y-dy]=vide;
							if(rand()%3==0){//une chance sur 3 d'avoir un point d'armure
								gain_armure_personnage(1);
							}
							else{
								gain_bonus_personnage(20); //le bonus vaut 20points
							}
							matrice[perso_position.x][perso_position.y]=hero;
							break;
						case piege:
							degat_personnage();//perd un point de vie
							perso_position.x=perso_position.x-dx; //personnage ne bouge pas
							perso_position.y=perso_position.y-dy;
							break;
						case monstre_agressif:
						case monstre_defensif:
						case monstre_inactif:
							if(position_mob(perso_position)){
								mob_perte_PV(matrice,1);
							}
							perso_position.x=perso_position.x-dx; //personnage ne bouge pas
							perso_position.y=perso_position.y-dy;

							break;
						case sortie:
							niveau_termine=1;
							break;
						default:
							break;
					}
					modif_position_personnage(perso_position);
					afficher_ecran(matrice,level);
				}
			}
		}
		if(niveau_termine==0){
			game_message(matrice,niveau_termine,level); //defaite
		}
		else{
			level++;
			//generation niveau superieur
			if(level<=5){
				init_etage_personnage();
				generation_level(matrice, level);
				jeu(matrice,level);
			}
			//si niveau 5 termine, victoire
			else game_message(matrice,niveau_termine,level);
		}
	}
}