Пример #1
0
/* Voit si une action peut etre accomplie*/
void action(Pacman *pac, Fantome *ftm, score_message **msg_list)
{
	int i, col;
	SDL_Rect pos = get_case(pac->position, pac->cur_direction);
	//Gagne une vie
	if(pac->score && (pac->score)%10000 == 0 && pac->nb_lives < 5)
	{
		pac->nb_lives++;
		pac->score+=100;
	}
	//Verifie si pacman et fantomes se rencontrent
	for(i=0; i<NB_GHOST; i++) {
		col=check_colision(pac, ftm[i]);
		if(col==1) {
			pac_death(pac); //Pacman est mort :(
			for(i=0; i<NB_GHOST; i++) ghost_restart(ftm+i);
			return;
		}
		if(col==2) {
			ghost_death(ftm+i); //Fantome meurt
			pac->ghost_eaten++;
			pac->score+=200*(pac->ghost_eaten);
			add_new_message(msg_list, 9+pac->ghost_eaten, pos);
			return;
		}
	}
	if( LEVEL[pos.y][pos.x].type == BONUS && dans_case(pac->position) )
	{
		if(LEVEL[pos.y][pos.x].elt_type==0) //Super Pac-gomme
		{
			set_ghosts_eatable(ftm); 
			pac->counter=SDL_GetTicks();
		}
		else if(LEVEL[pos.y][pos.x].elt_type==1) pac->score+=100; //Cerise
		else if(LEVEL[pos.y][pos.x].elt_type==2) pac->score+=300; //Fraise
		else if(LEVEL[pos.y][pos.x].elt_type==3) pac->score+=500; //Orange
		else if(LEVEL[pos.y][pos.x].elt_type==4) pac->score+=700; //Pomme
		else if(LEVEL[pos.y][pos.x].elt_type==5) pac->score+=1000; //Melon
		else if(LEVEL[pos.y][pos.x].elt_type==6) pac->score+=2000; //Galboss
		else if(LEVEL[pos.y][pos.x].elt_type==7) pac->score+=3000; //Cloche
		else if(LEVEL[pos.y][pos.x].elt_type==8) { //Clé
			pac->score+=5000;
			pac->nb_keys++;
		}
		if(LEVEL[pos.y][pos.x].elt_type==9) POINTS--; //Pac-gomme
		add_new_message(msg_list, LEVEL[pos.y][pos.x].elt_type, pos);
		LEVEL[pos.y][pos.x].type=RIEN; //On l'a mangé bravo!
	}
}
Пример #2
0
static int		get_actions()
{
  int			err;
  int			i;

  if ((i = check_new_player()))
    return (i);
  i = *(g_zappy->read.fdl);
  while (i > 1)
     {
       if (FD_ISSET(g_zappy->read.fdl[i], &(g_zappy->read.fds))
	   && (err = add_new_message(g_zappy->read.fdl[i])))
	 return (err);
       i--;
     }
  return (0);
}