Pascal/Turbo Pascal - Ayuda Procedimiento

 
Vista:

Ayuda Procedimiento

Publicado por Hernan (1 intervención) el 23/04/2011 22:36:00
Hola que tal, necesito que me ayuden a ver si ando en buen camino para armar una parte de un programa, les explico:

Tengo que hacer un procedimiento que active y desactive cierto tipo de opciones. En si, tengo que modificar el el " campo visible " de varias partes de un programa. Es decir a travez de mi opcion que seria iniciar un torneo, tengo que deshabilitar y habilitar ciertos campos. Y una vez esto echo tendria que volver al menu principal y ahi no aparecerian mas las opciones que previamente puse como invisibles.

La cosa es que yo me imagine hacer un procedimiento que sea todo booleano que con 1 sea true , y 0 false. Con 1 muestra, con 0 invisible.

Esta bien asi?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda Procedimiento

Publicado por ramon (2158 intervenciones) el 24/04/2011 23:55:08
{Mira este menú un procedimiento solo no sirve de mucho para hacer lo que comentas
comprueba esto y te puedes hacer una idea del lo complejo del lo que deseas realizar.}


program menus;
uses
crt;
type
regmenu = record
estado : boolean;
nombre : string[15];
end;
const
menuprincipal : array[1..5] of string[7] = (
'Fisica','Quimica','Mates','Lengua','Salir');


var
menu : array[0..7] of regmenu;
opcio, i, cont : integer;
tecla : char;
fin : boolean;

procedure penugeneral;
begin
textcolor(15);
for i := 1 to 5 do
begin
gotoxy(i * 10,2);write(menuprincipal[i]);
end;
textcolor(15);
end;


procedure presentamenu;
begin
textcolor(15);
for cont := 0 to 7 do
begin
if menu[cont].estado = true then
textcolor(15)
else
textcolor(7);
gotoxy(30,4 + cont);write(menu[cont].nombre);
end;
end;

procedure ponbaloresmenu;
begin
menu[0].estado := true;
menu[0].nombre := 'Matematicas';
menu[1].estado := true;
menu[1].nombre := 'Suma';
menu[2].estado := true;
menu[2].nombre := 'Resta';
menu[3].estado := true;
menu[3].nombre := 'Multiplicacion';
menu[4].estado := true;
menu[4].nombre := 'Division';
menu[5].estado := true;
menu[5].nombre := 'Raiz Cuadrada';
menu[6].estado := true;
menu[6].nombre := 'Tanto por Ciento';
menu[7].estado := true;
menu[7].nombre := 'Salir';
end;

procedure anulaunmenu(cual : integer);
begin
if cual > 0 then
menu[cual].estado := false;
presentamenu;
end;

procedure borrado;
var
li : integer;
begin
for li := 3 to 40 do
begin
gotoxy(1,li);ClrEol;
end;
end;

