martes, 7 de mayo de 2019

Hackatones divertidos! Juego Adivina el número en Free Pascal

Vaya! Qué divertido es esto! Hice otro hackatón personal para el juego para  mi pareja!

Este juego es tan, pero tan básico, que lo hice en apenas media hora de programación!

Lo mejor es ver el juego terminado y ver que funciona!

Nuevamente publico el código aquí, porque seguro que por eso vinieron, al igual que en mis repositorios de GitHub, y nuevamente sin comentarios ni explicaciones, espero pronto darme tiempo para hacerlo en mis dos juegos recientes.

Mientras tanto, disfruten:

program Adivina_Numero;
{$codepage UTF8}
Uses
Crt;

Var
  Contador, Seleccion, Numero : Integer;
z : char;
salir : boolean;

begin
Clrscr;
Writeln('Adivina el número!');
Writeln;
Writeln('He escogido un número entre el 0 y 100');
Writeln('Adivina cuál es!!!');
Writeln;
Randomize;
Numero := Random(100);
Salir := False;
Contador := 1;
Repeat
Write('Selección número ', Contador, ' : ');
Readln(Seleccion);
If Seleccion = Numero then 
begin
Writeln('Felicidades! Adivinaste cuál es!');
Salir := True;
end
else
begin
If Seleccion > Numero then Writeln('Te pasaste!');
If Seleccion < Numero then Writeln('Te falta!');
If Contador <= 9 then Contador := Contador + 1 
else 
begin
Salir := True;
Writeln('Perdiste!');
end;
end;
Until salir = True;
z:=Readkey;
end.

sábado, 4 de mayo de 2019

Hackatón de juego por atención en Free Pascal

 Hace tiempo leí en twitter, en la cuenta de platzi, sobre un hackatón para crear un videojuego, me pareció una buena idea, hasta ahí.

 Días después,  mi pareja me llega un una sopa de letras en Excel, tengo la idea que se lo hizo un compañero de su trabajo, por lo que, por ganar su atención, se me ocurrió la idea de hacer un hackatón para crear un juego para ella, obviamente en mi lenguaje, Free Pascal, se me ocurrió hacerle el juego Master Mind, en el cual se escogen 4 números, en su primer etapa del 0 al 5, y adivinar tanto los números seleccionados como su posición, y en modo hackatón, en la noche del viernes para entregarlo el sábado.

 Todo bien hasta ahí, excepto porque no lo terminé en esa noche, solo avancé como un 30%, continué el domingo, y terminé hasta el miércoles que volví a dedicarle tiempo. Creo, en total, le dediqué aproximadamente 8 horas repartidas en 3 días.

 Este código lo escribí velozmente, por lo cual no está documentado, ni depurado, ni optimizado, puede contener errores y falta hacerlo más accesible, sin embargo es funcional, y es el motivo principal de esta entrada, mis códigos los estoy subiendo a GitHub, sin embargo, creo que al llegar aquí en búsqueda de información, lo ideal sería que se llevaran la información directamente desde aquí, así que a continuación detallo el código, que puede ser descargado desde GitHub:

program mm;

Uses
Crt;

Var
  n1,n2,n3,n4,c1,c2,c3,c4,i,p,e,t,y : Integer;
z : char;
salir : boolean;

begin
Randomize;
i := 1;
salir := False;
repeat
c1:=random(5);
c2:=random(5);
if c2=c1 then c2:=random(5);
c3:=random(5);
if ((c3=c1) or (c3=c2)) then c3:=random(5);
c4:=random(5);
if ((c4=c1) or (c4=c2) or (c4=c3)) then c4:=random(5);
until ((c1<>c2) and (c1<>c3) and (c1<>c4) and (c2<>c3) and (c2<>c4) and (c3<>c4));
GotoXY(1,1); 
Writeln('Mente Maestra');
GotoXY(1,2);
Writeln('Se han escogido 4 numeros, debes averiguar cuales son y en que posicion estan');
GotoXY(1,3);
Write('Los resultados significan:');
GotoXY(1,4);
Write(' -X- numero correcto posicion correcta; -O- numero correcto posicion incorrecta');
GotoXY(1,5);
Write('Tienes 10 intentos. Adelante!');
    repeat
GotoXY(1,i+6);
Write('Intento ',i,' ->');
GotoXY(14,i+6);
Read(n1);
GotoXY(16,i+6);
Write('-');
GotoXY(18,i+6);
Read(n2);
GotoXY(20,i+6);
Write('-');
GotoXY(22,i+6);
Read(n3);
GotoXY(24,i+6);
Write('-');
GotoXY(26,i+6);
Read(n4);
GotoXY(28,i+6);
p := 0; e := 0;
if (n1=c1) then p:= p+1;
if (n2=c2) then p:= p+1;
if (n3=c3) then p:= p+1;
if (n4=c4) then p:= p+1;
if ((n1=c2) or (n1=c3) or (n1=c4)) then e:= e+1;
if ((n2=c1) or (n2=c3) or (n2=c4)) then e:= e+1;
if ((n3=c1) or (n3=c2) or (n3=c4)) then e:= e+1;
if ((n4=c1) or (n4=c2) or (n4=c3)) then e:= e+1;
GotoXY(32,i+6);
Write('Resultado:');
if p>0 then
begin
for t:=1 to p do
begin
GotoXY(43+t,i+6);
Write('X');
end;
end;
if e>0 then
begin
for y:=1 to e do
begin
GotoXY((43+p+y),i+6);
Write('O');
end;
end;
if p=4 then salir := 
True;
i := i+1;
if i=11 then salir := True;
until (salir=True);
if p=4 then 
begin
GotoXY(40,24);Write('F-E-L-I-C-I-D-A-D-E-S');
end;
if i=11 then
begin
GotoXY(40,24);Write('P-E-R-D-I-S-T-E')
end;
z:=Readkey;
end.