Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 107.68 KB | None | 0 0
  1. {TAREAS PENDIENTES}
  2. {
  3.     * IMPORTANTE: La parte que se repite en la consola es porque el clrscr en geany solo borra lo que se ve, no lo de arriba.
  4.       Para arreglar eso hay que hacer que se muestre la lista de a 10 jugadores.
  5.     *
  6.     *
  7.     * Esperar a ver como llega la formacion de leo y editar el vector tacticas porque no son mas por fecha (lo hace pippo)
  8.     * Hacer el retorno de los reportes a los menus (deberia hacerlo ronnie en mi opinion (pippo)
  9.     * Resolver el tema de las listas de jugadores que se van de rango de pantalla
  10.     * Resolver el tema de los titulares dobles
  11.     * Correcciones Ortograficas o graficas (hay de a montones)
  12.     * Eliminar los pasajes directos al tocar un numero en los menu, que haya que darle enter siempre.
  13.     * }
  14.    
  15.     {* hay que poner dos 0 para salir del menu de clubes reales en la creacion de equipo
  16.     * si se apreta enter en la pantalla principal de la configuracion de equipo, se borran los cambios actuales}
  17.    
  18.     {Data respecto a lo de LEO
  19.     * DESPUES DE 3HS buscando di masomenos con el quid de la cuestion, el jugador se setea en 2 lados (Ver donde puse 'TESTEO')
  20.       La pregunta es, cual se saca, o si se saca alguno, si se saca cualquiera NO se duplica mas nada, pero aparecen otros bugs.
  21.       Si quieren mirenlo pero diria que lo dejemos asi y le preguntemos a LEO porque se asigna en 2 lados el Equipo[i].
  22.     *
  23.     * }
  24. {bugs encontrados de lalo}
  25. {
  26.     1.- Al crear el administrador e ingresar mal la contraseña donde te pide para confirmarla, se buguea y termina pidiendo
  27.     el nombre de nuevo.
  28.    
  29.     2.- Cuando no se elige el "Nombre" avisa de que el campo se ha dejado en blanco y se reinicia, pero si se pueden dejar
  30.     en blanco los campos de "Apellido", "Club" y "Contraseña"... al reingresar la contraseña si se deja en blanco se dice que
  31.     no es la misma y se reinicia.
  32. }
  33.  
  34. {************Editando Ema*****************}
  35.  
  36.  
  37. Program GranDT;
  38.  
  39. {Version Alpha 0.07}
  40.  
  41. {**************************************************************************************************************}
  42. {**************************************************************************************************************}
  43. {**************************************************************************************************************}
  44.  
  45. Uses AyPDT, CRT;
  46.  
  47. {**************************************************************************************************************}
  48. {**************************************************************************************************************}
  49. {**************************************************************************************************************}
  50.  
  51. Const
  52.     JUGADORES = 623;
  53.     EQUIPOS = 20;
  54.     FECHAS_TORNEO = EQUIPOS-1;
  55.     PRESUPUESTO = 60000000;
  56.     MAX_USUARIOS = 10;
  57.     JUGADORESXEQUIPO = 15;
  58.     SEPARADORH = '--------------------------------------------------------------------------------'; {Una linea tiene 80 caracteres}
  59.     LETRA_S = 83;
  60.     TIEMPO_SALIDA = 1500;
  61.     SIMBOLO_MONEDA = '$';
  62.     TACTICAS = 5;
  63.     MAX_TIPO_PREMIOS = 4;
  64.  
  65. {**************************************************************************************************************}
  66. {**************************************************************************************************************}
  67. {**************************************************************************************************************}
  68.  
  69. Type
  70.     tTactica = record
  71.         ID: byte;
  72.         Cantidad: byte;
  73.         end;
  74.  
  75.     tTacticas = array[1..TACTICAS] of tTactica;
  76.     tPuntajeJugador = array[1..JUGADORES, 1..FECHAS_TORNEO] of integer;
  77.  
  78.     tPuntajeTotalJugador = record
  79.         ID: integer;
  80.         puntajeTotal: integer;
  81.         end;
  82.  
  83.     tPuntajeTotalJugadores = array[1..JUGADORES] of tPuntajeTotalJugador;
  84.  
  85.     tElegidoJugador = record
  86.         ID: integer;
  87.         valor: byte;
  88.         end;
  89.  
  90.     tElegidoJugadores = array[1..JUGADORES] of tElegidoJugador;
  91.     tListaApuestas = array[1..4] of integer;
  92.  
  93.     tPuntajeEquipo = array[1..FECHAS_TORNEO] of integer;
  94.     tTacticaEquipo = array[1..FECHAS_TORNEO] of byte;
  95.     tPrecioEquipo = array[1..FECHAS_TORNEO] of real;
  96.  
  97.     tCondicion = (TITULAR, SUPLENTE);
  98.  
  99.     tJugadorEquipo = record
  100.         ID: integer;
  101.         Condicion: tCondicion;
  102.         end;
  103.    
  104.     tListaJugadoresEquipo = array[1..JUGADORESXEQUIPO] of tJugadorEquipo;
  105.    
  106.     tEquipo = record
  107.         Puntaje: tPuntajeEquipo;
  108.         Tactica: tTacticaEquipo;
  109.         Precio: tPrecioEquipo;
  110.         CantFechasGanadas: byte;
  111.         CantCambiosAcum: byte;
  112.         CantCambiosUltimaFecha: byte;
  113.         Jugador: tListaJugadoresEquipo;
  114.         end;
  115.  
  116.     tUsuario = record
  117.             ID: byte;
  118.             Nombre: string[25];
  119.             Apellido: string[25];
  120.             Club: string[20];
  121.             Usuario: string[20];
  122.             Contrasena: string[10];
  123.             TipoUsuario: byte;
  124.             Equipo: tEquipo;
  125.             CantidadApuesta: real;
  126.             GananciaPorFechas: real;
  127.             GananciaPorTorneo: real;
  128.             end;
  129.  
  130.     tUsuarios = array[1..MAX_USUARIOS] of tUsuario;
  131.    
  132.     tVEquipo = array [1..JUGADORES] of tJugador;
  133.     tVCondicion = array [1..JUGADORES] of tCondicion;
  134.     tVClubs = array [1..(EQUIPOS+1)] of integer;
  135.     tVJugadores = array [1..JUGADORESXEQUIPO]of integer;
  136.     tVFormacion = array [1..FECHAS_TORNEO] of integer;
  137.     tVCambios = array [1..FECHAS_TORNEO] of byte;
  138.  
  139.     tRegEQUIPO = record
  140.             ID: tVJugadores;
  141.             Condicion:tVCondicion;
  142.             Formacion: tVFormacion;
  143.             Cambios: tVCambios;
  144.             TotalCambios: byte;
  145.             end;
  146.    
  147. {**************************************************************************************************************}
  148. {**************************************************************************************************************}
  149. {**************************************************************************************************************}
  150.  
  151. Procedure MenuAdministrador(var FechaActual: byte; var TipoUsuario: byte; var vUsuarios: tUsuarios; var vListaApuestas: tListaApuestas; var vPuntajeJugador: tPuntajeJugador;
  152. CantUsuarios: byte; vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores: tElegidoJugadores; var vListaJugadores: tListaJugadores;
  153. UsuarioActual: byte; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);forward;
  154.  
  155. Procedure MenuIniciarSesion(var vUsuarios: tUsuarios; var TipoUsuario: byte; var UsuarioActual: byte; FechaActual: byte; var vListaApuestas: tListaApuestas;
  156. var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte; var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores: tElegidoJugadores;
  157. var vListaJugadores: tListaJugadores; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);forward;
  158.  
  159. Procedure MenuUsuario(var TipoUsuario: byte; var vUsuarios: tUsuarios; var FechaActual: byte; var vListaApuestas: tListaApuestas; var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte;
  160. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores: tElegidoJugadores; var vListaJugadores: tListaJugadores; UsuarioActual: byte;
  161. var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);forward;
  162.  
  163. Procedure CargaUsuarios(var vUsuarios: tUsuarios; var TipoUsuario: byte; var UsuarioActual: byte; FechaActual: byte; var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte;
  164. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores: tElegidoJugadores; var vListaApuestas: tListaApuestas;
  165. var vListaJugadores: tListaJugadores; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);forward;
  166.  
  167. Procedure MenuCorrerReportes(var vUsuarios: tUsuarios;var TipoUsuario: byte; FechaActual: byte; CantUsuarios: byte; var vPuntajeJugador: tPuntajeJugador; var vListaApuestas: tListaApuestas;
  168. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vElegidoJugadores: tElegidoJugadores; var vTacticas: tTacticas; var vListaJugadores: tListaJugadores; UsuarioActual: byte;
  169. var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);forward;
  170.  
  171. {**************************************************************************************************************}
  172. {**************************************************************************************************************}
  173. {**************************************************************************************************************}
  174.  
  175. Procedure tRegEQUIPO_a_UsuariosEquipo(var vUsuarios:tUsuarios; var RegEQUIPO:tRegEQUIPO; UsuarioActual:Byte; FechaActual:Byte);
  176.     var
  177.         i,j:Integer;
  178.     begin
  179.     for i:=1 to JUGADORESXEQUIPO do
  180.         begin
  181.         vUsuarios[UsuarioActual].Equipo.Jugador[i].ID := RegEQUIPO.ID[i];
  182.         vUsuarios[UsuarioActual].Equipo.Jugador[i].Condicion := RegEQUIPO.Condicion[i];
  183.         for j:=1 to FechaActual do
  184.             vUsuarios[UsuarioActual].Equipo.Tactica[j] := RegEQUIPO.Formacion[j];
  185.         end;
  186.         {falta pasar ea ambos modulos precio y cambios}
  187.     end;
  188.  
  189. Procedure UsuariosEquipo_a_tRegEQUIPO(var vUsuarios:tUsuarios; var RegEQUIPO:tRegEQUIPO; UsuarioActual:Byte; FechaActual:Byte);
  190.     var
  191.         i,j:Integer;
  192.     begin
  193.     for i:=1 to JUGADORESXEQUIPO do
  194.         begin
  195.         RegEQUIPO.ID[i] := vUsuarios[UsuarioActual].Equipo.Jugador[i].ID;
  196.         RegEQUIPO.Condicion[i] := vUsuarios[UsuarioActual].Equipo.Jugador[i].Condicion;
  197.         for j:=1 to FechaActual do
  198.             RegEQUIPO.Formacion[j] := vUsuarios[UsuarioActual].Equipo.Tactica[j];
  199.         end;
  200.     end;
  201.  
  202. {Imprime titulo del Programa. Ronnie Del Pino}
  203. Procedure ImprimirTitulo(FechaActual: byte);
  204. begin
  205.     clrscr;
  206.     gotoxy(35,1);
  207.     writeln('GranDT - Grupo 4');
  208.     case FechaActual of
  209.         0:
  210.         begin
  211.             gotoxy(28,2);
  212.             writeln('El Torneo aun no ha comenzado');
  213.         end;
  214.         1..19:
  215.         begin
  216.             gotoxy(40,2);
  217.             writeln('Fecha ', FechaActual);
  218.         end;
  219.         20:
  220.         begin
  221.             gotoxy(32,2);
  222.             writeln('El Torneo ha finalizado');
  223.         end;
  224.     end;
  225.     writeln;
  226. end;
  227.  
  228. {**************************************************************************************************************}
  229. {Ordena En forma Ascendente y descendente el vector. Ronnie Del Pino}
  230. Procedure OrdenarVector(var vUsuarios: tUsuarios; Orden: string);
  231. var
  232.     Aux: tUsuario;
  233.     i, j: byte;
  234.     DesOrd: boolean;
  235. begin
  236.     i := 1;
  237.     DesOrd := true;
  238.     while (i < MAX_USUARIOS) and (DesOrd) do
  239.         begin
  240.         DesOrd := false;
  241.         for j:=1 to MAX_USUARIOS-i do
  242.             begin
  243.             if (Orden = 'Asc') then
  244.                 begin
  245.                 if (vUsuarios[j].Usuario > vUsuarios[j+1].Usuario) then
  246.                     begin
  247.                     Aux := vUsuarios[j];
  248.                     vUsuarios[j] := vUsuarios[j+1];
  249.                     vUsuarios[j+1] := Aux;
  250.                     DesOrd := true;
  251.                     end;
  252.                 end
  253.             else
  254.                 begin
  255.                 if (vUsuarios[j].Usuario < vUsuarios[j+1].Usuario) then
  256.                     begin
  257.                     Aux := vUsuarios[j];
  258.                     vUsuarios[j] := vUsuarios[j+1];
  259.                     vUsuarios[j+1] := Aux;
  260.                     DesOrd := true;
  261.                     end;
  262.                 end;
  263.             end;
  264.         inc(i);
  265.         end;   
  266. end;
  267.  
  268. {**************************************************************************************************************}
  269. {Copia la lista de jugadores de la unit a un vector. Juan Manuel Castro Pippo}
  270. Procedure GenerarListaJugadores(var vListaJugadores: tListaJugadores);
  271. var
  272.     jugador: tJugador;
  273.     i: integer;
  274. begin
  275.     for i:=1 to JUGADORES do
  276.         begin
  277.             ObtenerJugador(i, Jugador);
  278.             vListaJugadores[i] := Jugador;
  279.         end;
  280. end;
  281.  
  282. {**************************************************************************************************************}
  283. {Validar un Numero con Rango. Juan Manuel Castro Pippo}
  284. Function ObtenerNumero(min:Longint; max:Longint):Longint;
  285.     Var
  286.         entrada : string;
  287.         salida : Longint;
  288.         Nro, Rango : Boolean;
  289.         cod : Byte;
  290.    
  291. begin
  292.     repeat
  293.         Nro:=True;
  294.         Rango:=True;
  295.         readln(entrada);
  296.         val(entrada,salida,cod);
  297.         if cod<>0 then
  298.             Begin
  299.             Nro:=False;
  300.             writeln('Numero Invalido.');
  301.             write('Ingrese de nuevo: ');
  302.             End
  303.         else
  304.             if (salida<min) or (max<salida) then
  305.                 Begin
  306.                 Rango:=False;
  307.                 writeln('Numero fuera de Rango.');
  308.                 write('Ingrese de nuevo: ');
  309.                 End;
  310.         until (Nro=True) and (Rango=True);
  311.    
  312.     ObtenerNumero := salida;
  313. end;
  314.  
  315. {**************************************************************************************************************}
  316. {Inicializa Strings. Emanuel Kotzayan}
  317. Procedure InicializarStrings(var Campo: string);
  318. begin
  319.     Campo := '';
  320. end;
  321.  
  322. {**************************************************************************************************************}
  323. {Inicializa Bytes. Emanuel Kotzayan}
  324. Procedure InicializarBytes(var Numero: byte);
  325. begin
  326.     Numero := 0;
  327. end;
  328.  
  329. {**************************************************************************************************************}
  330. {Inicializa Integers. Emanuel Kotzayan}
  331. Procedure InicializarIntegers(var Numero: integer);
  332. begin
  333.     Numero := 0;
  334. end;
  335.  
  336. {**************************************************************************************************************}
  337. {Inicializa Reals. Emanuel Kotzayan}
  338. Procedure InicializarReals(var Numero: real);
  339. begin
  340.     Numero := 0;
  341. end;
  342.  
  343. {**************************************************************************************************************}
  344. {Inicializa todas las variables. Emanuel Kotzayan}
  345. Procedure InicializarVariables (var vUsuarios: tUsuarios; var vListaJugadores: tListaJugadores; var vTacticas: tTacticas; var vPuntajeTotalJugadores: tPuntajeTotalJugadores;
  346. var vElegidoJugadores: tElegidoJugadores; var vPuntajeJugador: tPuntajeJugador; var vListaApuestas: tListaApuestas; var CantUsuarios: byte; var TipoUsuario: byte; var UsuarioActual: byte;
  347. var FechaActual: byte);
  348.  
  349. var
  350.     i, j, k, m, n, o, p: integer;
  351. begin
  352.     GenerarListaJugadores (vListaJugadores);
  353.     for i := 1 to MAX_USUARIOS do
  354.     begin
  355.         InicializarBytes(vUsuarios[i].ID);
  356.         InicializarStrings(vUsuarios[i].Nombre);
  357.         InicializarStrings(vUsuarios[i].Apellido);
  358.         InicializarStrings(vUsuarios[i].Club);
  359.         InicializarStrings(vUsuarios[i].Usuario);
  360.         InicializarStrings(vUsuarios[i].Contrasena);
  361.         InicializarBytes(vUsuarios[i].TipoUsuario);
  362.         InicializarReals(vUsuarios[i].CantidadApuesta);
  363.         InicializarReals(vUsuarios[i].GananciaPorFechas);
  364.         InicializarReals(vUsuarios[i].GananciaPorTorneo);
  365.         for j:=1 to FECHAS_TORNEO do
  366.         begin
  367.             InicializarIntegers(vUsuarios[i].Equipo.Puntaje[j]);
  368.             InicializarBytes(vUsuarios[i].Equipo.Tactica[j]);
  369.             InicializarReals(vUsuarios[i].Equipo.Precio[j]);
  370.         end;
  371.         InicializarBytes(vUsuarios[i].Equipo.CantFechasGanadas);
  372.         InicializarBytes(vUsuarios[i].Equipo.CantCambiosAcum);
  373.         InicializarBytes(vUsuarios[i].Equipo.CantCambiosUltimaFecha);
  374.         for k := 1 to JUGADORESXEQUIPO do
  375.         InicializarIntegers(vUsuarios[i].Equipo.Jugador[k].ID);
  376.     end;
  377.     for m:=1 to TACTICAS do
  378.     begin
  379.         InicializarBytes(vTacticas[m].ID);
  380.         InicializarBytes(vTacticas[m].Cantidad);
  381.     end;
  382.     for n := 1 to JUGADORES do
  383.     begin
  384.         InicializarIntegers(vPuntajeTotalJugadores[n].ID);
  385.         InicializarIntegers(vPuntajeTotalJugadores[n].puntajeTotal);
  386.         InicializarIntegers(vElegidoJugadores[n].ID);
  387.         InicializarBytes(vElegidoJugadores[n].valor);
  388.         for o := 1 to FECHAS_TORNEO do
  389.         begin
  390.             InicializarIntegers(vPuntajeJugador[n,o]);
  391.         end;
  392.     end;
  393.     for p:=1 to 4 do
  394.     InicializarIntegers(vListaApuestas[p]);
  395.     InicializarBytes(CantUsuarios);
  396.     InicializarBytes(TipoUsuario);
  397.     InicializarBytes(UsuarioActual);
  398.     InicializarBytes(FechaActual);
  399. end;
  400.  
  401. {**************************************************************************************************************}
  402. {Devuelve la cantidad de usuarios registrados. Ronnie Del Pino}
  403. Function CantidadParticipantes(var vUsuarios: tUsuarios):integer;
  404. var
  405.     i: integer;
  406. begin
  407.     i := 0;
  408.     OrdenarVector(vUsuarios, 'Des');
  409.     repeat
  410.         inc(i);
  411.     until (vUsuarios[i].Usuario = '') or (i > MAX_USUARIOS);
  412.     CantidadParticipantes := i-1;
  413. end;
  414.  
  415. {**************************************************************************************************************}
  416. {Obtiene la posicion libre mas cercana. Ronnie Del Pino}
  417. Function Posicion(var UnRecord: tUsuarios):integer;
  418. var
  419.     i: integer;
  420. begin
  421.     OrdenarVector(UnRecord, 'Des');
  422.     i := 0;
  423.     repeat
  424.         inc(i);
  425.     until (UnRecord[i].Usuario = '') or (i > MAX_USUARIOS);
  426.     Posicion := i;
  427. end;
  428.  
  429. {**************************************************************************************************************}
  430. {Valida y devuelve numeros de 0 a 9. Ronnie Del Pino}
  431. Function ValidarOpciones(): integer;
  432. var
  433.     valor: string;
  434.     Letra, Numero: byte;
  435.     Ancho: string;
  436. begin
  437.     Ancho:='';
  438.     repeat
  439.     Letra := ord(readkey);
  440.         if (Letra <> 8) then {Tecla Backspace}
  441.             Begin
  442.             if (Letra > 47) and (Letra < 58) then {Teclas Numericas}
  443.                 begin
  444.                 Valor := chr(Letra);
  445.                 Write(Valor);
  446.                 Ancho := Ancho + Valor;
  447.                 Val(Ancho, Numero);
  448.                 if (Length(Ancho) > 3) then
  449.                     begin
  450.                         Letra := 13;
  451.                         Numero := 99;  
  452.                     end;
  453.                 end;
  454.             end
  455.         else
  456.             begin
  457.                 Numero := 99;
  458.                 Letra := 13;
  459.             end;
  460.     until (Letra = 13);
  461.     ValidarOpciones := Numero;
  462. end;
  463. {**************************************************************************************************************}
  464. {Valida y devuelve la cantidad de cifras y el valor respectivameente. Ronnie Del Pino}
  465. Function ValidarNumerosCifras(Cant: byte): integer;
  466. var
  467.     Letra, Acum: byte;
  468.     Total: string;
  469.     Valor: integer;
  470. begin
  471.     InicializarStrings(Total);
  472.     Acum := 1;
  473.     repeat
  474.         Letra := ord(readkey);
  475.         if (Letra > 47) and (Letra < 58) then
  476.             begin
  477.             write(chr(letra));
  478.             inc(Acum);
  479.             Total := Total + chr(letra);
  480.             end;
  481.     until (Letra = 13) or (Acum > Cant);
  482.     val(Total,Valor);
  483.     ValidarNumerosCifras := Valor;
  484. end;
  485.  
  486. {**************************************************************************************************************}
  487. {Verifica que no se dupliquen los usuarios. Ronnie Del Pino}
  488. Function UsuarioDuplicado(User: string; var vUsuarios: tUsuarios): boolean;
  489. var
  490.     Inicio, Fin: integer;
  491.     Medio: integer;
  492.     Encontrado: boolean;
  493. begin
  494.     Inicio := 1;
  495.     Fin := MAX_USUARIOS;
  496.     Encontrado := False;
  497.     OrdenarVector(vUsuarios, 'Des');
  498.     repeat
  499.         if (Inicio >= Fin) then
  500.         begin
  501.             if (vUsuarios[Inicio].Usuario = User) then
  502.             begin
  503.                 UsuarioDuplicado := true;
  504.                 Encontrado := true;
  505.             end
  506.             else
  507.             begin
  508.                 UsuarioDuplicado := false;
  509.                 Encontrado := true;
  510.             end;
  511.         end;
  512.         Medio := (Inicio + Fin) div 2; 
  513.         if (vUsuarios[Medio].Usuario = User) then
  514.             begin
  515.             UsuarioDuplicado := true;
  516.             Encontrado := true;
  517.             end
  518.         else
  519.             if (vUsuarios[Medio].Usuario > User) then
  520.                 Inicio := Medio+1
  521.             else
  522.             Fin := Medio-1;
  523.     until (Encontrado)
  524. end;
  525.  
  526. {**************************************************************************************************************}
  527. {Verifica que el usuarios y la contrasena existan en los registros. Ronnie Del Pino}
  528. Function BuscarUsuario(User: string; Password: string; var vUsuarios: tUsuarios): boolean;
  529. var
  530.     Inicio, Fin: integer;
  531.     Medio: integer;
  532.     Encontrado: boolean;
  533. begin
  534.     Inicio := 1;
  535.     Fin := MAX_USUARIOS;
  536.     Encontrado := false;
  537.     OrdenarVector(vUsuarios, 'Des');
  538.     repeat
  539.         if (Inicio >= Fin) then
  540.             begin
  541.             if (vUsuarios[Inicio].Usuario = User) and (vUsuarios[Inicio].Contrasena = Password) then
  542.                 begin
  543.                     BuscarUsuario := true;
  544.                     Encontrado := true;
  545.                 end
  546.             else
  547.                 begin
  548.                     BuscarUsuario := false;
  549.                     Encontrado := true;
  550.                 end;
  551.             end;
  552.         Medio := (Inicio + Fin) div 2; 
  553.         if (vUsuarios[Medio].Usuario = User) then
  554.             if (vUsuarios[Medio].Contrasena = Password) then
  555.                 begin
  556.                     BuscarUsuario := true;
  557.                     Encontrado := true;
  558.                 end
  559.             else
  560.                 begin
  561.                     BuscarUsuario := false;
  562.                     Encontrado := true;
  563.                 end
  564.         else
  565.             if (vUsuarios[Medio].Usuario > User) then
  566.                 Inicio := Medio+1
  567.             else
  568.                 Fin := Medio-1;
  569.     until (Encontrado)
  570. end;
  571.  
  572.  
  573. {**************************************************************************************************************}
  574. {Obtiene id de un usuario. Devuelve 0 sino existe. Ronnie Del Pino}
  575. Function ObtenerID(User: string; var vUsuarios: tUsuarios): byte;
  576. var
  577.     Inicio, Fin: byte;
  578.     Medio: integer;
  579.     Encontrado: boolean;
  580. begin
  581.     Inicio := 1;
  582.     Fin := MAX_USUARIOS;
  583.     Encontrado := false;
  584.     OrdenarVector(vUsuarios, 'Des');
  585.     repeat
  586.         if (Inicio >= Fin) then
  587.             begin
  588.             if (vUsuarios[Inicio].Usuario = User) then
  589.                 begin
  590.                     ObtenerID := Inicio;
  591.                     Encontrado := true;
  592.                 end
  593.             else
  594.                 begin
  595.                     ObtenerID := 0;
  596.                     Encontrado := true;
  597.                 end;
  598.             end;
  599.         Medio := (Inicio + Fin) div 2; 
  600.         if (vUsuarios[Medio].Usuario = User) then
  601.                     begin
  602.                     ObtenerID := Medio;
  603.                     Encontrado := true;
  604.                     end
  605.         else
  606.             if (vUsuarios[Medio].Usuario > User) then
  607.                 Inicio := Medio+1
  608.             else
  609.                 Fin := Medio-1;
  610.     until (Encontrado)
  611. end;
  612.  
  613.  
  614. {**************************************************************************************************************}
  615. {Verifica si el usuario es administrador o user. Ronnie Del Pino}
  616. Function EsAdmin(var vUsuarios: tUsuarios; Usuario: string): boolean;
  617. var
  618.    i: byte;
  619. begin
  620.     InicializarBytes(i);
  621.     OrdenarVector(vUsuarios, 'Des');
  622.     repeat
  623.         inc(i);
  624.     until (vUsuarios[i].TipoUsuario = 0) or (i > MAX_USUARIOS);
  625.     if (vUsuarios[i].Usuario = Usuario) then
  626.         EsAdmin := true
  627.     else
  628.         EsAdmin := false;
  629. end;
  630.  
  631. {**************************************************************************************************************}
  632. {Oculta y devuelva las teclas ingresadas por el usuario. Ronnie Del Pino}
  633. Function OcultarContrasena(): string;
  634. var
  635.    Contrasena: string;
  636.    Tecla: byte;
  637.    Contador: byte;
  638. begin
  639.     InicializarStrings(Contrasena);
  640.     InicializarBytes(Contador);
  641.     InicializarBytes(Tecla);
  642.     while (Tecla <> 13) do
  643.        begin
  644.        Tecla := ord(readkey);
  645.        if (Tecla > 47) and (Tecla < 123) and (Contador < 10) then
  646.           begin
  647.           write('*');
  648.           Contrasena := Contrasena + chr(Tecla);
  649.           Contador := Contador+1;
  650.           end;
  651.        end;
  652.     OcultarContrasena := Contrasena;
  653. end;
  654.  
  655. {**************************************************************************************************************}
  656. {Convierte la tPosicion de un jugador a formato string. Juan Manuel Castro Pippo}
  657. Function tPosicionAString(Posicion: tPosicion):string;
  658. var
  659.     TextPos:string[15];
  660. begin
  661.     case (Posicion) of
  662.         ARQUERO: TextPos := 'Arquero';
  663.         DEFENSOR: TextPos := 'Defensor';
  664.         MEDIOCAMPISTA: TextPos := 'Mediocampista';
  665.         DELANTERO: TextPos := 'Delantero'
  666.         else TextPos := 'Desconocido';
  667.     end;
  668.     tPosicionAString := TextPos;
  669. end;
  670.  
  671. {**************************************************************************************************************}
  672. {Convierte la tCondicion de un jugador a formato string. Juan Manuel Castro Pippo}
  673. Function tCondicionAString(Condicion: tCondicion): string;
  674. var
  675.     TextPos: string[15];
  676. begin
  677.     case (Condicion) of
  678.         TITULAR: TextPos := 'Titular';
  679.         SUPLENTE: TextPos := 'Suplente';
  680.         else TextPos := 'Desconocido';
  681.     end;
  682.     tCondicionAString := TextPos;
  683. end;
  684.  
  685. {**************************************************************************************************************}
  686. {Imprime una Lista de los Mejores Jugadores por Puesto. Juan Manuel Castro Pippo}
  687. Procedure ImprimirMejoresJugadoresxPuesto(var vPuntajeTotalJugadores: tPuntajeTotalJugadores; Posicion: tPosicion; var vListaJugadores: tListaJugadores);
  688. var
  689.     i,j,k: integer;
  690.     AuxID: integer;
  691.     Jugador: tJugador;
  692.     Top, ElementosxPagina, Tecla: byte;
  693. begin
  694.     InicializarBytes(Tecla);
  695.     i := 1;
  696.     k := 1;
  697.     Top := 10;
  698.     ElementosxPagina := 15;
  699.     while (Tecla <> LETRA_S) do
  700.     begin
  701.         clrscr();
  702.         writeln('10 MEJORES JUGADORES EN LA POSICION ', upcase(tPosicionAstring(posicion)), ' EN LO QUE VA DEL TORNEO');
  703.         writeln('');
  704.         writeln('POS':4,'APELLIDO Y NOMBRE':29,'POSICION':16,'EQUIPO':15,'ACUMULADO':15);
  705.         writeln(SEPARADORH);
  706.         j := 1;
  707.         if (i > JUGADORES) then
  708.             i := 1;
  709.         if (k > Top) then
  710.         begin
  711.             k := 1;
  712.             i := 1;
  713.         end;
  714.         while (j <= ElementosxPagina) and (k <= Top) do
  715.         begin
  716.             AuxID := vPuntajeTotalJugadores[i].ID;
  717.             Jugador := vListaJugadores[AuxID];
  718.             if (vListaJugadores[AuxID].Posicion = Posicion) then
  719.             begin
  720.                 writeln(k:4,Jugador.Nombre:29,tPosicionAString(Jugador.Posicion):16,Jugador.Equipo_Real:15,vPuntajeTotalJugadores[i].PuntajeTotal:15);
  721.                 inc(k);
  722.                 inc(j);
  723.             end;
  724.             inc(i);
  725.         end;
  726.         writeln(SEPARADORH);
  727.         write('Volver al menu anterior?: ');
  728.         tecla := ord(upcase(readkey));
  729.     end;
  730. end;
  731.  
  732. {**************************************************************************************************************}
  733. {Muestra menu Resultados por posicion de jugador. Ronnie Del Pino}
  734. Procedure ReportesMenuResultadosPorPuesto(var vUsuarios: tUsuarios; var TipoUsuario: byte; var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vListaJugadores: tListaJugadores;
  735. FechaActual: byte; CantUsuarios: byte; var vPuntajeJugador: tPuntajeJugador; var vListaApuestas: tListaApuestas; var vElegidoJugadores: tElegidoJugadores;
  736. var vTacticas: tTacticas; UsuarioActual: byte; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  737.  
  738. var
  739.     Opcion: byte;
  740. begin
  741.     ImprimirTitulo(FechaActual);
  742.               writeln('1 - Arquero');
  743.               writeln('2 - Defensor');
  744.               writeln('3 - Mediocampista');
  745.               writeln('4 - Delantero');
  746.               writeln('5 - Volver');
  747.               write('Opcion: ');
  748.     Opcion := ValidarOpciones();
  749.     case Opcion of
  750.             1: ImprimirMejoresJugadoresxPuesto(vPuntajeTotalJugadores,ARQUERO, vListaJugadores);
  751.             2: ImprimirMejoresJugadoresxPuesto(vPuntajeTotalJugadores,DEFENSOR, vListaJugadores);
  752.             3: ImprimirMejoresJugadoresxPuesto(vPuntajeTotalJugadores,MEDIOCAMPISTA, vListaJugadores);
  753.             4: ImprimirMejoresJugadoresxPuesto(vPuntajeTotalJugadores,DELANTERO, vListaJugadores);
  754.             5: MenuCorrerReportes(vUsuarios, TipoUsuario, FechaActual, CantUsuarios, vPuntajeJugador, vListaApuestas, vPuntajeTotalJugadores, vElegidoJugadores, vTacticas, vListaJugadores,
  755.                UsuarioActual, Equipo, Condicion, RegEquipo);
  756.             else
  757.             ReportesMenuResultadosPorPuesto(vUsuarios, TipoUsuario, vPuntajeTotalJugadores, vListaJugadores, FechaActual, CantUsuarios, vPuntajeJugador, vListaApuestas, vElegidoJugadores,
  758.             vTacticas, UsuarioActual, Equipo, Condicion, RegEquipo);
  759.             end;
  760. end;
  761.  
  762. {**************************************************************************************************************}
  763. {Pide ingreso de usuario y contrasena. Ronnie Del Pino}
  764. Procedure IniciarSesion(var vUsuarios: tUsuarios; var TipoUsuario: byte; var UsuarioActual: byte; FechaActual: byte; var vListaApuestas: tListaApuestas; var vPuntajeJugador: tPuntajeJugador;
  765. CantUsuarios: byte; var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores:tElegidoJugadores; var vListaJugadores: tListaJugadores;
  766. var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  767.  
  768. var
  769.     Usuario, Contrasena: string;
  770. begin
  771.     ImprimirTitulo(FechaActual);
  772.     write('Usuario: ');
  773.     readln(Usuario);
  774.     write('Contrasena: ');
  775.     Contrasena := OcultarContrasena();
  776.     UsuarioActual:=ObtenerID(Usuario,vUsuarios); {Devuelve 0 sino existe usuario}
  777.     if (BuscarUsuario(Usuario, Contrasena, vUsuarios)) and (Contrasena <> '') then
  778.         begin
  779.         if EsAdmin(vUsuarios, Usuario) then
  780.             begin
  781.             TipoUsuario := 0;
  782.             //Modificar y enviar usuario Actual:
  783.             MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  784.             UsuarioActual, Equipo, Condicion, RegEquipo)
  785.             end
  786.         else
  787.             begin
  788.             TipoUsuario := 1;
  789.             //Modificar y enviar usuario Actual:
  790.             MenuUsuario(TipoUsuario, vUsuarios, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  791.             UsuarioActual, Equipo, Condicion, RegEquipo);
  792.             end;
  793.         end
  794.     else
  795.         begin
  796.         writeln;
  797.         writeln('Usuario y/o contrasena incorrectos!');
  798.         delay(TIEMPO_SALIDA);
  799.         MenuIniciarSesion(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores,
  800.         vListaJugadores, Equipo, Condicion, RegEquipo);
  801.         end;
  802. end;
  803.  
  804. {**************************************************************************************************************}
  805. {Muestra el Menu Crear o logear Usuario. Ronnie Del Pino}
  806. Procedure MenuIniciarSesion(var vUsuarios: tUsuarios; var TipoUsuario: byte; var UsuarioActual: byte; FechaActual: byte; var vListaApuestas: tListaApuestas;
  807. var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte; var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores:tElegidoJugadores;
  808. var vListaJugadores: tListaJugadores; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEquipo);
  809.  
  810. var
  811.     Opcion: byte;
  812.     Respuesta: byte;
  813. begin
  814.     ImprimirTitulo(FechaActual);
  815.     InicializarBytes(Respuesta);
  816.     writeln('1 - Crear usuario');
  817.     writeln('2 - Iniciar sesion');
  818.     writeln('0 - Salir');
  819.     write('Opcion: ');
  820.     Opcion := ValidarOpciones();
  821.           case Opcion of
  822.                 1:
  823.                 begin
  824.                     TipoUsuario := 1;
  825.                     CargaUsuarios(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaApuestas,
  826.                     vListaJugadores, Equipo, Condicion, RegEquipo);
  827.                     end;
  828.                 2:IniciarSesion(vUsuarios,TipoUsuario, UsuarioActual, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores,
  829.                   vListaJugadores, Equipo, Condicion, RegEquipo);
  830.                 0:begin
  831.                     writeln('0');
  832.                     write('Si sale se perderan todos los datos. Pulse S para salir: ');
  833.                     Respuesta := ord(upcase(readkey));
  834.                     if (Respuesta = LETRA_S) then
  835.                         begin
  836.                         writeln;
  837.                         writeln('Fin del programa...');
  838.                         delay(TIEMPO_SALIDA);
  839.                         end
  840.                     else
  841.                         MenuIniciarSesion(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas,
  842.                         vElegidoJugadores, vListaJugadores, Equipo, Condicion, RegEquipo);
  843.                     end
  844.                 else
  845.                     MenuIniciarSesion(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores,
  846.                     vListaJugadores, Equipo, Condicion, RegEquipo);
  847.          end;
  848. end;
  849.  
  850. {**************************************************************************************************************}
  851. {Verifica que un equipo este completo en el sector de armado de equipos. Emanuel Kotzayan}
  852. {Function ChequearEquipoCompleto (var Equipo: tVEquipo): boolean;
  853. var
  854.     i: integer;
  855.     EquipoCompleto: boolean;
  856. begin
  857.     i := 1;
  858.     EquipoCompleto := true;
  859.     while (i <= JUGADORESXEQUIPO) and (EquipoCompleto) do
  860.         begin
  861.             if Equipo[i].ID = 0 then
  862.             EquipoCompleto := false;
  863.             inc(i);
  864.         end;
  865.     ChequearEquipoCompleto := EquipoCompleto;
  866. end;}
  867.  
  868. {**************************************************************************************************************}
  869. {**************************************************************************************************************}
  870. {**************************************************************************************************************}
  871. {**************************************************************************************************************}
  872. {**************************************************************************************************************}
  873. {**************************************************************************************************************}
  874. {**************************************************************************************************************}
  875.  
  876. {CUIDADO CODIGO DE LEO}
  877.  
  878. {**************************************************************************************************************}
  879. {Valida que el usuario halla ingresado un numero correcto. Leo Ojeda}
  880.  
  881. Procedure ValidarMenu(var Menu: integer; Max: byte);
  882. var
  883.     Salir: boolean;
  884. begin
  885.     Salir := false;
  886.     repeat
  887.         read(Menu);
  888.         if (Menu < 0) or (Menu > Max) then
  889.             writeln('Numero incorrecto, intente nuevamente')
  890.         else
  891.             Salir := true;
  892.     until Salir;
  893. end;
  894.  
  895. {**************************************************************************************************************}
  896. {Muestra el dinero del usuario. Leo Ojeda}
  897. Procedure MostrarDinero(var Equipo: tVEquipo);
  898. var
  899.     Dinero: real;
  900.     Contador: byte;
  901. begin
  902.     Contador := 1;
  903.     Dinero := 0;
  904.     while (Equipo[Contador].ID <> 0) do
  905.     begin
  906.         Dinero := Equipo[Contador].Precio + Dinero;
  907.         Inc(Contador);
  908.     end;
  909.     writeln('Usted dispone de ',(PRESUPUESTO-dinero)/1000000:2:1,' Millones de $ para realizar su compra.');
  910. end;
  911.  
  912. {**************************************************************************************************************}
  913. {Inicializa tVEquipo. Leo Ojeda}
  914. Procedure InicializartVEquipo(var Equipo: tVEquipo);
  915. var
  916.     i: integer;
  917. begin
  918.     for i:=1 to JUGADORESXEQUIPO do
  919.         InicializarIntegers(Equipo[i].ID); 
  920. end;
  921.  
  922. {**************************************************************************************************************}
  923. {Verifica que el equipo este completo. Leo Ojeda}
  924. Procedure ValidarAgregar(var Equipo: tVEquipo; var Valido: boolean);
  925. var
  926.     i, Contador: integer;
  927. begin
  928.     valido := true;
  929.     Contador := 1;
  930.     for i:=1 to JUGADORESXEQUIPO do
  931.         if (Equipo[i].ID <> 0) then
  932.             inc(Contador);
  933.     if (Contador > JUGADORESXEQUIPO)  then
  934.         Valido := false;
  935. end;
  936.  
  937.  
  938.  
  939. {**************************************************************************************************************}
  940. {Imprime una Lista de Jugadores. Juan Manuel Castro Pippo}
  941. procedure ImprimirListaJugadores(var JugadorElegido:integer ;var vListaJugadores:tListaJugadores; var Equipo:tVEquipo);
  942.     var
  943.         i,j,k : integer;
  944.         Jugador : tJugador;
  945.         ElementosxPagina: byte;
  946.         Top : Integer;
  947.         Precio, Entrada : string;
  948.        
  949.     begin
  950.         Entrada:='';
  951.         i:=1;
  952.         Top:=JUGADORES;
  953.         ElementosxPagina:=15;
  954.        
  955.         while Entrada<>'C' do
  956.             begin
  957.             clrscr();
  958.             writeln('LISTA DE JUGADORES PARA COMPRAR');
  959.             writeln('');
  960.            
  961.             writeln('ID':4,'APELLIDO Y NOMBRE':29,'PRECIO':12,'POSICION':18,'EQUIPO':15);
  962.             writeln(SEPARADORH);
  963.             j:=1;
  964.             k:=i;
  965.             while (j<=ElementosxPagina) do     
  966.                 begin
  967.                 if k<=Top then
  968.                     begin
  969.                     Jugador:=vListaJugadores[k];
  970.                     Str(Jugador.precio/1000000:2:1,Precio);
  971.                     Precio:=Precio+' M';
  972.                     writeln(Jugador.id:4,Jugador.nombre:29,Precio:12,tPosicionAString(Jugador.posicion):18,Jugador.equipo_real:15);
  973.                     inc(k);
  974.                     end;
  975.                 inc(j);
  976.                 end;
  977.             writeln(SEPARADORH);
  978.             MostrarDinero(Equipo);
  979.             writeln('Presione (C) para Comprar un Jugador (recuerde la ID).');
  980.             write('Presione (A) y (S) para cambiar de pagina.');
  981.             Entrada:=upcase(readkey);
  982.             if (Entrada='A') and (i-ElementosxPagina>=1) then
  983.                 dec(i,ElementosxPagina);
  984.             if (Entrada='S') and (i+ElementosxPagina<=Top) then
  985.                 inc(i,ElementosxPagina);
  986.             end;
  987.            
  988.         clrscr();
  989.     end;
  990.  
  991. {**************************************************************************************************************}
  992. {Busqueda de jugadores para agregar al equipo. Leo Ojeda}
  993. Procedure BuscarJugador (var JugadorElegido: integer; Equipo: tVEquipo; var vListaJugadores:tListaJugadores);
  994. begin
  995.     ImprimirListaJugadores(JugadorElegido, vListaJugadores, Equipo);
  996.     writeln('Ingrese 0 si no desea comprar ningun jugador.');
  997.     write('Ingrese la ID del Jugador que desea Comprar: ');
  998.     JugadorElegido := ObtenerNumero(0,JUGADORES);
  999. end;
  1000.  
  1001. {**************************************************************************************************************}
  1002. {Valida el jugador que desea agregar el usuario al equipo. Leo Ojeda.}
  1003. Procedure ValidarAgregarJugador(Equipo: tvEquipo; JugadorElegido: integer; var Condicion: tvCondicion; var Valido: boolean);
  1004. var
  1005.     i, ContadorClub: byte;
  1006.     AuxJugador: tJugador;
  1007.     ContadorPlata: real;
  1008.     Formacion, FormacionTit, FormacionSup: integer;
  1009. begin
  1010.     Valido := true;
  1011.     InicializarBytes(ContadorClub);
  1012.     InicializarIntegers(Formacion);
  1013.     InicializarIntegers(FormacionSup);
  1014.     InicializarIntegers(FormacionTit);
  1015.     ObtenerJugador(JugadorElegido, AuxJugador);
  1016.     ContadorPlata := AuxJugador.Precio;
  1017.     i:=1;
  1018.     while equipo[i].id<>0 do
  1019.         begin
  1020.             if equipo[i].id = jugadorElegido then
  1021.             begin
  1022.                 writeln('Usted ya agrego a este jugador');
  1023.                 valido:=false;
  1024.             end;
  1025.             inc(i);
  1026.         end;
  1027.     if valido then
  1028.     begin
  1029.         i:=1;
  1030.         while equipo[i].id <>0 do
  1031.         begin
  1032.             contadorplata:=contadorplata + equipo[i].precio;
  1033.             if equipo[i].equipo_real=auxjugador.equipo_real then
  1034.                 inc(contadorclub);
  1035.             case equipo[i].posicion of
  1036.                 ARQUERO:        inc(Formacion,1000);
  1037.                 DEFENSOR:       inc(Formacion,100);
  1038.                 MEDIOCAMPISTA:  inc(Formacion,10);
  1039.                 DELANTERO:      inc(Formacion,1);
  1040.             end;
  1041.             if condicion[i]=SUPLENTE then
  1042.             case equipo[i].posicion of
  1043.                 ARQUERO:        inc(FormacionSup,1000);
  1044.                 DEFENSOR:       inc(FormacionSup,100);
  1045.                 MEDIOCAMPISTA:  inc(FormacionSup,10);
  1046.                 DELANTERO:      inc(FormacionSup,1);
  1047.             end;
  1048.             if condicion[i]=TITULAR then
  1049.             case equipo[i].posicion of
  1050.                 ARQUERO:        inc(FormacionTit,1000);
  1051.                 DEFENSOR:       inc(FormacionTit,100);
  1052.                 MEDIOCAMPISTA:  inc(FormacionTit,10);
  1053.                 DELANTERO:      inc(FormacionTit,1);
  1054.             end;
  1055.             inc(i);
  1056.         end;
  1057.         equipo[i]:=auxjugador;
  1058.         if contadorplata> PRESUPUESTO then
  1059.         begin
  1060.             writeln('Dinero insuficiente');
  1061.             valido:=false;
  1062.         end
  1063.         else
  1064.         begin
  1065.             if contadorclub = 3 then
  1066.             begin
  1067.                 writeln('Solo puede tener 3 jugadores del mismo club');
  1068.                 valido:=false;
  1069.             end
  1070.             else
  1071.             begin
  1072.                 case equipo[i].posicion of
  1073.                     ARQUERO:
  1074.                     begin
  1075.                         formacion:= formacion div 1000;
  1076.                         if formacion = 2 then
  1077.                         begin
  1078.                             writeln('Solo puede tener 2 arqueros en el equipo');
  1079.                             valido:=false;
  1080.                         end;
  1081.                     end;
  1082.                     DEFENSOR:
  1083.                     begin
  1084.                         formacion:= (formacion div 100)mod 10;
  1085.                         if formacion = 5 then
  1086.                         begin
  1087.                             writeln('Solo puede tener 5 defensores en el equipo');
  1088.                             valido:=false;
  1089.                         end
  1090.                         else
  1091.                         begin
  1092.                             formacionsup:= (formacionsup div 100)mod 10;
  1093.                             formaciontit:=(formaciontit div 100)mod 10+(formaciontit div 10)mod 10+formaciontit mod 10;
  1094.                             if (formacionsup = 1) and( formaciontit=10) then
  1095.                             begin
  1096.                                 writeln('Solo puede tener 1 suplente de cada posicion');
  1097.                                 valido:=false;
  1098.                             end;
  1099.                         end;
  1100.                     end;
  1101.                     MEDIOCAMPISTA:
  1102.                     begin
  1103.                         formacion:= (formacion div 10)mod 10;
  1104.                         if formacion= 6 then
  1105.                         begin
  1106.                             writeln('Solo puede tener 6 mediocampistas en el equipo');
  1107.                             valido:=false;
  1108.                         end
  1109.                         else
  1110.                         begin
  1111.                             formacionsup:=(formacionsup div 10)mod 10;
  1112.                             formaciontit:=(formaciontit div 100)mod 10+(formaciontit div 10)mod 10+formaciontit mod 10;
  1113.                             if (formacionsup = 1) and( formaciontit=10)  then
  1114.                             begin
  1115.                                 writeln('Solo puede tener 1 suplente de cada posicion');
  1116.                                 valido:=false;
  1117.                             end;
  1118.                         end;
  1119.                     end;
  1120.                     DELANTERO:
  1121.                     begin
  1122.                         formacion:= formacion mod 10;
  1123.                         if formacion = 4 then
  1124.                         begin
  1125.                             writeln('Solo puede tener 4 delanteros en el equipo');
  1126.                             valido:=false;
  1127.                         end
  1128.                         else
  1129.                         begin
  1130.                             formacionsup:=formacion mod 10;
  1131.                             formaciontit:=(formaciontit div 100)mod 10+(formaciontit div 10)mod 10+formaciontit mod 10;
  1132.                             if (formacionsup = 1) and( formaciontit=10)  then
  1133.                             begin
  1134.                                 writeln('Solo puede tener 1 suplente de cada posicion');
  1135.                                 valido:=false;
  1136.                             end;
  1137.                         end;
  1138.                     end;
  1139.                 end;
  1140.             end;
  1141.         end;
  1142.     end;
  1143. end;
  1144.  
  1145. {**************************************************************************************************************}
  1146. {Asigna jugador al vector de registros Equipo y en la misma posicion en el vector condicion que es paralelo al mismo pone si es titular o suplente. Leo Ojeda}
  1147. Procedure AsignarJugador(var Equipo: tVEquipo; var Condicion: tVCondicion; JugadorElegido: integer);
  1148. var
  1149.     i: byte;
  1150.     AuxJugador: tJugador;
  1151.     Formacion, Formacion2: integer;
  1152. begin
  1153.     InicializarIntegers(Formacion);
  1154.     InicializarIntegers(Formacion2);
  1155.     i:=1;
  1156.     while (Equipo[i].ID <> 0) do
  1157.     begin
  1158.         case Equipo[i].Posicion of
  1159.             ARQUERO:        inc(Formacion,1000);
  1160.             DEFENSOR:       inc(Formacion,100);
  1161.             MEDIOCAMPISTA:  inc(Formacion,10);
  1162.             DELANTERO:      inc(Formacion,1);
  1163.         end;
  1164.         if (Condicion[i] = TITULAR) then
  1165.         case Equipo[i].Posicion of
  1166.             ARQUERO:        inc(Formacion2,1000);
  1167.             DEFENSOR:       inc(Formacion2,100);
  1168.             MEDIOCAMPISTA:  inc(Formacion2,10);
  1169.             DELANTERO:      inc(Formacion2,1);
  1170.         end;
  1171.         inc(i);
  1172.     end;
  1173.     ObtenerJugador(JugadorElegido, AuxJugador);
  1174.    
  1175.     Equipo[i] := AuxJugador; {<= Estaba de antes,TESTEO}
  1176.     case Equipo[i].Posicion of
  1177.         ARQUERO:
  1178.         begin
  1179.             Formacion2 := Formacion div 1000;
  1180.             if Formacion2 = 1 then
  1181.                 Condicion[i] := SUPLENTE;
  1182.         end;
  1183.         DEFENSOR:
  1184.         begin
  1185.             Formacion := (Formacion div 100) mod 10;
  1186.             if (Formacion = 4) then
  1187.                 Condicion[i] := SUPLENTE
  1188.             else
  1189.             begin
  1190.                 Formacion2 := (Formacion2 div 100) mod 10 + (Formacion2 div 10) mod 10 + Formacion2 mod 10;
  1191.                 if (Formacion2 = 10) then
  1192.                     Condicion[i] := SUPLENTE;
  1193.             end;
  1194.         end;
  1195.         MEDIOCAMPISTA:
  1196.         begin
  1197.             Formacion := (Formacion div 10) mod 10;
  1198.             if Formacion = 5 then
  1199.                 Condicion [i] := SUPLENTE
  1200.             else
  1201.             begin
  1202.                 Formacion2 := (Formacion2 div 100) mod 10 + (Formacion2 div 10) mod 10 + Formacion2 mod 10;
  1203.                 if (Formacion2 = 10) then
  1204.                     Condicion[i] := SUPLENTE;
  1205.             end;
  1206.         end;
  1207.         DELANTERO:
  1208.         begin
  1209.             Formacion := Formacion mod 10;
  1210.             if (Formacion = 3) then
  1211.                 Condicion [i] := SUPLENTE
  1212.             else
  1213.             begin
  1214.                 Formacion2 := (Formacion2 div 100) mod 10 + (Formacion2 div 10) mod 10 + Formacion2 mod 10;
  1215.                 if (Formacion2 = 10) then
  1216.                     Condicion[i] := SUPLENTE;
  1217.             end;
  1218.         end
  1219.     end;
  1220. end;
  1221.  
  1222. {**************************************************************************************************************}
  1223. {Ordena la estructura Equipo teniendo en cuenta si son titulares o suplentes en primer criterio y en segundo que posicion tiene. Leo Ojeda}
  1224. Procedure OrdenarEstructura(var Equipo:tVEquipo; var Condicion:tVCondicion);
  1225. var
  1226.     Desordenado: boolean;
  1227.     AuxJugador: tJugador;
  1228.     AuxCondicion: tCondicion;
  1229.     Contador: byte;
  1230.     i: byte;
  1231.  
  1232. begin
  1233.     Contador := 1;
  1234.     while (Equipo[Contador].ID <> 0) do
  1235.         inc(Contador);
  1236.     Contador := Contador-1;
  1237.     if (Contador > 1) then
  1238.     begin
  1239.         Desordenado := true;
  1240.         while Desordenado do
  1241.         begin
  1242.             Desordenado := False;
  1243.             for i:=1 to Contador-1 do
  1244.             begin
  1245.                 if (Equipo[i].Posicion > Equipo[i+1].Posicion) then
  1246.                 begin
  1247.                     AuxJugador := Equipo[i];
  1248.                     AuxCondicion := Condicion[i];
  1249.                     Equipo[i] := Equipo[i+1];
  1250.                     Condicion[i] := Condicion[i+1];
  1251.                     Equipo[i+1] := AuxJugador;
  1252.                     Condicion[i+1] := AuxCondicion;
  1253.                     Desordenado := true;
  1254.                 end;
  1255.             end;
  1256.         end;
  1257.         Desordenado := True;
  1258.         while Desordenado do
  1259.         begin
  1260.             Desordenado := false;
  1261.             for i:=1 to Contador-1 do
  1262.             begin
  1263.                 if (Condicion[i] > Condicion[i+1]) then
  1264.                 begin
  1265.                     AuxJugador := Equipo[i];
  1266.                     AuxCondicion := Condicion[i];
  1267.                     Equipo[i] := Equipo[i+1];
  1268.                     Condicion[i] := Condicion[i+1];
  1269.                     Equipo[i+1] := AuxJugador;
  1270.                     Condicion[i+1] := AuxCondicion;
  1271.                     Desordenado := true;
  1272.                 end;
  1273.             end;
  1274.         end;
  1275.     end;
  1276. end;
  1277.  
  1278. {**************************************************************************************************************}
  1279. {Agrega judagadores, le pide al usuario que elija un jugador y corrobora si se puede o no agregar el mismo. Leo Ojeda}
  1280. Procedure AgregarJugador(var Equipo: tVEquipo; var Condicion: tVCondicion; var vListaJugadores:tListaJugadores);
  1281. var
  1282.     JugadorElegido: integer;
  1283.     Valido: boolean;
  1284.     Valido2: boolean;
  1285.     Menu: integer;
  1286.     Salir: boolean;  
  1287. begin
  1288.     Salir := false;
  1289.     ValidarAgregar(Equipo, Valido2);
  1290.     if (Valido2) then
  1291.     begin
  1292.         repeat
  1293.             clrscr();
  1294.             writeln ('AGREGAR JUGADOR');
  1295.             BuscarJugador (JugadorElegido, Equipo, vListaJugadores);
  1296.             if (JugadorElegido = 0) then
  1297.                 Salir := true
  1298.             else
  1299.             begin
  1300.                 ValidarAgregarJugador(Equipo, JugadorElegido, Condicion, Valido);
  1301.                 if Valido then
  1302.                 begin
  1303.                     AsignarJugador(Equipo, Condicion, JugadorElegido);
  1304.                     OrdenarEstructura(Equipo, Condicion);
  1305.                     writeln ('La asignacion fue exitosa ¿Desea agragar a otro jugador?');
  1306.                     writeln ('1: Si 0: No');
  1307.                     Menu:=ValidarOpciones();
  1308.                     if (Menu = 1) then
  1309.                     begin
  1310.                         ValidarAgregar(Equipo, Valido2);
  1311.                         if (not Valido2) then
  1312.                         begin
  1313.                             writeln ('No se puede agragar mas jugadores, debe realizar cambios');
  1314.                             readkey;
  1315.                             Salir := true;
  1316.                         end
  1317.                         else
  1318.                         Salir := false;
  1319.                     end
  1320.                     else
  1321.                         Salir := true;
  1322.                 end
  1323.                 else
  1324.                 begin
  1325.                     writeln ('Cambio no valido ¿Desea  intentarlo nuevamente?');
  1326.                     writeln ('1: Si 0: No');
  1327.                     Menu:=ValidarOpciones();
  1328.                     if (Menu = 0) then
  1329.                         Salir := true
  1330.                     else
  1331.                         Salir := false;
  1332.                 end;
  1333.             end;
  1334.         until Salir;
  1335.     end
  1336.     else
  1337.     writeln ('No se pueden agregar mas jugadores, debe realizar cambios');
  1338. end;
  1339.  
  1340.  
  1341. {**************************************************************************************************************}
  1342. {Muestra la Lista de Jugadores del Equipo Actual. Leo Ojeda}
  1343. Procedure MostrarLista(var Equipo: tVEquipo; var Condicion: tVCondicion; var Contador:integer);
  1344. begin
  1345.     Contador := 1;
  1346.     writeln('':3,'CONDICION':10,'APELLIDO Y NOMBRE':29,'PRECIO':9,'EQUIPO':15,'POSICION':14);
  1347.     writeln(SEPARADORH);
  1348.     while (equipo[Contador].ID <> 0) do
  1349.         begin  
  1350.         writeln(Contador:2,':':1,tCondicionAString(condicion[Contador]):10,equipo[Contador].nombre:29,(equipo[Contador].precio/1000000):8:1,'M':1,equipo[Contador].equipo_real:15, tPosicionAString(equipo[Contador].posicion):14);
  1351.         inc(Contador);
  1352.         end;
  1353.     writeln('0: Volver');
  1354.     write('Opcion: ');
  1355.     Contador := Contador-1;
  1356. end;
  1357.  
  1358. {**************************************************************************************************************}
  1359. {Procedimiento para eliminar jugadores. Leo Ojeda}
  1360. Procedure EliminarJugador(var Equipo: tVEquipo; var Condicion: tVCondicion);
  1361. var
  1362.     Menu: integer;
  1363.     MaxMenu, i: integer;
  1364.     AuxJugador: tJugador;
  1365.     AuxCondicion: tCondicion;
  1366. begin
  1367.     repeat
  1368.         clrscr();
  1369.         writeln('MENU ELIMIAR');
  1370.         writeln(SEPARADORH);
  1371.         writeln('Seleccione un Jugador');
  1372.         MostrarLista(Equipo, Condicion, MaxMenu);
  1373.         ValidarMenu(Menu, MaxMenu);
  1374.         if (Menu <> 0) then
  1375.         begin
  1376.             InicializarIntegers(Equipo[Menu].ID);
  1377.             for i:=Menu to JUGADORESXEQUIPO do
  1378.             begin
  1379.                 AuxJugador := Equipo[i];
  1380.                 AuxCondicion := Condicion[i];
  1381.                 Equipo[i] := Equipo[i+1];
  1382.                 Condicion[i] := Condicion[i+1];
  1383.                 Equipo[i+1] := AuxJugador;
  1384.                 Condicion[i+1] := AuxCondicion;
  1385.             end;
  1386.         end;
  1387.     until (Menu = 0);
  1388. end;
  1389.  
  1390. {**************************************************************************************************************}
  1391. {Validar asignación de suplentes. Leo Ojeda}
  1392. Procedure ValidarAsignarSuplente(var Equipo: tVEquipo; var Condicion: tVCondicion; JugElegido: byte; var Valido: boolean);
  1393. var
  1394.     i: byte;
  1395.     FormacionSup: integer;
  1396. begin
  1397.     Valido := true;
  1398.     i := 1;
  1399.     FormacionSup:=0;
  1400.     if (Condicion[JugElegido] = TITULAR) then
  1401.     begin
  1402.         while (Equipo[i].ID <> 0) do
  1403.         begin
  1404.             if (Condicion[i] = SUPLENTE) then
  1405.                 case Equipo[i].Posicion of
  1406.                     ARQUERO: inc(FormacionSup,1000);
  1407.                     DEFENSOR: inc(FormacionSup,1000);
  1408.                     MEDIOCAMPISTA: inc(FormacionSup,10);
  1409.                     DELANTERO: inc(FormacionSup,1);
  1410.                 end;
  1411.             inc(i);
  1412.         end;
  1413.         case Equipo[JugElegido].Posicion of
  1414.             ARQUERO:
  1415.             begin
  1416.                 FormacionSup := FormacionSup div 1000;
  1417.                 if (FormacionSup = 1) then;
  1418.                 begin
  1419.                     writeln('Ya hay un suplente en esa posicion');
  1420.                     Valido := false;
  1421.                 end;
  1422.             end;
  1423.             DEFENSOR:
  1424.             begin
  1425.                 FormacionSup := (FormacionSup div 100) mod 10;
  1426.                 if (FormacionSup = 1) then;
  1427.                 begin
  1428.                     writeln('Ya hay un suplente en esa posicion');
  1429.                     Valido := false;
  1430.                 end;
  1431.             end;
  1432.             MEDIOCAMPISTA:
  1433.             begin
  1434.                 FormacionSup := (FormacionSup div 10) mod 10;
  1435.                 if (FormacionSup = 1) then;
  1436.                 begin
  1437.                     writeln('Ya hay un suplente en esa posicion');
  1438.                     Valido := false;
  1439.                 end;
  1440.             end;
  1441.             DELANTERO:
  1442.             begin
  1443.                 FormacionSup := FormacionSup mod 10;
  1444.                 if FormacionSup = 1 then;
  1445.                 begin
  1446.                     writeln('Ya hay un suplente en esa posicion');
  1447.                     Valido := false;
  1448.                 end;
  1449.             end;
  1450.         end;
  1451.     end
  1452.     else
  1453.     begin
  1454.         writeln('El jugador ya es suplente');
  1455.         Valido := false;
  1456.     end;
  1457. end;
  1458.  
  1459. {**************************************************************************************************************}
  1460. {Asignacion de suplentes. Leo Ojeda}
  1461. Procedure AsignarSuplente(var Equipo: tVEquipo; var Condicion: tVCondicion);
  1462. var
  1463.     Menu,MaxMenu: integer;
  1464.     Valido: boolean;
  1465. begin
  1466.     repeat
  1467.         clrscr();
  1468.         writeln('MENU ASIGNAR SUPLENTE');
  1469.         writeln(SEPARADORH);
  1470.         writeln('Seleccione un Jugador');
  1471.         MostrarLista(Equipo, Condicion, MaxMenu);
  1472.         ValidarMenu(Menu, MaxMenu);
  1473.         ValidarAsignarSuplente(Equipo, Condicion, Menu, Valido);
  1474.         if Valido then
  1475.         begin
  1476.             Condicion[Menu] := SUPLENTE;
  1477.             OrdenarEstructura(Equipo, Condicion);
  1478.         end;
  1479.     until (Menu = 0);
  1480. end;
  1481.  
  1482.  
  1483. {**************************************************************************************************************}
  1484. {Cambio de estructuras. Leo Ojeda}
  1485. Procedure CambioDeEstructuraIda(var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO; FechaActual: byte; Cambios: byte);
  1486. var
  1487.     i: byte;
  1488.     Formacion: integer;
  1489. begin
  1490.     InicializarIntegers(Formacion);
  1491.     for i:=1 to JUGADORESXEQUIPO do
  1492.     begin
  1493.         RegEquipo.Condicion[i] := Condicion[i];
  1494.         RegEquipo.ID[i]:= Equipo[i].ID;
  1495.         if Condicion[i] = TITULAR then
  1496.             case Equipo[i].Posicion of
  1497.                 DEFENSOR: Formacion := Formacion +100;
  1498.                 MEDIOCAMPISTA: Formacion := Formacion +10;
  1499.                 DELANTERO: Formacion := Formacion +1;
  1500.             end;
  1501.         end;
  1502.         if (FechaActual <> 0) then
  1503.         begin
  1504.             RegEquipo.Formacion[FechaActual] := Formacion;
  1505.             RegEquipo.Cambios[FechaActual]:= Cambios;
  1506.             RegEquipo.TotalCambios := RegEquipo.TotalCambios + Cambios;
  1507.         end;   
  1508. end;
  1509.  
  1510. {**************************************************************************************************************}
  1511. {Cambio de estructuras. Leo Ojeda}
  1512. Procedure CambiarEstructuraVuelta(var RegEquipo: TRegEQUIPO; var Equipo: tVEquipo; var Condicion: tVCondicion);
  1513. var
  1514.     i: byte;
  1515.     AuxJugador: tJugador;
  1516. begin
  1517.     for i:=1 to JUGADORESXEQUIPO do
  1518.     begin
  1519.         ObtenerJugador(RegEquipo.ID[i], AuxJugador);
  1520.         Equipo[i] := AuxJugador;
  1521.         Condicion[i] := RegEquipo.Condicion[i];
  1522.     end;
  1523. end;
  1524.  
  1525.  
  1526. {**************************************************************************************************************}
  1527. {Modulo de LISTA DE JUGADORES DEL EQUIPO. Leo Ojeda}
  1528. Procedure ListaJugadoresEquipo(var Equipo:tVEquipo; var Condicion: tVCondicion);
  1529.     var
  1530.         CantJugadoresEquipo:SmallInt;
  1531.     begin
  1532.         clrscr();
  1533.         writeln('LISTA DE JUGADORES DE SU EQUIPO');
  1534.         writeln();
  1535.         CantJugadoresEquipo:=1;
  1536.         while (equipo[CantJugadoresEquipo].ID <> 0) do
  1537.             inc(CantJugadoresEquipo);
  1538.         dec(CantJugadoresEquipo);
  1539.         writeln('Hay ',CantJugadoresEquipo,' jugadores en el equipo');
  1540.         writeln(SEPARADORH);
  1541.         MostrarLista(Equipo, Condicion, CantJugadoresEquipo);
  1542.         readkey;
  1543.     end;
  1544.  
  1545.  
  1546. {**************************************************************************************************************}
  1547. {Permite que el usuario arme el equipo. Leo Ojeda}
  1548. Procedure EditarEquipo (var FechaActual: byte; var TipoUsuario: byte; var vUsuarios: tUsuarios; var vListaApuestas: tListaApuestas; var vPuntajeJugador: tPuntajeJugador;
  1549. CantUsuarios: byte; var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores:tElegidoJugadores; var vListaJugadores: tListaJugadores;
  1550. UsuarioActual:byte; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  1551. var
  1552.     Menu: integer;
  1553.     Salir: boolean;
  1554.     MaxMenu, Contador, Cambios: byte; // NO SE USA CantidadJug: byte
  1555.     // NO SE USA Plata: real;
  1556. begin
  1557.         InicializartVEquipo(equipo);
  1558.         Salir := false;
  1559.         writeln(SEPARADORH);
  1560.         // NO SE USA Plata:=0;
  1561.     repeat
  1562.         clrscr();
  1563.         ImprimirTitulo(FechaActual);
  1564.         writeln('CONFIGURACION DEL EQUIPO');
  1565.         writeln(SEPARADORH);
  1566.         writeln('1 - Agregar jugardor');
  1567.         writeln('2 - Quitar jugador');
  1568.         writeln('3 - Asignar a un jugador como suplente');
  1569.         writeln('4 - Mostrar lista de jugadores');
  1570.         writeln('0 - Volver');
  1571.         write('Opcion: ');
  1572.         Menu := ValidarOpciones();
  1573.         case Menu of
  1574.         1: AgregarJugador(Equipo, Condicion, vListaJugadores);
  1575.         2: EliminarJugador(Equipo, Condicion);
  1576.         3: AsignarSuplente(Equipo, Condicion);
  1577.         4: ListaJugadoresEquipo(Equipo, Condicion);
  1578.         0: begin
  1579.             Contador := 1;
  1580.             while (EQUIPO[Contador].ID <> 0) do
  1581.                 inc(Contador);
  1582.             if (Contador = 16) then
  1583.             begin
  1584.                 Cambios := 0;
  1585.                 CambioDeEstructuraIda(EQUIPO, CONDICION, RegEquipo, FechaActual, Cambios);
  1586.                 salir:=true;
  1587.             end
  1588.             else
  1589.             begin
  1590.                 writeln ('El equipo no esta terminado ¿desea salir y perder los cambios?');
  1591.                 writeln ('0:no');
  1592.                 writeln ('1:si');
  1593.                 Salir := true;
  1594.                 Maxmenu := 1;
  1595.                 ValidarMenu(Menu, MaxMenu);
  1596.                 if (Menu = 1) then
  1597.                 Salir := true;
  1598.             end;
  1599.            end;
  1600.     end;
  1601.     until (Salir = true);
  1602.     If (TipoUsuario = 0) then
  1603.         MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  1604.         UsuarioActual, Equipo, Condicion, RegEquipo)
  1605.     else
  1606.         MenuUsuario(TipoUsuario, vUsuarios, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  1607.         UsuarioActual, Equipo, Condicion, RegEquipo);{//falta... los que falta es asignar el equipo a otra estructura que es la que vimos con pipo.obviamente hay que pasar esa estructura como parametro}
  1608. end;
  1609.  
  1610. {**************************************************************************************************************}
  1611. {Valida los cambios. Leo Ojeda}
  1612. Procedure ValidarCambio(var Equipo: tVEquipo; var Condicion: tVCondicion; JugadorEjegido: integer; Menu:byte; var Valido: boolean; var vListaJugadores:tListaJugadores);
  1613. var
  1614. JugadorElegido: integer;
  1615. begin
  1616.     Equipo[Menu].ID := 0;
  1617.     OrdenarEstructura(Equipo, Condicion);
  1618.     BuscarJugador (JugadorElegido, Equipo, vListaJugadores);
  1619.     ValidarAgregarJugador(Equipo, JugadorElegido, Condicion, Valido);
  1620. end;
  1621.  
  1622. {**************************************************************************************************************}
  1623. {Realiza los cambios. Leo Ojeda}
  1624. Procedure RealizarCambio(var Equipo: tVEquipo; var Condicion: tVCondicion; JugadorElegido: integer; Menu: byte);
  1625. begin
  1626.     Equipo[Menu].ID :=  0;
  1627.     OrdenarEstructura(Equipo, Condicion);
  1628.     AsignarJugador(Equipo, Condicion, JugadorElegido);
  1629. end;
  1630.  
  1631. {**************************************************************************************************************}
  1632. {Realiza los intercambios de jugadores. Leo Ojeda}
  1633. Procedure CambiarJugadorLista(var Equipo: tVEquipo; var Condicion: tVCondicion; var ContadorCambio: byte; var vListaJugadores:tListaJugadores);
  1634. var
  1635.     Menu, MaxMenu, JugadorElegido: integer;
  1636.     Valido: boolean;
  1637. begin
  1638.     repeat
  1639.         writeln('Elija el jugador que desea modificar');
  1640.         MostrarLista(Equipo, Condicion, MaxMenu);
  1641.         writeln('0: Salir');
  1642.         ValidarMenu(Menu, MaxMenu);
  1643.         if (Menu <> 0) then
  1644.         begin
  1645.             BuscarJugador (JugadorElegido, Equipo, vListaJugadores);
  1646.             if (JugadorElegido <> 0) then
  1647.             begin
  1648.                 ValidarCambio(Equipo, Condicion, JugadorElegido, Menu, Valido, vListaJugadores);
  1649.                 if (Valido) then
  1650.                 begin
  1651.                     RealizarCambio(Equipo, Condicion, JugadorElegido, Menu);
  1652.                     inc(ContadorCambio);
  1653.                 end
  1654.                 else
  1655.                 write ('El cambio no es correcto');
  1656.             end;
  1657.         end;
  1658.     until (menu = 0);
  1659. end;
  1660.  
  1661. {**************************************************************************************************************}
  1662. {Gestiona los cambios entre fechas. Leo Ojeda}
  1663. Procedure CambiosFecha (var RegEquipo: TRegEQUIPO; FechaActual: byte; var vListaJugadores:tListaJugadores);{********* FALTAN COSAS *********}
  1664. var
  1665.     Condicion: tVCondicion;
  1666.     Equipo: tVEquipo;
  1667.     MaxMenu, Cambios: byte;
  1668.     Menu, CantidadJug: integer;
  1669.     Salir: boolean;
  1670.     // NO SE USA plata: real;
  1671. begin
  1672.     CambiarEstructuraVuelta(RegEquipo, Equipo, Condicion);
  1673.     Salir := false;
  1674.     writeln('CONFIGURACION EQUIPO');
  1675.     writeln(SEPARADORH);
  1676.     InicializarBytes(Cambios);
  1677.     repeat
  1678.         writeln('ARMA TU EQUIPO');
  1679.         writeln('1:cambiar jugador suplente por titular');
  1680.         writeln('2:cambiar jugador de la lista general');
  1681.         writeln('4:mostrar lista de jugadores');
  1682.         writeln('0:salir');
  1683.         MaxMenu := 3;
  1684.         ValidarMenu(Menu, MaxMenu);
  1685.         case Menu of
  1686.             1:writeln('esto no esta terminado');{ cambiarsuplentextitular(EQUIPO,CONDICION);  }
  1687.             {pipo por favor fijate si podes hacer esto que vos la tenes mas clara esto cambia titular por suplente}
  1688.             {el usuario pude cambiar todos los suplentes y ponerlos a jugar, el unico limite que tenia de cambios era cuando cambiava jugadores en la lista general}
  1689.             {estos cambios pueden llegar a modificar la formacion pero igual no te preocupes por eso por que lo evaluo al final de este precedimiento}
  1690.             {lo importante es que no se cambie arquero por defensor, pero si puede haber cambio de delantero por mediocampista. etc,}
  1691.             2:begin
  1692.                 if (FechaActual <> 1) then
  1693.                 begin
  1694.                     if (Cambios + RegEquipo.Cambios[FechaActual-1] = 4) then
  1695.                         writeln ('No se pueden realizar mas cambios. Solo se permiten 4 cada dos fechas')
  1696.                     else
  1697.                     begin
  1698.                         if (Cambios = 4) then
  1699.                             writeln ('No se pueden realizar mas cambios. Solo se permiten 4 cada dos fechas')
  1700.                         else
  1701.                             CambiarJugadorLista(Equipo, Condicion, Cambios, vListaJugadores);
  1702.                     end;
  1703.                 end;
  1704.             end;
  1705.             3:begin
  1706.                 MostrarLista(Equipo, Condicion, CantidadJug);
  1707.                 readkey;
  1708.             end;
  1709.             0:begin
  1710.                 CambioDeEstructuraIda(Equipo, Condicion,RegEquipo, FechaActual, Cambios);
  1711.                 Salir := true;
  1712.             end;
  1713.         end;
  1714.     until Salir;
  1715. end;
  1716.  
  1717. {CUIDADO
  1718.  FIN CODIGO DE LEO}
  1719. {**************************************************************************************************************}
  1720. {**************************************************************************************************************}
  1721. {**************************************************************************************************************}
  1722. {**************************************************************************************************************}
  1723. {**************************************************************************************************************}
  1724. {**************************************************************************************************************}
  1725. {**************************************************************************************************************}
  1726.  
  1727. {**************************************************************************************************************}
  1728. {Llama a la funcion crear equipo. Ronnie Del Pino}
  1729. Procedure CrearEquipo(var TipoUsuario: byte; FechaActual: byte; var vUsuarios: tUsuarios; var vListaApuestas: tListaApuestas; var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte;
  1730. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores:tElegidoJugadores; var vListaJugadores: tListaJugadores; var UsuarioActual: byte;
  1731. var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  1732.  
  1733. begin
  1734.     if (FechaActual = 0) then
  1735.         begin
  1736.         {UsuariosEquipo_a_tRegEQUIPO(vUsuarios,RegEquipo,UsuarioActual,FechaActual);}{TESTEO}
  1737.         EditarEquipo(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  1738.         UsuarioActual, Equipo, Condicion, RegEquipo);
  1739.         end
  1740.     else
  1741.         begin
  1742.         writeln;
  1743.         write('El Torneo ha empezado. No pueden crear equipos!');
  1744.         delay(TIEMPO_SALIDA);
  1745.         if (TipoUsuario = 0) then
  1746.             MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  1747.             UsuarioActual, Equipo, Condicion, RegEquipo)
  1748.         else
  1749.             MenuUsuario(TipoUsuario, vUsuarios, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  1750.             UsuarioActual, Equipo, Condicion, RegEquipo);
  1751.         end;
  1752. end;
  1753.  
  1754. {**************************************************************************************************************}
  1755. {Lanzador del procedimiento de cambios en equipos. Ronnie Del Pino}
  1756. Procedure RealizarCambios(var TipoUsuario: byte; FechaActual: byte; var vUsuarios: tUsuarios; var vListaApuestas: tListaApuestas; var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte;
  1757. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores:tElegidoJugadores; var vListaJugadores: tListaJugadores; UsuarioActual: byte;
  1758. var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  1759.  
  1760. begin
  1761.     if (FechaActual > 0) then
  1762.         begin
  1763.         //PROCEDIMIENTO CAMBIOS EN EQUIPOS
  1764.         end
  1765.     else
  1766.         begin
  1767.         writeln;
  1768.         write('El Torneo no ha empezado. No pueden realizar cambios!');
  1769.         delay(TIEMPO_SALIDA);
  1770.         if (TipoUsuario = 0) then
  1771.             MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  1772.             UsuarioActual, Equipo, Condicion, RegEquipo)
  1773.         else
  1774.             MenuUsuario(TipoUsuario, vUsuarios, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  1775.             UsuarioActual, Equipo, Condicion, RegEquipo);
  1776.         end;
  1777. end;
  1778.  
  1779. {**************************************************************************************************************}
  1780. {Ricardo Ariel Sosa Aquino}
  1781. Procedure SwapUsuario(var Usuario1: tUsuario; var Usuario2: tUsuario);
  1782. var
  1783.     AuxUsuario: tUsuario;
  1784. begin
  1785.     AuxUsuario := Usuario1;
  1786.     Usuario1 := Usuario2;
  1787.     Usuario2 := AuxUsuario;
  1788. end;
  1789.  
  1790. {**************************************************************************************************************}
  1791. {OrdernarUsuariosxPuntaje. Ricardo Ariel Sosa Aquino}
  1792. Procedure OrdernarUsuariosxPuntaje (var vUsuarios: tUsuarios; USUARIOS: byte; FECHAS: byte);
  1793. var
  1794.     i,j,k, PuntajeAcum1,PuntajeAcum2, CambiosAcum1, CambiosAcum2: integer;
  1795.     Ordenado: boolean;
  1796.     PrecioAcum1, PrecioAcum2: real;
  1797. begin
  1798.     i := 1;
  1799.     Ordenado := false;
  1800.     while (i<=USUARIOS) and (not(Ordenado)) do
  1801.     begin
  1802.         Ordenado := true;
  1803.         InicializarIntegers(PuntajeAcum1);
  1804.         InicializarReals(PrecioAcum1);
  1805.         CambiosAcum1 := PuntajeAcum1 + vUsuarios[i].Equipo.CantCambiosAcum;
  1806.         for j:=1 to USUARIOS-i do
  1807.         begin
  1808.             InicializarIntegers(PuntajeAcum2);
  1809.             InicializarReals(PrecioAcum2);
  1810.             CambiosAcum2 := PuntajeAcum2 + vUsuarios[j].Equipo.CantCambiosAcum;
  1811.             for k:=1 to FECHAS do
  1812.             begin
  1813.                 if (j = 1) then
  1814.                 begin
  1815.                     PuntajeAcum1 := PuntajeAcum1 + vUsuarios[i].Equipo.Puntaje[k];
  1816.                     PrecioAcum1 := PrecioAcum1 + vUsuarios[i].Equipo.Precio[k];
  1817.                 end;
  1818.                 PuntajeAcum2 := PuntajeAcum2 + vUsuarios[j].Equipo.Puntaje[k];
  1819.                 PrecioAcum2 := PrecioAcum2 + vUsuarios[j].Equipo.Precio[k];
  1820.             end;
  1821.             if (PuntajeAcum2 > PuntajeAcum1) then
  1822.                 Ordenado := false
  1823.             else
  1824.                 if (PuntajeAcum2 = PuntajeAcum1) and (CambiosAcum2 < CambiosAcum1) then
  1825.                     Ordenado := false
  1826.                 else
  1827.                     if (PuntajeAcum2 = PuntajeAcum1) and (CambiosAcum2 = CambiosAcum1) and (PrecioAcum2 > PrecioAcum1) then
  1828.                     Ordenado := false;
  1829.             if (not(Ordenado)) then
  1830.             begin
  1831.                 PuntajeAcum1 := PuntajeAcum2;
  1832.                 CambiosAcum1 := CambiosAcum2;
  1833.                 PrecioAcum1 := PrecioAcum2;
  1834.                 SwapUsuario(vUsuarios[i], vUsuarios[j]);
  1835.             end;
  1836.         end;
  1837.         inc(i);
  1838.     end;
  1839. end;
  1840.  
  1841. {**************************************************************************************************************}
  1842. {Muestra Tabla de Posiciones. Ricardo Ariel Sosa Aquino}
  1843. Procedure MostrarTablaDePosiciones (var vUsuarios: tUsuarios; USUARIOS: byte; FECHAS: byte);
  1844. var
  1845.     i,j: integer;
  1846.     PuntajeAcum, CambiosAcum: integer;
  1847.     PrecioAcum: real;
  1848. begin
  1849.     Writeln('Equipo':10,'Puntaje':12,'Fechas':12,'Ganadas':12,'N Cambios':12,'Presupuesto Promedio':22);
  1850.     for i:=1 to USUARIOS do
  1851.     begin
  1852.         InicializarIntegers(PuntajeAcum);
  1853.         InicializarIntegers(CambiosAcum);
  1854.         InicializarReals(PrecioAcum);
  1855.         for j:=1 to FECHAS do
  1856.         begin
  1857.             PuntajeAcum := PuntajeAcum + vUsuarios[i].Equipo.Puntaje[j];
  1858.             if (vUsuarios[i].Equipo.Tactica[j] <> vUsuarios[i].Equipo.Tactica[j+1]) and (not(j+1=FECHAS)) then
  1859.                 inc(CambiosAcum);
  1860.             PrecioAcum := PrecioAcum + vUsuarios[i].Equipo.Precio[j];
  1861.         end;
  1862.         Write(vUsuarios[i].ID:8);
  1863.         Write(PuntajeAcum:10);
  1864.         Write(vUsuarios[i].Equipo.CantFechasGanadas:10);
  1865.         Write(CambiosAcum:12);
  1866.         Writeln((PrecioAcum/FECHAS):22:0);
  1867.     end;
  1868. end;
  1869.  
  1870. {**************************************************************************************************************}
  1871. {Muestra los Resultado de las Apuestas. Ricardo Ariel Sosa Aquino}
  1872. Procedure MostrasResultadosDeApuestas(var vListaApuestas: tListaApuestas; var vUsuarios: tUsuarios; USUARIOS: byte; FECHAS: byte);
  1873. var
  1874.     i,j,k, GanadoresxFecha, Campeones, Subcampeones, Puntaje1, Puntaje2: integer;
  1875.     Apuesta, GanadoxMedalla, GanadoxFecha, GastadoxFecha1, GastadoxFecha2: real;
  1876.     EsGanador, EsCampeon, EsSubcampeon, EsTercero: boolean;
  1877. begin
  1878.     Apuesta := (vListaApuestas[1] * FECHAS + vListaApuestas[2] + vListaApuestas[3] + vListaApuestas[4]) / USUARIOS;
  1879.     Writeln('Pozo por fecha: ', vListaApuestas[1]);
  1880.     Writeln('Medalla de Oro: ', vListaApuestas[2]);
  1881.     Writeln('Medalla de Plata: ', vListaApuestas[3]);
  1882.     Writeln('Medalla de Bronce: ', vListaApuestas[4]);
  1883.     Writeln('Nombre - Equipo - Apuesta - Ganancia por fecha - Ganancia por Torneo - Ganancia Total');
  1884.     for i:=1 to USUARIOS do
  1885.     begin
  1886.         Write(vUsuarios[i].Nombre);
  1887.         Write(' - Equipo ', vUsuarios[i].ID);
  1888.         Write(' - ', Apuesta);
  1889.         InicializarIntegers(Puntaje1);
  1890.         InicializarIntegers(Puntaje2);
  1891.         InicializarIntegers(Campeones);
  1892.         InicializarReals(GastadoxFecha1);
  1893.         InicializarReals(GanadoxMedalla);
  1894.         Subcampeones := 1;
  1895.         EsCampeon := true;
  1896.         EsSubcampeon := true;
  1897.         EsTercero := true;
  1898.         for j:=1 to USUARIOS do
  1899.         begin
  1900.             InicializarReals(GastadoxFecha2);
  1901.             for k:=1 to FECHAS do
  1902.             begin
  1903.                 if (i = 1) then
  1904.                 begin
  1905.                     Puntaje1 := Puntaje1 + vUsuarios[i].Equipo.Puntaje[k];
  1906.                     GastadoxFecha1 := GastadoxFecha1 + vUsuarios[i].Equipo.Precio[k];
  1907.                 end;
  1908.                 GastadoxFecha2 := GastadoxFecha2 + vUsuarios[j].Equipo.Precio[k];
  1909.                 Puntaje2 := Puntaje2 + vUsuarios[j].Equipo.Puntaje[k];
  1910.             end;
  1911.             if (EsTercero) then
  1912.             begin
  1913.                 if (Puntaje1 < Puntaje2) then
  1914.                 begin
  1915.                     if (not(EsCampeon)) then
  1916.                         begin
  1917.                             if (not(EsSubcampeon)) then
  1918.                                 EsTercero := false;
  1919.                             EsSubcampeon := false;
  1920.                         end;
  1921.                     EsCampeon := false;
  1922.                     inc(Campeones);
  1923.                 end
  1924.                 else
  1925.                 if (Puntaje1 = Puntaje2) and (vUsuarios[i].Equipo.CantFechasGanadas < vUsuarios[j].Equipo.CantFechasGanadas) then
  1926.                 begin
  1927.                     if (not(EsCampeon)) then
  1928.                         begin
  1929.                             if (not(EsSubcampeon)) then
  1930.                                 EsTercero := false;
  1931.                             EsSubcampeon := false;
  1932.                         end;
  1933.                     EsCampeon := false;
  1934.                     inc(Campeones);
  1935.                 end
  1936.                 else
  1937.                 if (Puntaje1 = Puntaje2) and (vUsuarios[i].Equipo.CantFechasGanadas = vUsuarios[j].Equipo.CantFechasGanadas) and (GastadoxFecha1 < GastadoxFecha2) then
  1938.                 begin
  1939.                     if (not(EsCampeon)) then
  1940.                         begin
  1941.                             if (not(EsSubcampeon)) then
  1942.                                 EsTercero := false;
  1943.                             EsSubcampeon := false;
  1944.                         end;
  1945.                     EsCampeon := false;
  1946.                     inc(Campeones);
  1947.                 end
  1948.                 else
  1949.                 if (Puntaje1 = Puntaje2) and (vUsuarios[i].Equipo.CantFechasGanadas = vUsuarios[j].Equipo.CantFechasGanadas) and (GastadoxFecha1 = GastadoxFecha2) then
  1950.                 begin
  1951.                     if (EsCampeon) then
  1952.                         inc(Campeones);
  1953.                     if (EsSubcampeon) then
  1954.                         inc(Subcampeones);
  1955.                 end
  1956.             end;
  1957.         end;
  1958.         if (EsCampeon) then
  1959.             if (Campeones < 2) then
  1960.                 GanadoxMedalla := vListaApuestas[2]
  1961.             else
  1962.             if (Campeones < 3) then
  1963.                 GanadoxMedalla := (vListaApuestas[2] + vListaApuestas[3]) / Campeones
  1964.             else
  1965.             GanadoxMedalla := (vListaApuestas[2] + vListaApuestas[3] + vListaApuestas[4]) / Campeones
  1966.         else
  1967.         if (EsSubcampeon) and (Campeones < 3) then
  1968.             if (Campeones < 2) then
  1969.                 if (Subcampeones > 1) then
  1970.                     GanadoxMedalla := (vListaApuestas[3] + vListaApuestas[4]) / Subcampeones
  1971.                 else
  1972.                     write(vListaApuestas[3])
  1973.             else
  1974.             if (Campeones < 3) then
  1975.                 GanadoxMedalla := vListaApuestas[4] / Subcampeones
  1976.         else
  1977.         if EsTercero and (Campeones + Subcampeones < 3)then
  1978.             GanadoxMedalla := vListaApuestas[4];
  1979.         write(' - ', GanadoxMedalla);
  1980.         if (vUsuarios[i].Equipo.CantFechasGanadas > 0) then
  1981.         begin
  1982.             InicializarReals(Ganadoxfecha);
  1983.             for j:=1 to FECHAS do
  1984.             begin
  1985.                 GanadoresxFecha := 1;
  1986.                 k := 1;
  1987.                 EsGanador := true;
  1988.                 while (k <= USUARIOS) and (EsGanador) do
  1989.                 begin
  1990.                     if (vUsuarios[i].Equipo.Puntaje[j] < vUsuarios[k].Equipo.Puntaje[j]) then
  1991.                         EsGanador := false
  1992.                     else
  1993.                     if (vUsuarios[i].Equipo.Puntaje[j] = vUsuarios[k].Equipo.Puntaje[j]) and (vUsuarios[i].Equipo.Precio[k] < vUsuarios[k].Equipo.Precio[j]) then
  1994.                         esganador:=false
  1995.                     else
  1996.                     if (vUsuarios[i].Equipo.Puntaje[j] = vUsuarios[k].Equipo.Puntaje[j]) and (vUsuarios[i].Equipo.Precio[k] = vUsuarios[k].Equipo.Precio[j]) then
  1997.                         inc(GanadoresxFecha);
  1998.                     inc(k);
  1999.                 end;
  2000.                 if EsGanador then
  2001.                     GanadoxFecha := GanadoxFecha + vListaApuestas[1] / GanadoresxFecha;
  2002.             end;
  2003.             write(' - ', GanadoresxFecha);
  2004.         end
  2005.         else
  2006.             write(' - 0');
  2007.     end;
  2008. end;
  2009.  
  2010. {**************************************************************************************************************}
  2011. {Muestra los resultados de la ultima fecha. Ricardo Ariel Sosa Aquino}
  2012. Procedure ResultadosDeLaFecha (var PuntajeJugador: tPuntajeJugador; JUGADORES: integer; FECHA: integer);
  2013. var
  2014.     i: integer;
  2015.     Seguir: char;
  2016. begin
  2017.     i := 1;
  2018.     Seguir := 'S';
  2019.     writeln('Jugador - Puntaje');
  2020.     while (i < JUGADORES) and (upcase(Seguir)='s') do
  2021.     begin
  2022.         write('Jugador ', i , ' - ', PuntajeJugador[i, FECHA]);
  2023.         inc(i);
  2024.         readln(Seguir);
  2025.     end;
  2026. end;
  2027.  
  2028. {**************************************************************************************************************}
  2029. {Muestra la Tabla de Posiciones hasta la fecha actual. Ricardo Ariel Sosa Aquino}
  2030. Procedure ImprimirTablaDePosiciones (var vUsuarios: tUsuarios; USUARIOS: byte; FECHAS: byte);
  2031. begin
  2032.     OrdernarUsuariosxPuntaje (vUsuarios, USUARIOS, FECHAS);
  2033.     MostrarTabladePosiciones (vUsuarios, USUARIOS, FECHAS);
  2034. end;
  2035.  
  2036. {**************************************************************************************************************}
  2037. {Imprime una Lista de los Mejores Jugadores. Juan Manuel Castro Pippo}
  2038. Procedure ImprimirMejoresJugadores(var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vListaJugadores: tListaJugadores);
  2039. var
  2040.     i,j,k, AuxID: integer;
  2041.     Jugador: tJugador;
  2042.     Top, ElementosxPagina, Tecla: byte;
  2043. begin
  2044.     InicializarBytes(Tecla);
  2045.     i := 1;
  2046.     k := 1;
  2047.     Top := 25;
  2048.     ElementosxPagina := 15;
  2049.     while (Tecla <> LETRA_S) do
  2050.         begin
  2051.         clrscr();
  2052.         writeln('25 MEJORES JUGADORES EN LO QUE VA DEL TORNEO');
  2053.         writeln('');
  2054.         writeln('POS':5,'APELLIDO Y NOMBRE':29,'POSICION':16,'EQUIPO':15,'ACUMULADO':15);
  2055.         writeln(SEPARADORH);
  2056.         j := 1;
  2057.         if (i > JUGADORES) then
  2058.             i := 1;
  2059.         if (k > Top) then
  2060.         begin
  2061.             k := 1;
  2062.             i := 1;
  2063.         end;
  2064.         while (j <= ElementosxPagina) and (k <= Top) do
  2065.         begin
  2066.             AuxID := vPuntajeTotalJugadores[i].ID;
  2067.             Jugador := vListaJugadores[AuxID];
  2068.             writeln(k:5,Jugador.Nombre:29,tPosicionAString(Jugador.Posicion):16,Jugador.Equipo_Real:15,vPuntajeTotalJugadores[i].PuntajeTotal:15);
  2069.             inc(k);
  2070.             inc(j);
  2071.             inc(i);
  2072.         end;
  2073.         writeln(SEPARADORH);
  2074.         write('Volver al menu anterior?: ');
  2075.         Tecla := ord(upcase(readkey));
  2076.         end;
  2077. end;
  2078.  
  2079. {**************************************************************************************************************}
  2080. {Imprime Jugadores segun la posicion. Juan Manuel Castro Pippo}
  2081. Procedure JugadorFavoritoPosicion(var vListaJugadores: tListaJugadores; var vElegidoJugadores: tElegidoJugadores; CantUsuarios: byte; Posicion: tPosicion; Min: byte; Max: byte);
  2082. var
  2083.     i,j, Aux:integer;
  2084. begin
  2085.     i := 1;
  2086.     j := 1;
  2087.     while (j <= Max) do
  2088.     begin
  2089.         Aux := vElegidoJugadores[i].ID;
  2090.         if (vListaJugadores[Aux].Posicion = Posicion) then
  2091.         begin
  2092.             if (j <= Max) and (j >= Min) then
  2093.             writeln(vListaJugadores[Aux].Nombre:30,tPosicionAString(vListaJugadores[Aux].Posicion):25,vElegidoJugadores[i].Valor:25);
  2094.             inc(j);
  2095.         end;
  2096.         inc(i);
  2097.     end;
  2098. end;
  2099.  
  2100. {**************************************************************************************************************}
  2101. {Devuelve la ID de la Tactica Mas Usada. Juan Manuel Castro Pippo}
  2102. Function ObtenerTacticas(var vTacticas:tTacticas; CantUsuarios: byte): byte;
  2103. begin
  2104.     ObtenerTacticas := vTacticas[1].ID;
  2105. end;
  2106.  
  2107. {**************************************************************************************************************}
  2108. {Imprime el EquipoFavorito. Juan Manuel Castro Pippo}
  2109. Procedure EquipoFavorito(var vListaJugadores: tListaJugadores; var vElegidoJugadores: tElegidoJugadores; var vTacticas: tTacticas; CantUsuarios: byte);
  2110. var
  2111.     Arq, Def, Med, Del, Tecla: byte;
  2112. begin
  2113.     Tecla:=20;
  2114.     clrscr();
  2115.     writeln('EQUIPO FAVORITO');
  2116.     writeln();
  2117.     Arq := 1;
  2118.     case (ObtenerTacticas(vTacticas, CantUsuarios)) of
  2119.         1:
  2120.         begin
  2121.             Def := 3;
  2122.             Med := 4;
  2123.             Del := 3;
  2124.         end;
  2125.         2:
  2126.         begin
  2127.             Def := 3;
  2128.             Med := 5;
  2129.             Del := 2;
  2130.         end;
  2131.         3:
  2132.         begin
  2133.             Def := 4;
  2134.             Med := 3;
  2135.             Del := 3;
  2136.         end;
  2137.         4:
  2138.         begin
  2139.             Def := 4;
  2140.             Med := 4;
  2141.             Del := 2;
  2142.         end;
  2143.         5:
  2144.         begin
  2145.             Def := 4;
  2146.             Med := 5;
  2147.             Del := 1;
  2148.         end;
  2149.     end;
  2150.     writeln('JUGADORES DEL EQUIPO':30,'POSICION':25,'VECES ELEGIDO':25);
  2151.     writeln(SEPARADORH);
  2152.     JugadorFavoritoPosicion(vListaJugadores, vElegidoJugadores, CantUsuarios, ARQUERO, 1, Arq);
  2153.     JugadorFavoritoPosicion(vListaJugadores, vElegidoJugadores, CantUsuarios, DEFENSOR, 1, Def);
  2154.     JugadorFavoritoPosicion(vListaJugadores, vElegidoJugadores, CantUsuarios, MEDIOCAMPISTA, 1, Med);
  2155.     JugadorFavoritoPosicion(vListaJugadores, vElegidoJugadores, CantUsuarios, DELANTERO, 1, Del);
  2156.     JugadorFavoritoPosicion(vListaJugadores, vElegidoJugadores, CantUsuarios, ARQUERO, Arq+1, Arq+1);
  2157.     JugadorFavoritoPosicion(vListaJugadores, vElegidoJugadores, CantUsuarios, DEFENSOR, Def+1, Def+1);
  2158.     JugadorFavoritoPosicion(vListaJugadores, vElegidoJugadores, CantUsuarios, MEDIOCAMPISTA, Med+1, Med+1);
  2159.     JugadorFavoritoPosicion(vListaJugadores, vElegidoJugadores, CantUsuarios, DELANTERO, Del+1, Del+1);
  2160.     writeln(SEPARADORH);
  2161.     write('Volver al menu anterior?: ');
  2162.     while (Tecla<>LETRA_S) do
  2163.     Tecla := ord(upcase(readkey));
  2164. end;
  2165.  
  2166. {**************************************************************************************************************}
  2167. {Menu de Reportes. Ronnie del Pino}
  2168. Procedure MenuCorrerReportes(var vUsuarios: tUsuarios; var TipoUsuario: byte; FechaActual: byte; CantUsuarios: byte; var vPuntajeJugador: tPuntajeJugador;
  2169. var vListaApuestas: tListaApuestas; var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vElegidoJugadores: tElegidoJugadores; var vTacticas: tTacticas;
  2170. var vListaJugadores: tListaJugadores; UsuarioActual: byte; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  2171.  
  2172. var
  2173.     Opcion:byte;
  2174. begin
  2175.     if (FechaActual <> 0) then
  2176.     begin
  2177.         ImprimirTitulo(FechaActual);
  2178.                   writeln('1 - Tabla de posiciones');
  2179.                   writeln('2 - Resultados por fecha');
  2180.                   writeln('3 - Resultado de apuestas');
  2181.                   writeln('4 - Mejores jugadores');
  2182.                   writeln('5 - Mejores jugadores por puesto');
  2183.                   writeln('6 - Equipo favorito');
  2184.                   writeln('0 - Volver');
  2185.                   write('Opcion: ');
  2186.                   Opcion := ValidarOpciones();
  2187.         case Opcion of
  2188.                 1: ImprimirTablaDePosiciones (vUsuarios, CantUsuarios, FechaActual);
  2189.                 2: ResultadosDeLaFecha (vPuntajeJugador, JUGADORES, FechaActual);
  2190.                 3: MostrasResultadosDeApuestas(vListaApuestas, vUsuarios, CantUsuarios, FechaActual);
  2191.                 4: ImprimirMejoresJugadores(vPuntajeTotalJugadores, vListaJugadores);
  2192.                 5: ReportesMenuResultadosPorPuesto(vUsuarios, TipoUsuario, vPuntajeTotalJugadores, vListaJugadores, FechaActual, CantUsuarios, vPuntajeJugador, vListaApuestas, vElegidoJugadores,
  2193.                    vTacticas, UsuarioActual, Equipo, Condicion, RegEquipo);
  2194.                 6: EquipoFavorito(vListaJugadores, vElegidoJugadores, vTacticas, CantUsuarios);
  2195.                 0: begin
  2196.                     if (TipoUsuario = 0) then
  2197.                         MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2198.                         UsuarioActual, Equipo, Condicion, RegEquipo)
  2199.                     else
  2200.                         MenuUsuario(TipoUsuario, vUsuarios, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2201.                         UsuarioActual, Equipo, Condicion, RegEquipo);
  2202.                     end;
  2203.                  else
  2204.                     MenuCorrerReportes(vUsuarios, TipoUsuario, FechaActual, CantUsuarios, vPuntajeJugador, vListaApuestas, vPuntajeTotalJugadores, vElegidoJugadores, vTacticas, vListaJugadores,
  2205.                     UsuarioActual, Equipo, Condicion, RegEquipo);
  2206.         end;
  2207.     end
  2208.     else
  2209.     begin
  2210.         writeln;
  2211.         write('El Torneo no ha empezado. No puede ver reportes!');
  2212.         delay(TIEMPO_SALIDA);
  2213.         if (TipoUsuario = 0) then
  2214.             MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2215.             UsuarioActual, Equipo, Condicion, RegEquipo)
  2216.         else
  2217.             MenuUsuario(TipoUsuario, vUsuarios, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores, UsuarioActual,
  2218.             Equipo, Condicion, RegEquipo);
  2219.     end;
  2220. end;
  2221.  
  2222. {**************************************************************************************************************}
  2223. {Pide datos de premios para apuestas y los guarda. Ronnie Del Pino}
  2224. Procedure ConfigurarApuestas(var vUsuarios: tUsuarios; var vListaApuestas: tListaApuestas; FechaActual: byte; TipoUsuario: byte; var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte;
  2225. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores: tElegidoJugadores; UsuarioActual: byte; var vListaJugadores: tListaJugadores;
  2226. var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  2227.  
  2228. var
  2229.     j, Cant: byte;
  2230. begin
  2231.     if (FechaActual = 0) then
  2232.     begin
  2233.         Cant := 3;
  2234.         ImprimirTitulo(FechaActual);
  2235.         writeln('Premios(',SIMBOLO_MONEDA, '):');
  2236.         writeln;
  2237.         write('Fecha Ganada: ');
  2238.         vListaApuestas[1]:=ValidarNumerosCifras(Cant);writeln;
  2239.         write('Campeon del  Torneo: ');
  2240.         vListaApuestas[2]:=ValidarNumerosCifras(Cant);writeln;
  2241.         write('Subcampeon del Torneo: ');
  2242.         vListaApuestas[3]:=ValidarNumerosCifras(Cant);writeln;
  2243.         write('Tercer Puesto: ');
  2244.         vListaApuestas[4]:=ValidarNumerosCifras(Cant);writeln;
  2245.         writeln;
  2246.         writeln('La siguiente configuracion sera guardada:');
  2247.         writeln('Ganador de La fecha: ',SIMBOLO_MONEDA ,vListaApuestas[1]);
  2248.         writeln('Campeon: ', SIMBOLO_MONEDA,vListaApuestas[2]);
  2249.         writeln('SubCampeon: ',SIMBOLO_MONEDA ,vListaApuestas[3]);
  2250.         writeln('Tercer Puesto: ',SIMBOLO_MONEDA ,vListaApuestas[4]);
  2251.         writeln;
  2252.         writeln('Presione una tecla para continuar...');
  2253.         readkey;
  2254.         For j:=1 to MAX_USUARIOS do
  2255.                 begin
  2256.                 vUsuarios[j].CantidadApuesta:=((FECHAS_TORNEO*vListaApuestas[1]) + vListaApuestas[2] + vListaApuestas[3] + vListaApuestas[4]) / (CantidadParticipantes(vUsuarios));
  2257.                 InicializarReals (vUsuarios[j].GananciaPorFechas);
  2258.                 InicializarReals (vUsuarios[j].GananciaPorTorneo);
  2259.                 end;
  2260.         MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2261.         UsuarioActual, Equipo, Condicion, RegEquipo)
  2262.     end
  2263.     else
  2264.     begin
  2265.         writeln;
  2266.         write('El Torneo ha empezado. No puede configurar apuestas!');
  2267.         delay(TIEMPO_SALIDA);
  2268.         MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2269.         UsuarioActual, Equipo, Condicion, RegEquipo)
  2270.     end;
  2271. end;
  2272.  
  2273. {**************************************************************************************************************}
  2274. {Verifica que todos los equipos esten completos. Emanuel Kotzayan}
  2275. Function ChequearEquiposCompletos(var vUsuarios: tUsuarios): boolean;
  2276. var
  2277.     i, j: integer;
  2278.     EquiposCompletos: boolean;
  2279. begin
  2280.     i := 1;
  2281.     EquiposCompletos := true;
  2282.     while (i <= CantidadParticipantes(vUsuarios)) and (EquiposCompletos) do
  2283.     begin
  2284.         j := 1;
  2285.         while (j <= JUGADORESXEQUIPO) and (EquiposCompletos) do
  2286.         begin
  2287.             if vUsuarios[i].Equipo.Jugador[j].ID = 0 then
  2288.                 EquiposCompletos := false;
  2289.             inc(j);
  2290.         end;
  2291.         inc(i);
  2292.     end;
  2293.     ChequearEquiposCompletos := EquiposCompletos;
  2294. end;
  2295.  
  2296. {**************************************************************************************************************}
  2297. {Aumenta la fecha actual. Emanuel Kotzayan}
  2298. Procedure AumentarFecha (var FechaActual: byte);
  2299. begin
  2300.     inc(FechaActual);  
  2301. end;
  2302.  
  2303. {**************************************************************************************************************}
  2304. {Calculo del puntaje de cada jugador en la fecha actual. Emanuel Kotzayan}
  2305. Procedure CalcularPuntajeJugador (var vPuntajeJugador: tPuntajeJugador; FechaActual: byte);
  2306. var
  2307.     i: integer;
  2308. begin
  2309.     for i:=1 to JUGADORES do
  2310.         begin  
  2311.         if (jugoPartido(i) = true) then
  2312.             vPuntajeJugador[i, FechaActual] := ObtenerPuntajeJugador(i)
  2313.         else
  2314.             InicializarIntegers(vPuntajeJugador[i, FechaActual]);
  2315.         end;
  2316. end;
  2317.  
  2318. {**************************************************************************************************************}
  2319. {Calculo del puntaje total de cada jugador. Juan Manuel Castro Pippo}
  2320. Procedure CalcularPuntajeTotalJugador (var vPuntajeJugador: tPuntajeJugador; var vPuntajeTotalJugadores: tPuntajeTotalJugadores; FechaActual: byte);
  2321. var
  2322.     i, j: integer;
  2323. begin
  2324.     for i:=1 to JUGADORES do
  2325.     begin  
  2326.         j := 1;
  2327.         vPuntajeTotalJugadores[i].ID := i;
  2328.         InicializarIntegers(vPuntajeTotalJugadores[i].PuntajeTotal);
  2329.         while (j <= FechaActual) do
  2330.             inc(vPuntajeTotalJugadores[i].PuntajeTotal, vPuntajeJugador[i,j]);
  2331.         end;
  2332. end;
  2333.  
  2334. {**************************************************************************************************************}
  2335. {Calculo del puntaje de cada equipo en la fecha actual. Emanuel Kotzayan}
  2336. Procedure CalcularPuntajeEquipo (var vUsuarios: tUsuarios; var vPuntajeJugador: tPuntajeJugador; FechaActual: byte);
  2337. var    
  2338.     i, j, Acumulador: integer;
  2339. begin
  2340.     for i:=1 to MAX_USUARIOS do
  2341.         begin
  2342.             InicializarIntegers(Acumulador);
  2343.             for j:=1 to JUGADORESXEQUIPO  do
  2344.                 begin
  2345.                     if (vUsuarios[i].Equipo.Jugador[j].Condicion = TITULAR) then
  2346.                     Acumulador := Acumulador + vPuntajeJugador[vUsuarios[i].Equipo.Jugador[j].ID, FechaActual];
  2347.                 end;
  2348.         vUsuarios[i].Equipo.Puntaje[FechaActual] := Acumulador;
  2349.         end;
  2350. end;
  2351.  
  2352. {**************************************************************************************************************}
  2353. {Ordena la Lista de vPuntajeTotalJugadores. Juan Manuel Castro Pippo}
  2354. Procedure OrdenarPuntajeTotalJugadores(var vPuntajeTotalJugadores: tPuntajeTotalJugadores);
  2355. var
  2356.     Aux: tPuntajeTotalJugador;
  2357.     i, j: integer;
  2358. begin
  2359.     for i:=1 to JUGADORES-1 do
  2360.         for j:=i+1 to JUGADORES do
  2361.             if (vPuntajeTotalJugadores[i].PuntajeTotal < vPuntajeTotalJugadores[j].PuntajeTotal) then
  2362.             begin
  2363.                 Aux := vPuntajeTotalJugadores[i];
  2364.                 vPuntajeTotalJugadores[i] := vPuntajeTotalJugadores[j];
  2365.                 vPuntajeTotalJugadores[j] := Aux;
  2366.             end;
  2367. end;
  2368.  
  2369. {**************************************************************************************************************}
  2370. {Suma las tacticas de cada equipo. Juan Manuel Castro Pippo}
  2371. Procedure CargarTacticas (var vUsuarios: tUsuarios; var vTacticas: tTacticas; CantUsuarios: byte; FechaActual: byte);
  2372. var
  2373.     i: byte;
  2374. begin
  2375.     for i:=1 to CantUsuarios do
  2376.         inc(vTacticas[vUsuarios[i].Equipo.Tactica[FechaActual]].Cantidad);
  2377.     for i:=1 to TACTICAS do
  2378.         writeln('ID ',vTacticas[i].ID,' ',vTacticas[i].Cantidad);
  2379. end;
  2380.  
  2381. {**************************************************************************************************************}
  2382. {Ordena la Lista de Tacticas. Juan Manuel Castro Pippo}
  2383. Procedure OrdenarTacticas(var vTacticas: tTacticas; var CantUsuarios: byte);
  2384. var
  2385.     Aux: tTactica;
  2386.     i,j: integer;
  2387. begin
  2388.     for i:=1 to CantUsuarios-1 do
  2389.         for j:=i+1 to CantUsuarios do
  2390.             if (vTacticas[i].Cantidad < vTacticas[j].Cantidad) then
  2391.             begin
  2392.                 Aux := vTacticas[i];
  2393.                 vTacticas[i] := vTacticas[j];
  2394.                 vTacticas[j] := Aux;
  2395.             end;
  2396. end;
  2397.  
  2398. {**************************************************************************************************************}
  2399. {Obtiene la cantidad de veces que fueron elegidos los jugadores. Emanuel Kotzayan}
  2400. Procedure ObtenerJugadoresElegidos(var vElegidoJugadores: tElegidoJugadores; var vUsuarios: tUsuarios);
  2401. var
  2402.     i,j,k: integer;
  2403. begin
  2404.     for i := 1 to JUGADORES do
  2405.         begin
  2406.             vElegidoJugadores[i].ID := i;
  2407.             InicializarBytes(vElegidoJugadores[i].Valor);
  2408.         end;
  2409.     for j := 1 to MAX_USUARIOS do
  2410.         begin
  2411.             for k := 1 to JUGADORESXEQUIPO do
  2412.             inc(vElegidoJugadores[vUsuarios[j].Equipo.Jugador[k].ID].Valor);
  2413.         end;
  2414. end;
  2415.  
  2416. {**************************************************************************************************************}
  2417. {Ordena la Lista de JugadoresElegidos. Juan Manuel Castro Pippo}
  2418. Procedure OrdenarJugadoresElegidos(var vElegidoJugadores: tElegidoJugadores; CantUsuarios: byte);
  2419. var
  2420.     Aux: tElegidoJugador;
  2421.     i,j: integer;
  2422. begin
  2423.     for i:=1 to JUGADORES-1 do
  2424.         for j:=i+1 to JUGADORES do
  2425.             if (vElegidoJugadores[i].Valor < vElegidoJugadores[j].Valor) then
  2426.             begin
  2427.                 Aux := vElegidoJugadores[i];
  2428.                 vElegidoJugadores[i] := vElegidoJugadores[j];
  2429.                 vElegidoJugadores[j] := Aux;
  2430.             end;
  2431. end;
  2432.  
  2433. {**************************************************************************************************************}
  2434. {Corre los procedimientos que ocurren entre las fechas. Emanuel Kotzayan}
  2435. Procedure PasarFecha (var vUsuarios: tUsuarios; var vPuntajeJugador: tPuntajeJugador; FechaActual: byte; var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas;
  2436. CantUsuarios: byte; var vElegidoJugadores: tElegidoJugadores; var vListaJugadores: tListaJugadores; UsuarioActual: byte; var Equipo: tVEquipo; var Condicion: tVCondicion;
  2437. TipoUsuario: byte; var vListaApuestas: tListaApuestas; var RegEquipo: TRegEQUIPO);
  2438.  
  2439. begin
  2440.     AumentarFecha (FechaActual);
  2441.     CalcularPuntajeJugador (vPuntajeJugador, FechaActual);
  2442.     CalcularPuntajeEquipo (vUsuarios, vPuntajeJugador, FechaActual);
  2443.     CalcularPuntajeTotalJugador (vPuntajeJugador, vPuntajeTotalJugadores, FechaActual);
  2444.     OrdenarPuntajeTotalJugadores(vPuntajeTotalJugadores);
  2445.     CargarTacticas(vUsuarios, vTacticas, CantUsuarios, FechaActual);
  2446.     OrdenarTacticas(vTacticas,CantUsuarios);
  2447.     ObtenerJugadoresElegidos(vElegidoJugadores, vUsuarios);
  2448.     OrdenarJugadoresElegidos(vElegidoJugadores, CantUsuarios);
  2449.     MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2450.     UsuarioActual, Equipo, Condicion, RegEquipo);
  2451. end;
  2452.  
  2453. {**************************************************************************************************************}
  2454. {Inicia el Torneo. Ronnie del Pino}
  2455. Procedure IniciarTorneo(var TipoUsuario: byte; var FechaActual: byte; var vUsuarios: tUsuarios; var vPuntajeJugador: tPuntajeJugador; var CantUsuarios: byte;
  2456. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores: tElegidoJugadores; var vListaApuestas: tListaApuestas; var UsuarioActual: byte;
  2457. var vListaJugadores: tListaJugadores; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  2458.  
  2459. begin
  2460.     if (FechaActual = 0) and (ChequearEquiposCompletos(vUsuarios)) then
  2461.         begin
  2462.             PasarFecha (vUsuarios, vPuntajeJugador, FechaActual, vPuntajeTotalJugadores, vTacticas, CantUsuarios, vElegidoJugadores, vListaJugadores, UsuarioActual, Equipo, Condicion,
  2463.             TipoUsuario, vListaApuestas, RegEquipo);
  2464.             CantUsuarios := CantidadParticipantes(vUsuarios);
  2465.         end
  2466.     else
  2467.         begin
  2468.             if (FechaActual <> 0) then
  2469.                 begin
  2470.                     writeln();
  2471.                     write('Torneo en curso!');
  2472.                     delay(TIEMPO_SALIDA);
  2473.                     MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2474.                     UsuarioActual, Equipo, Condicion, RegEquipo);
  2475.                 end
  2476.             else
  2477.                 begin
  2478.                     writeln();
  2479.                     write('Los usuarios no completearon sus equipos');
  2480.                     delay(TIEMPO_SALIDA);
  2481.                     MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2482.                     UsuarioActual, Equipo, Condicion, RegEquipo);
  2483.                 end;
  2484.         end;
  2485. end;
  2486.  
  2487. {**************************************************************************************************************}
  2488. {Carga calificaciones. Ronnie del Pino}
  2489. Procedure CargarCalificaciones(var TipoUsuario: byte; var FechaActual: byte; var vUsuarios: tUsuarios; var vPuntajeJugador: tPuntajeJugador;
  2490. var CantUsuarios: byte; var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores: tElegidoJugadores; var vListaApuestas: tListaApuestas;
  2491. UsuarioActual: byte; var vListaJugadores: tListaJugadores; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  2492. begin
  2493.     if (FechaActual > 0) then
  2494.         PasarFecha (vUsuarios, vPuntajeJugador, FechaActual, vPuntajeTotalJugadores, vTacticas, CantUsuarios, vElegidoJugadores, vListaJugadores, UsuarioActual, Equipo, Condicion,
  2495.         TipoUsuario, vListaApuestas, RegEquipo)
  2496.     else
  2497.         begin
  2498.         writeln;
  2499.         write('Torneo no iniciado. No puede cargar calificaciones!');
  2500.         delay(TIEMPO_SALIDA);
  2501.         MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2502.         UsuarioActual, Equipo, Condicion, RegEquipo);
  2503.         end;
  2504. end;
  2505.  
  2506. {**************************************************************************************************************}
  2507. {Muestra Listado de Opciones pasa usuarios comunes. Ronnie Del Pino}
  2508. Procedure MenuUsuario(var TipoUsuario: byte; var vUsuarios: tUsuarios; var FechaActual: byte; var vListaApuestas: tListaApuestas; var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte;
  2509. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores:tElegidoJugadores; var vListaJugadores: tListaJugadores; UsuarioActual: byte;
  2510. var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  2511.  
  2512. var
  2513.     Opcion:byte;
  2514. begin
  2515.     TipoUsuario := 1;
  2516.     ImprimirTitulo(FechaActual);
  2517.     writeln('BIENVENIDO ', upcase(vUsuarios[UsuarioActual].Nombre));
  2518.     writeln(SEPARADORH);
  2519.     writeln('1 - Crear equipo');
  2520.     writeln('2 - Realizar cambios');
  2521.     writeln('3 - Correr reportes');
  2522.     writeln('0 - Cerrar sesion');
  2523.     write('Opcion: ');
  2524.     Opcion := ValidarOpciones();
  2525.           case Opcion of
  2526.                 1: CrearEquipo(TipoUsuario, FechaActual, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2527.                    UsuarioActual, Equipo, Condicion, RegEquipo);
  2528.                 2: RealizarCambios(TipoUsuario, FechaActual, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2529.                    UsuarioActual, Equipo, Condicion, RegEquipo);
  2530.                 3: begin
  2531.                     TipoUsuario := 1;
  2532.                     MenuCorrerReportes(vUsuarios, TipoUsuario, FechaActual, CantUsuarios, vPuntajeJugador, vListaApuestas, vPuntajeTotalJugadores, vElegidoJugadores, vTacticas,
  2533.                     vListaJugadores, UsuarioActual, Equipo, Condicion, RegEquipo);
  2534.                    end;
  2535.                 0: MenuIniciarSesion(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores,
  2536.                    vListaJugadores, Equipo, Condicion, RegEquipo);
  2537.            else
  2538.                    MenuUsuario(TipoUsuario, vUsuarios, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2539.                    UsuarioActual, Equipo, Condicion, RegEquipo);
  2540.            end
  2541. end;
  2542.  
  2543. {**************************************************************************************************************}
  2544. {Muestra Menu de Opciones para el Administrador. Ronnie Del Pino}
  2545. Procedure MenuAdministrador(var FechaActual: byte; var TipoUsuario: byte; var vUsuarios: tUsuarios; var vListaApuestas: tListaApuestas; var vPuntajeJugador: tPuntajeJugador;
  2546. CantUsuarios: byte; vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores:tElegidoJugadores; var vListaJugadores: tListaJugadores;
  2547. UsuarioActual:byte; var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  2548.  
  2549. var
  2550.     Opcion:byte;
  2551. begin
  2552.     TipoUsuario := 0;
  2553.     ImprimirTitulo(FechaActual);
  2554.     writeln('BIENVENIDO ', upcase(vUsuarios[UsuarioActual].Nombre));
  2555.     writeln(SEPARADORH);
  2556.     writeln('1 - Crear equipo');
  2557.     writeln('2 - Realizar cambios');
  2558.     writeln('3 - Correr reportes');
  2559.     writeln('4 - Configurar apuestas');
  2560.     writeln('5 - Iniciar torneo');
  2561.     writeln('6 - Cargar Calificaciones');
  2562.     writeln('0 - Cerrar sesion');
  2563.     write('Opcion: ');
  2564.     Opcion := ValidarOpciones();
  2565.     case Opcion of
  2566.         1: CrearEquipo(TipoUsuario, FechaActual, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores, UsuarioActual,
  2567.            Equipo, Condicion, RegEquipo);  
  2568.         2: RealizarCambios(TipoUsuario, FechaActual, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2569.            UsuarioActual, Equipo, Condicion, RegEquipo);
  2570.         3: MenuCorrerReportes(vUsuarios, TipoUsuario, FechaActual, CantUsuarios, vPuntajeJugador, vListaApuestas, vPuntajeTotalJugadores, vElegidoJugadores, vTacticas, vListaJugadores,
  2571.            UsuarioActual, Equipo, Condicion, RegEquipo);
  2572.         4: ConfigurarApuestas(vUsuarios, vListaApuestas, FechaActual, TipoUsuario, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, UsuarioActual,
  2573.            vListaJugadores, Equipo, Condicion, RegEquipo);
  2574.         5: IniciarTorneo(TipoUsuario, FechaActual, vUsuarios, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaApuestas, UsuarioActual,
  2575.            vListaJugadores, Equipo, Condicion, RegEquipo);
  2576.         6: CargarCalificaciones(TipoUsuario, FechaActual, vUsuarios, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaApuestas, UsuarioActual,
  2577.            vListaJugadores, Equipo, Condicion, RegEquipo);
  2578.         0: MenuIniciarSesion(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores,
  2579.            vListaJugadores, Equipo, Condicion, RegEquipo)
  2580.     else
  2581.         MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2582.         UsuarioActual, Equipo, Condicion, RegEquipo);
  2583.     end;
  2584. end;
  2585.  
  2586. {**************************************************************************************************************}
  2587. {Pide y guarda datos de usuarios el el registro. Ronnie Del Pino}
  2588. Procedure CargaUsuarios(var vUsuarios: tUsuarios; var TipoUsuario: byte; var UsuarioActual: byte; FechaActual: byte; var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte;
  2589. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores: tElegidoJugadores; var vListaApuestas: tListaApuestas; var vListaJugadores: tListaJugadores;
  2590. var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  2591.  
  2592. var
  2593.     Nombre, Apellido, Club, Usuario, Contrasena, pwConfirmacion: string;
  2594.     i: byte;
  2595. begin
  2596.     if (FechaActual = 0) and (CantidadParticipantes(vUsuarios) < MAX_USUARIOS) then
  2597.         begin
  2598.         InicializarStrings(Contrasena);
  2599.         InicializarStrings(Usuario);
  2600.         i := Posicion(vUsuarios);
  2601.         OrdenarVector(vUsuarios, 'Des');
  2602.         ImprimirTitulo(FechaActual);
  2603.         writeln('INGRESE SUS DATOS');
  2604.         writeln(SEPARADORH);
  2605.         write('Nombre: ');
  2606.         readln(Nombre);
  2607.         if (Nombre = '') then
  2608.             begin
  2609.                 writeln('Campo Obligatorio. Reingrese.');
  2610.                 delay(TIEMPO_SALIDA);
  2611.                 CargaUsuarios(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaApuestas,
  2612.                 vListaJugadores, Equipo, Condicion, RegEquipo);
  2613.             end
  2614.         else
  2615.             begin
  2616.             write('Apellido: ');
  2617.             readln(Apellido);
  2618.             write('Club: ');
  2619.             readln(club);
  2620.             write('Usuario: ');
  2621.             readln(Usuario);
  2622.             if (UsuarioDuplicado(Usuario, vUsuarios)) then
  2623.             begin
  2624.                 writeln('Campo Obligatorio o usuario existente!');
  2625.                 delay(TIEMPO_SALIDA);
  2626.                 CargaUsuarios(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaApuestas,
  2627.                 vListaJugadores, Equipo, Condicion, RegEquipo);
  2628.             end
  2629.             else
  2630.             begin
  2631.                 write('Contrasena: ');
  2632.                 Contrasena := OcultarContrasena();
  2633.                 writeln;
  2634.                 write('Reingrese contrasena: ');
  2635.                 pwConfirmacion := OcultarContrasena();
  2636.                 if (Contrasena <> pwConfirmacion) or (Contrasena = '') then
  2637.                     begin
  2638.                     writeln;
  2639.                     writeln('Contrasena incorrecta. Reingrese.');
  2640.                     delay(TIEMPO_SALIDA);
  2641.                     CargaUsuarios(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores,
  2642.                     vListaApuestas, vListaJugadores, Equipo, Condicion, RegEquipo);
  2643.                     end
  2644.                 else
  2645.                     begin
  2646.                     vUsuarios[i].Nombre := Nombre;
  2647.                     vUsuarios[i].Apellido := Apellido;
  2648.                     vUsuarios[i].Club := Club;
  2649.                     vUsuarios[i].Usuario := Usuario;
  2650.                     vUsuarios[i].Contrasena := Contrasena;
  2651.                     vUsuarios[i].ID := i;
  2652.                     vUsuarios[i].TipoUsuario := TipoUsuario;
  2653.                     UsuarioActual:=ObtenerID(Usuario,vUsuarios); {Devuelve 0 sino existe usuario}
  2654.                     if (TipoUsuario = 0) then
  2655.                         MenuAdministrador(FechaActual, TipoUsuario, vUsuarios, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores,
  2656.                         vListaJugadores, UsuarioActual, Equipo, Condicion, RegEquipo)
  2657.                     else
  2658.                         MenuUsuario(TipoUsuario, vUsuarios, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores,
  2659.                         UsuarioActual, Equipo, Condicion, RegEquipo);
  2660.                     end;
  2661.                 end;
  2662.             end;
  2663.         end
  2664.     else
  2665.         begin
  2666.         writeln;
  2667.         writeln('No puede crear usuarios:');
  2668.         writeln('- Se a alcanzado el maximo (',MAX_USUARIOS,') de usuarios registrados!');
  2669.         write('- El Torneo a Iniciado!');
  2670.         delay(TIEMPO_SALIDA);
  2671.         MenuIniciarSesion(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores,
  2672.         vListaJugadores, Equipo, Condicion, RegEquipo);
  2673.         end;
  2674. end;
  2675.  
  2676. {**************************************************************************************************************}
  2677. Procedure PedidoAndres(var vUsuarios: tUsuarios; TipoUsuario: byte);
  2678. begin
  2679.     {Usuario 1}
  2680.     vUsuarios[1].TipoUsuario := 0;
  2681.     vUsuarios[1].ID := Posicion(vUsuarios);
  2682.     vUsuarios[1].Nombre := 'Admin';
  2683.     vUsuarios[1].Apellido := 'Admin';
  2684.     vUsuarios[1].Club := 'Boca Juniors';
  2685.     vUsuarios[1].Usuario := 'admin';
  2686.     vUsuarios[1].Contrasena := 'admin';
  2687.     {ARQUEROS}
  2688.     vUsuarios[1].Equipo.Jugador[1].ID:= 1;
  2689.     vUsuarios[1].Equipo.Jugador[1].Condicion:= TITULAR;
  2690.     vUsuarios[1].Equipo.Jugador[2].ID:= 32;
  2691.     vUsuarios[1].Equipo.Jugador[2].Condicion:= SUPLENTE;
  2692.     {DEFENSORES}
  2693.     vUsuarios[1].Equipo.Jugador[3].ID:= 4;
  2694.     vUsuarios[1].Equipo.Jugador[3].Condicion:= TITULAR;
  2695.     vUsuarios[1].Equipo.Jugador[4].ID:= 37;
  2696.     vUsuarios[1].Equipo.Jugador[4].Condicion:= TITULAR;
  2697.     vUsuarios[1].Equipo.Jugador[5].ID:= 36;
  2698.     vUsuarios[1].Equipo.Jugador[5].Condicion:= TITULAR;
  2699.     vUsuarios[1].Equipo.Jugador[6].ID:= 70;
  2700.     vUsuarios[1].Equipo.Jugador[6].Condicion:= SUPLENTE;
  2701.     {MEDIOCAMPISTAS}
  2702.     vUsuarios[1].Equipo.Jugador[7].ID:= 87;
  2703.     vUsuarios[1].Equipo.Jugador[7].Condicion:= TITULAR;
  2704.     vUsuarios[1].Equipo.Jugador[8].ID:= 116;
  2705.     vUsuarios[1].Equipo.Jugador[8].Condicion:= TITULAR;
  2706.     vUsuarios[1].Equipo.Jugador[9].ID:= 114;
  2707.     vUsuarios[1].Equipo.Jugador[9].Condicion:= TITULAR;
  2708.     vUsuarios[1].Equipo.Jugador[10].ID:= 144;
  2709.     vUsuarios[1].Equipo.Jugador[10].Condicion:= TITULAR;
  2710.     vUsuarios[1].Equipo.Jugador[11].ID:= 143;
  2711.     vUsuarios[1].Equipo.Jugador[11].Condicion:= SUPLENTE;
  2712.     {DELANTEROS}
  2713.     vUsuarios[1].Equipo.Jugador[12].ID:= 250;
  2714.     vUsuarios[1].Equipo.Jugador[12].Condicion:= TITULAR;
  2715.     vUsuarios[1].Equipo.Jugador[13].ID:= 351;
  2716.     vUsuarios[1].Equipo.Jugador[13].Condicion:= TITULAR;
  2717.     vUsuarios[1].Equipo.Jugador[14].ID:= 379;
  2718.     vUsuarios[1].Equipo.Jugador[14].Condicion:= TITULAR;
  2719.     vUsuarios[1].Equipo.Jugador[15].ID:= 380;
  2720.     vUsuarios[1].Equipo.Jugador[15].Condicion:= SUPLENTE;  
  2721.    
  2722.    
  2723.     {Usuario 2}
  2724.     vUsuarios[2].TipoUsuario := 1;
  2725.     vUsuarios[2].ID := Posicion(vUsuarios);
  2726.     vUsuarios[2].Nombre := 'Carlos';
  2727.     vUsuarios[2].Apellido := 'Totti';
  2728.     vUsuarios[2].Club := 'Boca Juniors';
  2729.     vUsuarios[2].Usuario := 'carlos';
  2730.     vUsuarios[2].Contrasena := 'carlos';
  2731.     {ARQUEROS}
  2732.     vUsuarios[2].Equipo.Jugador[1].ID:= 1;
  2733.     vUsuarios[2].Equipo.Jugador[1].Condicion:= TITULAR;
  2734.     vUsuarios[2].Equipo.Jugador[2].ID:= 32;
  2735.     vUsuarios[2].Equipo.Jugador[2].Condicion:= SUPLENTE;
  2736.     {DEFENSORES}
  2737.     vUsuarios[2].Equipo.Jugador[3].ID:= 4;
  2738.     vUsuarios[2].Equipo.Jugador[3].Condicion:= TITULAR;
  2739.     vUsuarios[2].Equipo.Jugador[4].ID:= 37;
  2740.     vUsuarios[2].Equipo.Jugador[4].Condicion:= TITULAR;
  2741.     vUsuarios[2].Equipo.Jugador[5].ID:= 36;
  2742.     vUsuarios[2].Equipo.Jugador[5].Condicion:= TITULAR;
  2743.     vUsuarios[2].Equipo.Jugador[6].ID:= 70;
  2744.     vUsuarios[2].Equipo.Jugador[6].Condicion:= SUPLENTE;
  2745.     {MEDIOCAMPISTAS}
  2746.     vUsuarios[2].Equipo.Jugador[7].ID:= 87;
  2747.     vUsuarios[2].Equipo.Jugador[7].Condicion:= TITULAR;
  2748.     vUsuarios[2].Equipo.Jugador[8].ID:= 116;
  2749.     vUsuarios[2].Equipo.Jugador[8].Condicion:= TITULAR;
  2750.     vUsuarios[2].Equipo.Jugador[9].ID:= 114;
  2751.     vUsuarios[2].Equipo.Jugador[9].Condicion:= TITULAR;
  2752.     vUsuarios[2].Equipo.Jugador[10].ID:= 144;
  2753.     vUsuarios[2].Equipo.Jugador[10].Condicion:= TITULAR;
  2754.     vUsuarios[2].Equipo.Jugador[11].ID:= 143;
  2755.     vUsuarios[2].Equipo.Jugador[11].Condicion:= SUPLENTE;
  2756.     {DELANTEROS}
  2757.     vUsuarios[2].Equipo.Jugador[12].ID:= 250;
  2758.     vUsuarios[2].Equipo.Jugador[12].Condicion:= TITULAR;
  2759.     vUsuarios[2].Equipo.Jugador[13].ID:= 351;
  2760.     vUsuarios[2].Equipo.Jugador[13].Condicion:= TITULAR;
  2761.     vUsuarios[2].Equipo.Jugador[14].ID:= 379;
  2762.     vUsuarios[2].Equipo.Jugador[14].Condicion:= TITULAR;
  2763.     vUsuarios[2].Equipo.Jugador[15].ID:= 380;
  2764.     vUsuarios[2].Equipo.Jugador[15].Condicion:= SUPLENTE;
  2765.    
  2766.     {Usuario 3}
  2767.     vUsuarios[3].TipoUsuario := 1;
  2768.     vUsuarios[3].ID := Posicion(vUsuarios);
  2769.     vUsuarios[3].Nombre := 'Anibal';
  2770.     vUsuarios[3].Apellido := 'Ibarra';
  2771.     vUsuarios[3].Club := 'Racing Club';
  2772.     vUsuarios[3].Usuario := 'anibal';
  2773.     vUsuarios[3].Contrasena := 'anibal';
  2774.     {ARQUEROS}
  2775.     vUsuarios[3].Equipo.Jugador[1].ID:= 1;
  2776.     vUsuarios[3].Equipo.Jugador[1].Condicion:= TITULAR;
  2777.     vUsuarios[3].Equipo.Jugador[2].ID:= 32;
  2778.     vUsuarios[3].Equipo.Jugador[2].Condicion:= SUPLENTE;
  2779.     {DEFENSORES}
  2780.     vUsuarios[3].Equipo.Jugador[3].ID:= 4;
  2781.     vUsuarios[3].Equipo.Jugador[3].Condicion:= TITULAR;
  2782.     vUsuarios[3].Equipo.Jugador[4].ID:= 37;
  2783.     vUsuarios[3].Equipo.Jugador[4].Condicion:= TITULAR;
  2784.     vUsuarios[3].Equipo.Jugador[5].ID:= 36;
  2785.     vUsuarios[3].Equipo.Jugador[5].Condicion:= TITULAR;
  2786.     vUsuarios[3].Equipo.Jugador[6].ID:= 70;
  2787.     vUsuarios[3].Equipo.Jugador[6].Condicion:= SUPLENTE;
  2788.     {MEDIOCAMPISTAS}
  2789.     vUsuarios[3].Equipo.Jugador[7].ID:= 87;
  2790.     vUsuarios[3].Equipo.Jugador[7].Condicion:= TITULAR;
  2791.     vUsuarios[3].Equipo.Jugador[8].ID:= 116;
  2792.     vUsuarios[3].Equipo.Jugador[8].Condicion:= TITULAR;
  2793.     vUsuarios[3].Equipo.Jugador[9].ID:= 114;
  2794.     vUsuarios[3].Equipo.Jugador[9].Condicion:= TITULAR;
  2795.     vUsuarios[3].Equipo.Jugador[10].ID:= 144;
  2796.     vUsuarios[3].Equipo.Jugador[10].Condicion:= TITULAR;
  2797.     vUsuarios[3].Equipo.Jugador[11].ID:= 143;
  2798.     vUsuarios[3].Equipo.Jugador[11].Condicion:= SUPLENTE;
  2799.     {DELANTEROS}
  2800.     vUsuarios[3].Equipo.Jugador[12].ID:= 250;
  2801.     vUsuarios[3].Equipo.Jugador[12].Condicion:= TITULAR;
  2802.     vUsuarios[3].Equipo.Jugador[13].ID:= 351;
  2803.     vUsuarios[3].Equipo.Jugador[13].Condicion:= TITULAR;
  2804.     vUsuarios[3].Equipo.Jugador[14].ID:= 379;
  2805.     vUsuarios[3].Equipo.Jugador[14].Condicion:= TITULAR;
  2806.     vUsuarios[3].Equipo.Jugador[15].ID:= 380;
  2807.     vUsuarios[3].Equipo.Jugador[15].Condicion:= SUPLENTE;
  2808.    
  2809.     {Usuario 4}
  2810.     vUsuarios[4].TipoUsuario := 1;
  2811.     vUsuarios[4].ID := Posicion(vUsuarios);
  2812.     vUsuarios[4].Nombre := 'Francisco';
  2813.     vUsuarios[4].Apellido := 'Pasman';
  2814.     vUsuarios[4].Club := 'Sacachispas';
  2815.     vUsuarios[4].Usuario := 'francisco';
  2816.     vUsuarios[4].Contrasena := 'francisco';
  2817.     {ARQUEROS}
  2818.     vUsuarios[4].Equipo.Jugador[1].ID:= 1;
  2819.     vUsuarios[4].Equipo.Jugador[1].Condicion:= TITULAR;
  2820.     vUsuarios[4].Equipo.Jugador[2].ID:= 32;
  2821.     vUsuarios[4].Equipo.Jugador[2].Condicion:= SUPLENTE;
  2822.     {DEFENSORES}
  2823.     vUsuarios[4].Equipo.Jugador[3].ID:= 4;
  2824.     vUsuarios[4].Equipo.Jugador[3].Condicion:= TITULAR;
  2825.     vUsuarios[4].Equipo.Jugador[4].ID:= 37;
  2826.     vUsuarios[4].Equipo.Jugador[4].Condicion:= TITULAR;
  2827.     vUsuarios[4].Equipo.Jugador[5].ID:= 36;
  2828.     vUsuarios[4].Equipo.Jugador[5].Condicion:= TITULAR;
  2829.     vUsuarios[4].Equipo.Jugador[6].ID:= 70;
  2830.     vUsuarios[4].Equipo.Jugador[6].Condicion:= SUPLENTE;
  2831.     {MEDIOCAMPISTAS}
  2832.     vUsuarios[4].Equipo.Jugador[7].ID:= 87;
  2833.     vUsuarios[4].Equipo.Jugador[7].Condicion:= TITULAR;
  2834.     vUsuarios[4].Equipo.Jugador[8].ID:= 116;
  2835.     vUsuarios[4].Equipo.Jugador[8].Condicion:= TITULAR;
  2836.     vUsuarios[4].Equipo.Jugador[9].ID:= 114;
  2837.     vUsuarios[4].Equipo.Jugador[9].Condicion:= TITULAR;
  2838.     vUsuarios[4].Equipo.Jugador[10].ID:= 144;
  2839.     vUsuarios[4].Equipo.Jugador[10].Condicion:= TITULAR;
  2840.     vUsuarios[4].Equipo.Jugador[11].ID:= 143;
  2841.     vUsuarios[4].Equipo.Jugador[11].Condicion:= SUPLENTE;
  2842.     {DELANTEROS}
  2843.     vUsuarios[4].Equipo.Jugador[12].ID:= 250;
  2844.     vUsuarios[4].Equipo.Jugador[12].Condicion:= TITULAR;
  2845.     vUsuarios[4].Equipo.Jugador[13].ID:= 351;
  2846.     vUsuarios[4].Equipo.Jugador[13].Condicion:= TITULAR;
  2847.     vUsuarios[4].Equipo.Jugador[14].ID:= 379;
  2848.     vUsuarios[4].Equipo.Jugador[14].Condicion:= TITULAR;
  2849.     vUsuarios[4].Equipo.Jugador[15].ID:= 380;
  2850.     vUsuarios[4].Equipo.Jugador[15].Condicion:= SUPLENTE;
  2851.  
  2852.     {Usuario 5}
  2853.     vUsuarios[5].TipoUsuario := 1;
  2854.     vUsuarios[5].ID := Posicion(vUsuarios);
  2855.     vUsuarios[5].Nombre := 'Raul';
  2856.     vUsuarios[5].Apellido := 'Garcia';
  2857.     vUsuarios[5].Club := 'River Plate';
  2858.     vUsuarios[5].Usuario := 'raul';
  2859.     vUsuarios[5].Contrasena := 'raul';
  2860.     {ARQUEROS}
  2861.     vUsuarios[5].Equipo.Jugador[1].ID:= 1;
  2862.     vUsuarios[5].Equipo.Jugador[1].Condicion:= TITULAR;
  2863.     vUsuarios[5].Equipo.Jugador[2].ID:= 32;
  2864.     vUsuarios[5].Equipo.Jugador[2].Condicion:= SUPLENTE;
  2865.     {DEFENSORES}
  2866.     vUsuarios[5].Equipo.Jugador[3].ID:= 4;
  2867.     vUsuarios[5].Equipo.Jugador[3].Condicion:= TITULAR;
  2868.     vUsuarios[5].Equipo.Jugador[4].ID:= 37;
  2869.     vUsuarios[5].Equipo.Jugador[4].Condicion:= TITULAR;
  2870.     vUsuarios[5].Equipo.Jugador[5].ID:= 36;
  2871.     vUsuarios[5].Equipo.Jugador[5].Condicion:= TITULAR;
  2872.     vUsuarios[5].Equipo.Jugador[6].ID:= 70;
  2873.     vUsuarios[5].Equipo.Jugador[6].Condicion:= SUPLENTE;
  2874.     {MEDIOCAMPISTAS}
  2875.     vUsuarios[5].Equipo.Jugador[7].ID:= 87;
  2876.     vUsuarios[5].Equipo.Jugador[7].Condicion:= TITULAR;
  2877.     vUsuarios[5].Equipo.Jugador[8].ID:= 116;
  2878.     vUsuarios[5].Equipo.Jugador[8].Condicion:= TITULAR;
  2879.     vUsuarios[5].Equipo.Jugador[9].ID:= 114;
  2880.     vUsuarios[5].Equipo.Jugador[9].Condicion:= TITULAR;
  2881.     vUsuarios[5].Equipo.Jugador[10].ID:= 144;
  2882.     vUsuarios[5].Equipo.Jugador[10].Condicion:= TITULAR;
  2883.     vUsuarios[5].Equipo.Jugador[11].ID:= 143;
  2884.     vUsuarios[5].Equipo.Jugador[11].Condicion:= SUPLENTE;
  2885.     {DELANTEROS}
  2886.     vUsuarios[5].Equipo.Jugador[12].ID:= 250;
  2887.     vUsuarios[5].Equipo.Jugador[12].Condicion:= TITULAR;
  2888.     vUsuarios[5].Equipo.Jugador[13].ID:= 351;
  2889.     vUsuarios[5].Equipo.Jugador[13].Condicion:= TITULAR;
  2890.     vUsuarios[5].Equipo.Jugador[14].ID:= 379;
  2891.     vUsuarios[5].Equipo.Jugador[14].Condicion:= TITULAR;
  2892.     vUsuarios[5].Equipo.Jugador[15].ID:= 380;
  2893.     vUsuarios[5].Equipo.Jugador[15].Condicion:= SUPLENTE;
  2894. end;
  2895.  
  2896. {**************************************************************************************************************}
  2897. {Muestra las Primeras 2 Opciones y Inicializa valor de ser necesario. Ronnie Del Pino}
  2898. Procedure MenuPantallaInicial(var TipoUsuario: byte; var vUsuarios: tUsuarios; UsuarioActual: byte; FechaActual: byte; var vPuntajeJugador: tPuntajeJugador; CantUsuarios: byte;
  2899. var vPuntajeTotalJugadores: tPuntajeTotalJugadores; var vTacticas: tTacticas; var vElegidoJugadores: tElegidoJugadores; var vListaApuestas: tListaApuestas; var vListaJugadores: tListaJugadores;
  2900. var Equipo: tVEquipo; var Condicion: tVCondicion; var RegEquipo: TRegEQUIPO);
  2901.  
  2902. var
  2903.     Opcion, i: byte;
  2904. begin
  2905.     TipoUsuario := 0;
  2906.     //PedidoAndres(vUsuarios, TipoUsuario); {TESTEO}
  2907.     For i:=1 to MAX_USUARIOS do
  2908.         vUsuarios[i].TipoUsuario := 1; 
  2909.     ImprimirTitulo(FechaActual);
  2910.     writeln('LOG IN');
  2911.     writeln(SEPARADORH);
  2912.     writeln('1 - Crear Administrador');
  2913.     writeln('0 - Salir del Programa');
  2914.     write('Opcion: ');
  2915.     Opcion := ValidarOpciones();
  2916.     case Opcion of
  2917.         1: CargaUsuarios(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaApuestas, vListaJugadores,
  2918.            Equipo, Condicion, RegEquipo);
  2919.         0: begin
  2920.               writeln;
  2921.               writeln('Fin del programa...');
  2922.            end
  2923.         else
  2924.             MenuPantallaInicial(TipoUsuario, vUsuarios, UsuarioActual, FechaActual, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaApuestas,
  2925.             vListaJugadores, Equipo, Condicion, RegEquipo);
  2926.     end;
  2927. end;
  2928.  
  2929. {**************************************************************************************************************}
  2930. {Intercambia 2 Jugadores de lugar de la ListaJugadores. Juan Manuel Castro Pippo}
  2931. Procedure IntercambiarJugadores(var vListaJugadores: tListaJugadores; k: integer; l: integer);
  2932. var
  2933.     Aux : tJugador;
  2934. begin
  2935.     Aux := vListaJugadores[k];
  2936.     vListaJugadores[k] := vListaJugadores[l];
  2937.     vListaJugadores[l] := Aux;
  2938. end;
  2939.    
  2940. {**************************************************************************************************************}
  2941. {**************************************************************************************************************}
  2942. {**************************************************************************************************************}
  2943.  
  2944. Var
  2945.     vListaJugadores: tListaJugadores;
  2946.     vUsuarios: tUsuarios;   {Vector de usuarios participantes}
  2947.     vTacticas: tTacticas;       {Vector Tactica por fecha Mas Usada}
  2948.     vPuntajeJugador: tPuntajeJugador;   {Matriz Puntaje por fecha de Jugadores}
  2949.     vPuntajeTotalJugadores: tPuntajeTotalJugadores; {Vector de Jugadores con sus puntajes Totales}
  2950.     vElegidoJugadores: tElegidoJugadores;   {Vector Nro de Veces Elegido Mejor Jugador}
  2951.     vListaApuestas: tListaApuestas; {Apuestas en orden: por fecha, 1ro, 2do, 3ro}
  2952.     Equipo: tVEquipo;
  2953.     Condicion: tVCondicion;
  2954.     CantUsuarios: byte;
  2955.     TipoUsuario: byte;
  2956.     UsuarioActual: byte;
  2957.     FechaActual: byte;
  2958.     RegEquipo: TRegEQUIPO;
  2959.  
  2960.  
  2961. BEGIN
  2962.     InicializarVariables (vUsuarios, vListaJugadores, vTacticas, vPuntajeTotalJugadores, vElegidoJugadores, vPuntajeJugador, vListaApuestas, CantUsuarios, TipoUsuario, UsuarioActual, FechaActual);
  2963.     PedidoAndres(vUsuarios, TipoUsuario);
  2964.     MenuIniciarSesion(vUsuarios, TipoUsuario, UsuarioActual, FechaActual, vListaApuestas, vPuntajeJugador, CantUsuarios,
  2965.      vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaJugadores, Equipo, Condicion, RegEquipo); {TESTEO}
  2966.  
  2967.     {MenuPantallaInicial(TipoUsuario, vUsuarios, UsuarioActual, FechaActual, vPuntajeJugador, CantUsuarios, vPuntajeTotalJugadores, vTacticas, vElegidoJugadores, vListaApuestas,
  2968.     vListaJugadores, Equipo, Condicion, RegEquipo);}
  2969. END.
  2970.  
  2971. {**************************************************************************************************************}
  2972. {**************************************************************************************************************}
  2973. {**************************************************************************************************************}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement