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; }
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; }
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; }
/* 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"); } }
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; }
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); }
//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; }
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; }
/*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); } } }