procedure elijemenu;
var
opcion : integer;
te : char;
salir : boolean;
res : real;
begin
opcion := 1;
textcolor(15);
gotoxy(30,2 + 12);write('Elija Opcion con[ ][ ]');
gotoxy(47,2 + 12);write(#24);
gotoxy(50,2 + 12);write(#25);
salir := false;
repeat
TextBackground(0);
textcolor(15);
presentamenu;
TextBackground(7);
textcolor(14);
gotoxy(30,4 + opcion);write(menu[opcion].nombre);
te := readkey;
if te = #80 then
begin
opcion := opcion + 1;
if opcion > 7 then
opcion := 7;
if menu[opcion].estado = false then
begin
opcion := opcion + 1;
if opcion > 7 then
opcion := opcion - 2;
end;
end;
if te = #72 then
begin
opcion := opcion - 1;
if opcion < 1 then
opcion := 1;
if menu[opcion].estado = false then
begin
opcion := opcion - 1;
if opcion < 1 then
opcion := opcion + 2;
end;
end;
if te = #13 then
begin
case opcion of
1 : begin
borrado;
if menu[1].estado = true then
begin
TextBackground(0);
textcolor(15);
borrado;
gotoxy(30,12);write('La suma de 12 + 12 nos dara : ');
gotoxy(60,12);
readln(res);
if res = 24 then
begin
menu[1].estado := false;
opcion := opcion + 1;
end
else
begin
gotoxy(60,12);write('El resultado es 24');
delay(1200);
end;
borrado;
end;
end;
2 : begin
if menu[2].estado = true then
begin
TextBackground(0);
textcolor(15);
borrado;
gotoxy(30,12);write('La resta de 12 - 12 nos dara : ');
gotoxy(61,12);
readln(res);
if res = 0 then
begin
menu[2].estado := false;
opcion := opcion + 1;
end
else
begin
gotoxy(61,12);write('El resultado es 0');
delay(1200);
end;
borrado;
end;
end;
3 : begin
if menu[3].estado = true then
begin
TextBackground(0);
textcolor(15);
borrado;
gotoxy(30,12);write('La multiplicacion de 12 x 12 nos dara : ');
gotoxy(69,12);
readln(res);
if res = 144 then
begin
menu[3].estado := false;
end
else
begin
gotoxy(69,12);write('El resultado es 144');
delay(1200);
end;
borrado;
end;
end;
4 : begin
if menu[4].estado = true then
begin
TextBackground(0);
textcolor(15);
borrado;
gotoxy(30,12);write('La division de 12 : 12 nos dara : ');
gotoxy(63,12);
readln(res);
if res = 1 then
begin
menu[4].estado := false;
end
else
begin
gotoxy(63,12);write('El resultado es 1');
delay(1200);
end;
borrado;
end;
end;
5 : begin
if menu[5].estado = true then
begin
TextBackground(0);
textcolor(15);
borrado;
gotoxy(30,12);write('La raiz cuadrada de 12 nos dara : ');
gotoxy(63,12);
readln(res);
if res = 3.46 then
begin
menu[5].estado := false;
end
else
begin
gotoxy(63,12);write('El resultado es 3.46');
delay(1200);
end;
borrado;
end;
end;
6 : begin
if menu[6].estado = true then
begin
TextBackground(0);
textcolor(15);
borrado;
gotoxy(30,12);write('El 10% de 180 nos dara : ');
gotoxy(61,12);
readln(res);
if res = 18 then
begin
menu[6].estado := false;
end
else
begin
gotoxy(61,12);write('El resultado es 18');
delay(1200);
end;
borrado;
end;
end;
7 : begin
salir := true;
end;
end;
end;
until (salir = true) or (te = #27);
TextBackground(0);
textcolor(15);
borrado;
end;


begin
clrscr;
ponbaloresmenu;
opcio := 1;
fin := false;
repeat
TextBackground(0);
textcolor(15);
penugeneral;
TextBackground(14);
textcolor(1);
gotoxy(opcio * 10,2);write(menuprincipal[opcio]);
tecla := readkey;
if tecla = #77 then
begin
opcio := opcio + 1;
if opcio > 5 then
opcio := 5;
end;

if tecla = #75 then
begin
opcio := opcio - 1;
if opcio < 1 then
opcio := 1;
end;
if tecla = #13 then
begin
TextBackground(0);
textcolor(15);
case opcio of
1 : begin

end;
2 : begin

end;
3 : begin
elijemenu;
end;
4 : begin

end;
5 : begin
fin := true;
clrscr;
end;
end;
end;
until fin = true;
TextBackground(0);
textcolor(15);
clrscr;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Procedimiento

Publicado por Hernan (3 intervenciones) el 25/04/2011 02:53:10
Muchisimas gracias me ha servido mucho!!, ramon tienes algun mail para contactarme mas dudas??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Procedimiento

Publicado por ramon (2158 intervenciones) el 25/04/2011 12:20:33
Cualquier duda que tengas pregunta aquí te contestare cuanto antes .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Procedimiento

Publicado por Hernan (3 intervenciones) el 25/04/2011 17:59:30
Tengo otra duda ahora,

tengo que realizar un procedimiento que no se como se hace, que tenga un array con 10 jugadores , y que cada espacio sea del tipo tjugador , este tipo de dato es igual a una unit que tengo guardada , pero a esta que yo estoy creando le tengo que agregar 2 campos mas , uno que seria puntajeFechaActual y otro puntajeAcumulado.

Creo que esto ultimos seria

tjugador = record
puntajeFechaActual:integer
puntajeAcumulado:integer


No se si me explico bien, necesitaria de la unit que yo ya tengo creada , generar a todos los jugadores de esa unit y que los guarde en este procedimiento .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Procedimiento

Publicado por ramon (2158 intervenciones) el 25/04/2011 18:15:35
El registro que tienes que crear para los jugadores seria:

jugadorreg = record
{a qui lo que quieras de cada jugador o sean los datos}
puntajeFechaActual:integer
puntajeAcumulado:integer
end;

var
jugador : array[1..10] of jugadorreg;
{Tienes 10 registros de jugadores cada uno de dos contenidos
{Esto es el array 10 registros}
{espero te sirva}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Procedimiento

Publicado por Hernan (3 intervenciones) el 26/04/2011 16:33:40
Me ha servido mucho! , muchas gracias!!!.

Otra pregunta, imaginate que tengo un contador que cuenta hasta un limite maximo de 4. Esto es xq tengo que realizar 4 cambios maximos posibles, es decir, un contador que cuente cuantos cambios se realizo y que llegue hasta un maximo de 4.

Mi duda era, como hago para que ese contador se resetee?, es decir que desp. de realizar 4 cambios, cuando se pasa de fecha, hacer una funcion que resetee mi contador y lo vuelva a 0. Es posible eso?

Gracias por todo ramon.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Procedimiento

Publicado por ramon (2158 intervenciones) el 26/04/2011 22:31:31
Ejemplo de contador de cualquier numero y 0 después.

uses
crt; {unidad que contiene las funciones y procedimientos clrscr readkey y otros}
var
contador : integer; {variable para el contador}
begin
clrscr; {limpiamos la pantalla}
contador := 0: {inicialmente a cero}
repeat
write(contador); {presentamos cantador}
contador := contador + 1; {sumamos 1 al contador [Esto puede ser también inc(contador) ]}
if contador > 4 then {comprobamos que es mayor de cuatro si loes }
contador := 0; {lo ponemos a 0}
until keypressed; {se repite el ciclo de 0 a 4 asta pulsar una tecla}
end.

{ esto espero te esplique lo que quieres}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar