void main (void) { Tabuleiro T; Jogador *J1,*J2; Usuario U1,U2; int lado=1; J1=&U1; J2=&U2; do { T.Draw (); if (lado) T=J2->Processa (T,lado); else T=J1->Processa (T,lado); lado=!lado; } while (!(T.End () || endgame)); }
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; }