Exemplo n.º 1
0
int find_pivot(float **S, int m, int n)
{
  int i, j, pivot_col, pivot_row;
  float min=0, ratio;
  for(j=0;j<n-1;j++)
    {
      if(S[m-1][j]<min)
	{
	  min = S[m-1][j];
	  pivot_col = j;
	}
    }
  printf("min=%f\n", min);
  //in case the pivot is not found
  if(min==0)
    return 1;
  //if the pivot is found
  else
    {	
      min=99;
      for(i=0; i<m-1; i++)
	{
	  if(S[i][pivot_col] > 0)
	    {
	      ratio = S[i][n-1]/S[i][pivot_col];
	      if(ratio<min)
		{
		  min = ratio;
		  pivot_row = i;
		}
	    }
	}
      printf("row=%d\n", pivot_row);
      gen_tableau(S, m, n, pivot_row, pivot_col);
      return 0;
    }	
}
Exemplo n.º 2
0
Arquivo: spake.c Projeto: xalep/spake
void partie()
{
  /* boucle de partie */
  int xpos;
  int ypos = 3;
  int perdu = 0;
  int niveau = 0;
  score=0;
  draw_cadre();
  wmove(blocJeu,9,6);
  wprintw(blocJeu,"%7d",score);
  wrefresh(blocJeu);

  do {
    niveau++;
    wclear(fenetreJeu);
    wmove(fenetreJeu,0,0);
    wmove(blocJeu,9,1);
    wprintw(blocJeu,"%3d",niveau);
    wrefresh(blocJeu);
    gen_tableau(niveau);
    //draw_tableau();
    usleep(500000);
    for (xpos=0;xpos<largeur;xpos++)
      {
        switch(wgetch(fenetreJeu))
          {
          case KEY_UP:
            ypos=max(0,ypos-1);
            break;
          case KEY_DOWN:
            ypos=min(ypos+1,hauteur-1);
            break;
          case 'q':
            end_curses();
            exit(0);
          }
        switch (tableau[ypos*largeur+xpos])
          {
          case 1:
            perdu = 1;
            wattron(fenetreJeu,COLOR_PAIR(3));
            mvwaddch(fenetreJeu,ypos,xpos,'@');
            wattroff(fenetreJeu,COLOR_PAIR(3));
            wrefresh(fenetreJeu);
            /* XXX pabo */
            goto finDePartie;
          case 2:
            score+=42*niveau;
            wmove(blocJeu,9,6);
            wprintw(blocJeu,"%7d",score);
            wrefresh(blocJeu);
          default:
            mvwaddch(fenetreJeu,ypos,xpos,vaisseau);
          }
                
        wrefresh(fenetreJeu);
        // pour rajouter une 'trainée'
        //mvwaddch(fenetreJeu,ypos,xpos,'=');
        usleep(125000);
      }
  } while (!perdu);


 finDePartie:
  animation_de_fin();
  if (new_highscore())
    {
      sleep(1);
      int position = new_highscore();
      char *nick = (char*)malloc(10*sizeof(char));
      /*wmove(fenetreJeu,5,8);
        wprintw(fenetreJeu,"YEAH !",score);*/
      wclear(dialog);
      wprintw(dialog,"Vous entrez dans les meilleurs scores !\n"
              "\n"
              "  Score      : %d\n"
              "  Position   : %d\n"
              "  Votre nick : ",
              score,position);
      curs_set(1);
      echo();
      wgetnstr(dialog,nick,10);
      if (strlen(nick)==0)
        nick = "(noname)";
      add_highscore(nick);
      curs_set(0);
      noecho();
      highlight_highscores(position);
    }
  else
    {
    }
}