0% encontró este documento útil (0 votos)
709 vistas5 páginas

Juego de Bingo Pascal

Este documento describe un programa para simular el juego de bingo. Define las estructuras de datos necesarias como vectores y registros para almacenar los jugadores, sus cartones, y el desarrollo de una partida. Incluye procedimientos para cargar los jugadores y cartones, simular el sorteo de números, verificar los cartones, determinar ganadores, y ordenar y mostrar los puntajes finales. El objetivo es simular una partida completa de bingo asignando puntajes a los jugadores.

Cargado por

franco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
709 vistas5 páginas

Juego de Bingo Pascal

Este documento describe un programa para simular el juego de bingo. Define las estructuras de datos necesarias como vectores y registros para almacenar los jugadores, sus cartones, y el desarrollo de una partida. Incluye procedimientos para cargar los jugadores y cartones, simular el sorteo de números, verificar los cartones, determinar ganadores, y ordenar y mostrar los puntajes finales. El objetivo es simular una partida completa de bingo asignando puntajes a los jugadores.

Cargado por

franco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

program LetsBingo;

uses crt;
const
JUGADORES = 10;
CASILLEROS = 100;
type
puntaje = 0..3;
acerte = 1..15;

jugador = record
nombre: string;
puntos: puntaje;
end;

vectorJugadores = array[1..10] of jugador;

BolilleroCarton = array [1..100] of boolean;

jugada = record

carton: BolilleroCarton;
salio: boolean;
aciertos: integer;

end;

VectorPartida = array[1..10] of jugada;

procedure leerJugador(var j: jugador);


begin
Write ('Ingrese el nombre del Jugador: ');
readln(j.nombre);
j.puntos:= 0;
end;

procedure CargarJugadores(var vj: VectorJugadores);


var
i: integer;
begin
for i:= 1 to JUGADORES do begin
leerJugador(vj[i]);
end;
end;

procedure inicializarCartones(var b: BolilleroCarton);


var
i: integer;
begin
for i:=1 to CASILLEROS do {Los cartones comienzan "en blanco"}
b[i]:= FALSE;
end;

procedure NumerosSinRepetir(var b: BolilleroCarton);


var
num, cant: integer;
begin
cant:= 0;
num:= Random (100) + 1;
while(cant <> 15) do begin {La condicion del while se debe a que quiero cargar
solo 15 numeros en el carton}
if((b[num] = FALSE))then begin {Si no sale el cero y el carton esta vacio en
esa posicion, asigna numeros al carton}
cant:= cant + 1;
b[num]:= TRUE;
end;
num:= Random (100) + 1;
end;
end;

procedure CargarCartones(var vp: VectorPartida);


var
i: integer;
begin

for i:= 1 to JUGADORES do begin


inicializarCartones(vp[i].carton);
vp[i].salio:= false;
vp[i].aciertos:= 0;
{Genero 1 carton}
//AsignarCartones(vp[i]);
NumerosSinRepetir(vp[i].carton);
{Inicializo acierto en 0}

end;
end;

procedure CargarCartonesAleatorios(var vp: VectorPartida);


var
num, i: integer;
ok: boolean;
begin
i:= 0;
While (i< 10) do begin
inicializarCartones(vp[i].carton);
vp[i].salio:= false;
vp[i].aciertos:= 0;
{Genero 1 carton}
ok:= false;
num:= Random(10)+1; {defino aleatoriamente a qui?n le voy a asignar el cart?
n}
while (not(ok)) do begin
if ((vp[num].salio = false))then begin {si el n?mero no es 0 y el jugador
no sali? previamente}
NumerosSinRepetir(vp[i].carton); {asigna el cart?n al jugador en la
posici?n del n?mero r?ndom}
vp[num].salio:= true; {cambio el valor del campo en el vector para
saber que ya tiene un cart?n asignado}
ok:= true;
i:= i + 1;
end
else
num:= Random(10)+1; {si el n?mero random fue 0 o repetido saco otro y
vuelvo a evaluarlo}
end;
end;
end;

function numerossinrepetir2 (b:BolilleroCarton): integer;


