void EnnemiBulbizarre::onAvance() { tombe(); ss_etape += 1; ss_etape %= 8; if (ss_etape == 0) { etape += 1; etape %= 2; } // Marche // if (x - 1 < xmin || mur_opaque(x - 1, y)) dir = SENS_DROITE; else if (x + 1 > offset + 640 || mur_opaque(x + 1, y)) dir = SENS_GAUCHE; if (dir == SENS_DROITE) { marche(1); pic = pbk_ennemis[24 + etape]; } else { marche(-1); pic = pbk_ennemis[26 + etape]; } colFromPic(); }
void EnnemiSmurfette::onAvance() { static const int marche_droite[] = { 315, 316, 317, 318, 319, 318, 317, 316 }; static const int marche_gauche[] = { 320, 321, 322, 323, 324, 323, 322, 321 }; static const int SPEED = 1; tombe(); // Marche // if (x - SPEED < xmin || mur_opaque(x - SPEED, y) || (plat(x - SPEED, y) == 0 && plat(x - SPEED, y + 5) == 0)) dir = SENS_DROITE; else if (x + SPEED > offset + 640 || mur_opaque(x + SPEED, y) || (plat(x + SPEED, y) == 0 && plat(x + SPEED, y + 5) == 0)) dir = SENS_GAUCHE; if (dir == SENS_DROITE) { marche(SPEED); pic = pbk_ennemis[anime(marche_droite, 8, 6)]; } else { marche(-SPEED); pic = pbk_ennemis[anime(marche_gauche, 8, 6)]; } if (etape_shoot >= wait_shoot && x > offset + 10 && x < offset + 630) { etape = ss_etape = 0; etat = ETAT_TIRE; onTire(); return; } colFromPic(); }
void EnnemiToad::onCharge() { speed = TOAD_CHARGE_SPEED; if (x - speed < xmin || mur_opaque(x - speed, y)) { dir = SENS_DROITE; speed = 1; etat = ETAT_AVANCE; wait_for_charge = 0; charge_delay = 50 + rand() % 250; etape = 0; ss_etape = 0; onAvance(); return; } else if (x + speed > offset + 640 || mur_opaque(x + speed, y)) { dir = SENS_GAUCHE; speed = 1; etat = ETAT_AVANCE; wait_for_charge = 0; charge_delay = 50 + rand() % 250; etape = 0; ss_etape = 0; onAvance(); return; } charge_etape += 1; if (charge_etape < 80) { if (dir == SENS_DROITE) { //marche(speed); pic = pbk_ennemis[anime(anim_toad_marche_droite, 4, 3)]; } else { //marche( -speed); pic = pbk_ennemis[anime(anim_toad_marche_gauche, 4, 3)]; } } else { if (dir == SENS_DROITE) { marche(speed); pic = pbk_ennemis[anime(anim_toad_marche_droite, 4, 2)]; } else { marche(-speed); pic = pbk_ennemis[anime(anim_toad_marche_gauche, 4, 2)]; } } colFromPic(); }
void EnnemiSnorkyBase1::onAvance() { if (plat(x, y) == 0) { etat = ETAT_TOMBE; dy = 0; lat_grav = 0; onTombe(); return; } wait_for_shoot++; if ((wait_for_shoot > shoot_delay) && ((dir == SENS_DROITE && x > offset + 40) || (dir == SENS_GAUCHE && x < offset + 600))) { wait_for_shoot = 0; shoot_delay = 50 + rand() % 200; etape = 0; ss_etape = 0; etat = ETAT_TIRE; onTire(); return; } if (dir == SENS_GAUCHE) { marche(-SNORKY_BASE_SPEED); pic = pbk_ennemis[anime(anim_snorky_base_marche_gauche, 8, 4)]; if (mur_opaque(x - SNORKY_BASE_SPEED, y) || (x - SNORKY_BASE_SPEED < xmin)) dir = SENS_DROITE; } else { marche(SNORKY_BASE_SPEED); pic = pbk_ennemis[anime(anim_snorky_base_marche_droite, 8, 4)]; if (mur_opaque(x + SNORKY_BASE_SPEED, y) || (x + SNORKY_BASE_SPEED > offset + 640)) dir = SENS_GAUCHE; } colFromPic(); }
void EnnemiSnorkyBase1::onMeure() { tombe(); ss_etape += 1; ss_etape %= 5; if (ss_etape == 0) etape += 1; if (etape == 4 && ss_etape == 1) { Sprite * s = new MorceauSnorkyBaseTeteEntiere(); s->dir = dir; s->y = y - 22; s->x = x; list_giclures.ajoute((void*) s); dy = 0; } if (etape == 14) { if (plat(x, y) != 0) { grave(x, y, pic); } a_detruire = true; } else { if (dir == SENS_GAUCHE) { marche(-SNORKY_BASE_SPEED); pic = pbk_ennemis[71 + etape]; } else { marche(SNORKY_BASE_SPEED); pic = pbk_ennemis[38 + etape]; } } }
void EnnemiToad::onAvance() { // Si plus de plateformes on passe dans l'etat TOMBE // if (plat(x, y) == 0) { etat = ETAT_TOMBE; dy = 0; etape = 0; ss_etape = 0; lat_grav = 0; onSaute(); } //pour marcher if (x - speed < xmin || mur_opaque(x - speed, y)) { dir = SENS_DROITE; speed = 1; } else if (x + speed > offset + 640 || mur_opaque(x + speed, y)) { dir = SENS_GAUCHE; speed = 1; } wait_for_charge++; if (wait_for_charge >= charge_delay) { if ((plat2(tete_turc->x, tete_turc->y) == plat2(x, y)) && (((dir == SENS_DROITE) && (x < tete_turc->x)) || ((dir == SENS_GAUCHE) && (x > tete_turc->x)))) { charge_etape = 0; speed = 0; etape = 0; ss_etape = 0; dy = 0; etat = ETAT_TIRE; sbk_niveau.play(34); onCharge(); return; } else { wait_for_charge = 0; charge_delay = 50 + rand() % 250; etape = 0; ss_etape = 0; etat = ETAT_SAUTE; dy = -7; lat_grav = 0; // Sinon les sauts diffèrent par leur hauteur onSaute(); return; } } if (dir == SENS_DROITE) { marche(speed); pic = pbk_ennemis[anime(anim_toad_marche_droite, 4, 12 - 3 * speed)]; } else { marche(-speed); pic = pbk_ennemis[anime(anim_toad_marche_gauche, 4, 12 - 3 * speed)]; } if (speed < TOAD_SPEED) { etape_speed++; if (etape_speed >= 30) { etape_speed = 0; speed++; } } colFromPic(); }
void charger_menu (SDL_Surface *ecran,paramStruct p,int *choix,mapStruct *mp) { TTF_Init(); if (TTF_Init()==-1) { printf("erreur lors du chargement de la SDL_TTf"); } TTF_Font *police_continuer=NULL,*police_jouer=NULL,*police_instructions=NULL,*police_quitter=NULL; police_jouer=TTF_OpenFont("data/police/brush.ttf",60); police_continuer=TTF_OpenFont("data/police/brush.ttf",60); police_instructions=TTF_OpenFont("data/police/brush.ttf",60); police_quitter=TTF_OpenFont("data/police/brush.ttf",60); //police et taille des phrases SDL_Color couleurBlanche={255,255,255}; SDL_Surface *Jouer,*Continuer,*Instructions,*Quitter,*Titre,*image_bas; SDL_Rect position_jouer; SDL_Rect position_continuer; SDL_Rect position_instructions; SDL_Rect position_quitter; SDL_Rect position_titre; SDL_Rect position_image; SDL_Rect position_perso; placer_texte(&position_jouer,p.widthWindow/3,p.heightWindow/3); placer_texte(&position_continuer,p.widthWindow/3,p.heightWindow/3+70); placer_texte(&position_instructions,p.widthWindow/3,p.heightWindow/3+140); placer_texte(&position_quitter,p.widthWindow/3,p.heightWindow/3+210); placer_texte(&position_titre,p.widthWindow/2-664/2,0); placer_texte(&position_image,0,p.heightWindow-59); position_perso.x=0; position_perso.y=p.heightWindow-100; Jouer=TTF_RenderText_Blended(police_jouer,"> jouer",couleurBlanche); Continuer=TTF_RenderText_Blended(police_continuer,"> continuer",couleurBlanche); Instructions=TTF_RenderText_Blended(police_instructions,"> instructions",couleurBlanche); Quitter=TTF_RenderText_Blended(police_quitter,"> quitter",couleurBlanche); Titre=IMG_Load("data/menu/crazy_maze.bmp"); image_bas=IMG_Load("data/menu/brique.bmp"); image_bas=SDL_ResizeXY (image_bas,p.widthWindow,70,1); SDL_Surface *perso_marcheg=NULL,*perso_marched=NULL; perso_marcheg=IMG_Load("data/character/perso_marchedd.png"); perso_marched=IMG_Load("data/character/perso_marchedg.png"); int envie_de_jouer=0; int continuer=1; int marcher=0; SDL_Event event; int instruct=1; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer=0; *choix=-1; break; case SDL_MOUSEBUTTONUP: if (event.button.button == SDL_BUTTON_LEFT) { if(event.button.x>=position_jouer.x && event.button.x<=position_jouer.x+250 && event.button.y>=position_jouer.y+20 && event.button.y<=position_jouer.y+70) { *choix=0; continuer=0; // si on appuie sur jouer envie_de_jouer=1; page_chargement(ecran,p,1); } else if (event.button.x>=position_instructions.x && event.button.x<=position_instructions.x+250 && event.button.y>=position_instructions.y+20 && event.button.y<=position_instructions.y+70) { int v=0; while (instruct) { donner_instruction(ecran,&instruct,p,&continuer); } instruct=1; } else if (event.button.x>=position_continuer.x && event.button.x<=position_continuer.x+250 && event.button.y>=position_continuer.y+20 && event.button.y<=position_continuer.y+70) { if (sauvegarde(mp,&p)!=-1) { *choix=sauvegarde(mp,&p); } continuer=0; } else if(event.button.x>=position_quitter.x && event.button.x<=position_quitter.x+250 && event.button.y>=position_quitter.y+20 && event.button.y<=position_quitter.y+70) { *choix=-1; continuer=0; } } break; case SDL_MOUSEMOTION: if(event.button.x>=position_jouer.x && event.button.x<=position_jouer.x+250 && event.button.y>=position_jouer.y+20 && event.button.y<=position_jouer.y+70) { changer_police(&Jouer,"> jouer"); } else if (event.button.x>=position_continuer.x && event.button.x<=position_continuer.x+250 && event.button.y>=position_continuer.y+20 && event.button.y<=position_continuer.y+70) { changer_police(&Continuer,"> continuer"); } else if (event.button.x>=position_instructions.x && event.button.x<=position_instructions.x+250 && event.button.y>=position_instructions.y+20 && event.button.y<=position_instructions.y+70) { changer_police(&Instructions,"> instructions"); } else if (event.button.x>=position_quitter.x && event.button.x<=position_quitter.x+250 && event.button.y>=position_quitter.y+20 && event.button.y<=position_quitter.y+70) { changer_police(&Quitter,"> quitter"); } else { mettre_texte_normal(&Jouer,"> jouer"); mettre_texte_normal(&Continuer,"> continuer"); mettre_texte_normal(&Instructions,"> instructions"); mettre_texte_normal(&Quitter,"> quitter"); } break; } if (envie_de_jouer==0) { SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,120,0,0)); position_titre.x=p.widthWindow/2-664/2; position_titre.y=0; SDL_SetColorKey(Titre,SDL_SRCCOLORKEY,SDL_MapRGB(ecran->format,0,0,0)); SDL_BlitSurface(Titre,NULL,ecran,&position_titre); SDL_BlitSurface(image_bas,NULL,ecran,&position_image); SDL_BlitSurface(Jouer,NULL,ecran,&position_jouer); SDL_BlitSurface(Continuer,NULL,ecran,&position_continuer); SDL_BlitSurface(Instructions,NULL,ecran,&position_instructions); SDL_BlitSurface(Quitter,NULL,ecran,&position_quitter); marche(ecran,&marcher,&position_perso, perso_marcheg, perso_marched,p); } SDL_Flip(ecran); } SDL_FreeSurface(perso_marcheg); SDL_FreeSurface(perso_marched); SDL_FreeSurface(Jouer); SDL_FreeSurface(Quitter); SDL_FreeSurface(Instructions); SDL_FreeSurface(Continuer); SDL_FreeSurface(Titre); SDL_FreeSurface(image_bas); TTF_CloseFont(police_jouer); TTF_CloseFont(police_continuer); TTF_CloseFont(police_instructions); TTF_CloseFont(police_quitter); TTF_Quit(); }