Exemple #1
0
Tabuleiro Usuario::Processa (Tabuleiro T, int lado) {
  int end=0,estado=1,sx,sy,i;

  T.ShowCursor ();
  do {
    gotoxy (40,1);
    cprintf ("Lado %d Estado=%d ",lado,estado);
    gotoxy (px*2+1,py+1);
    switch (getch ()) {
      case 0: switch (toupper (getch ())) {
                case UP:    py-=1;
                            break;
                case DOWN:  py+=1;
                            break;
                case RIGHT: px+=1;
                            break;
                case LEFT:  px-=1;
                            break;
              }
              if (px<0) px=7;
              if (py<0) py=7;
              if (px>7) px=0;
              if (py>7) py=0;
              T.DrawOne (px,py,T.tab[px][py]);
              break;
      case 27: endgame=1;
               end=1;
               break;
      case 'R': T.Draw ();
                break;
      case 13: if (estado) {
                 if (T.tab[px][py]%2==lado) {
                   textcolor (WHITE);
                   T.DrawOne (px,py,T.tab[px][py]);
                   textcolor (LIGHTGRAY);
                   estado=0;
                   sx=px;
                   sy=py;
                 }
               } else {
                 if (T.Checa (sx,sy,px,py,lado)) {
                   T.tab[px][py]=T.tab[sx][sy];
                   T.tab[sx][sy]=0;
                   end=1;
                   T.DrawOne (sx,sy,0);
                   textcolor (WHITE);
                   T.DrawOne (px,py,T.tab[px][py]);
                   textcolor (LIGHTGRAY);
                   if (T.comidas) {
                     for (i=0; i<T.comidas; i++) {
                       T.tab[T.pos[i][0]][T.pos[i][1]]=0;
                       T.DrawOne (T.pos[i][0],T.pos[i][1],0);
                     }
                   }
                 } else {
                   T.DrawOne (sx,sy,T.tab[sx][sy]);
                   estado=1;
                 }
               }
    }
  } while (!end);
  return T;
}