var
num: integer;
begin
num := Random(100)+1; // genero un n?mero entre 0 y 99
while (b[num] = true) do {si es true ya salio el numero y necesito generar
otro}
num := Random(100)+1;

numerossinrepetir2 := num; {devuelve un n?mero no repetido}


end;

procedure verificarCartonPorJugador (var j:jugada; num:integer);


begin
if (j.carton[num] = true) then
j.aciertos:= j.aciertos +1;
end;

procedure verificarCartonesJugadores(num: integer; var vp: vectorPartida);


var
i:integer;
begin
for i:=1 to 10 do begin {ver por cada jugador si tiene el n?mero en el
cart?n}
if (vp[i].aciertos <> -1) then {s?lo verifico cart?n de jugador que
no gan?}
verificarCartonPorJugador (vp[i],num); {Si est? en true suma
aciertos+1}
end;
end;

procedure verificarGanadores(var vp:VectorPartida; var vj: vectorJugadores;


var jugadoresGanadores: integer;
var puntosQueVanAGanar: integer);
var
i: integer;
ganoAlguienEstaRonda: boolean;
begin
ganoAlguienEstaRonda := false;
for i:= 1 to 10 do begin
if vp[i].aciertos = 15 then begin {Bingo!}
ganoAlguienEstaRonda := true; {pone en true si alguien gan? esta
ronda}
vp[i].aciertos := -1; {ya gan?, no necesito volver a verificar su
cart?n}
vj[i].puntos := puntosQueVanAGanar; {marca los puntos que gan?
el jugador}
jugadoresGanadores:=jugadoresGanadores+1;
end;
end;
if (ganoAlguienEstaRonda) then
puntosQueVanAGanar := puntosQueVanAGanar -1; {resta 1 si alguien gan?
esta ronda}
end;
procedure jugarUnaPartida (var vp:vectorPartida; var vj: vectorJugadores);
var
b: BolilleroCarton;
numQueSalio, jugadoresGanadores, puntosQueVanAGanar,
bolillasSorteadas: integer;

Begin

inicializarCartones(b);

puntosQueVanAGanar:= 3; // etapas, el primero gana 3 puntos

jugadoresGanadores:= 0;

bolillasSorteadas := 0;

while (puntosQueVanAGanar<>0) and (jugadoresGanadores<10) do begin

numQueSalio := numerossinrepetir2(b); //sacar un numero del bolillero

b[numQueSalio]:=true; // marca que ya sali? el numero

verificarCartonesJugadores (numQueSalio,vp);

bolillasSorteadas := bolillasSorteadas +1;

If (bolillasSorteadas >= 15) then {al menos 15 bolillas antes de ver si


hay ganador}

verificarGanadores(vp, vj, jugadoresGanadores, puntosQueVanAGanar);

end;

end;

procedure Ordenar (var vj: vectorJugadores);


var
i,j,p:integer;
aux: jugador;
begin
for i:=1 to JUGADORES-1 do begin {busca el maximo puntaje v[p], entre
v[1], ..., v[9] }
p := i;
for j := i+1 to JUGADORES do begin
if (vj[j].puntos > vj[p].puntos)then
p:=j;
end;
{intercambia v[i] y v[p] }
aux := vj[p];
vj[p] := vj[i];
vj[i] := aux;

end;
end;

procedure ImprimirPuntos(vj: vectorJugadores);


var
i:integer;
begin
Ordenar(vj);
for i:= 1 to JUGADORES do begin
case vj[i].puntos of
3: writeln('El ganador o ganadores es: ', vj[i].nombre);
0..2: writeln('El jugador ', vj[i].nombre,' quedo en la posicion ', i);
end;
end;
end;

Var

vj: vectorJugadores;

vp: vectorPartida;
i: integer;

{Se supone que tiene que andar, sumando todos los m?dulos}

Begin
Randomize;

cargarJugadores (vj); {Falta el nombre del proceso arriba, no?}

cargarCartones (vp);

jugarUnaPartida(vp, vj);

for i:= 1 to JUGADORES do


writeln(vj[i].nombre, ' puntos: ', vj[i].puntos);

ImprimirPuntos(vj);

readkey;

end.

También podría gustarte