(* primero con su telefono
inteligente Android
descargar en Play Store
la aplicacion
Pascal N-IDE es muy buena;
copien el codigo fuente
y ejecuten el programa
Gracias:
Armando Fuenmayor
patusnalgason@hotmail.com
armandof1938@gmail.com
WhatsApp +58 412-2689131
el programa consiste en
Piensa en un número entre 1 y 63.
Se mostrará 6 tarjetas, en cada
una de ellas debes teclear la letra
[S] y luego Enter si está el
número que pensaste o
[N] si no está el número.
Teclear Enter para continuar
*)
uses aDialog, Graph,
crt , aTTSpeech ;
type
arre = array[1..6] of integer;
var
yes : Boolean ;
x : arre ;
x1 : arre =(1 ,2 , 4 ,8 , 16, 32);
su : Integer ;
res , carac : char;
verdad1 ,verdad : boolean;
con1, sa, con, contar, Gd, Gm : Integer;
// retorna un numero
// al azar o aleatorio
function loteria(nu:integer):integer ;
begin
randomize;
loteria := random(nu) + 1;
end;
// resibe un numeroentre 1 o 300 y
// retorna una cadena
function cartas(n:integer):string;
const
max =150 ;
var
palabra : array[1..max] of string;
begin
palabra[1]:= '123456';
palabra[2]:= '213456';
palabra[3]:= '312456';
palabra[4]:= '412356';
palabra[5]:= '512346';
palabra[6]:= '612345';
palabra[7]:= '642315';
palabra[8]:= '612354';
palabra[9]:= '521346';
palabra[10]:= '312645';
palabra[11]:= '532146';
palabra[12]:= '612435';
palabra[13]:= '542316';
palabra[14]:= '413256';
palabra[15]:= '621345';
palabra[16]:= '512643';
palabra[17]:= '632145';
palabra[18]:= '512436';
palabra[19]:= '652341';
palabra[20]:= '453216';
palabra[21]:= '641325';
palabra[22]:= '542613';
palabra[23]:= '642135';
palabra[24]:= '532416';
palabra[25]:= '653241';
palabra[26]:= '452316';
palabra[27]:= '643125';
palabra[28]:= '546213';
palabra[29]:= '641235';
palabra[30]:= '534216';
palabra[31]:= '653214';
palabra[32]:= '452361';
palabra[33]:= '643152';
palabra[34]:= '546231';
palabra[35]:= '641253';
palabra[36]:= '534261';
palabra[37]:= '563214';
palabra[38]:= '542361';
palabra[39]:= '463152';
palabra[40]:= '465231';
palabra[41]:= '461253';
palabra[42]:= '354261';
palabra[43]:= '536214';
palabra[44]:= '524361';
palabra[45]:= '436152';
palabra[46]:= '456231';
palabra[47]:= '461235';
palabra[48]:= '351264';
palabra[49]:= '124356';
palabra[50]:= '264351';
palabra[51]:= '362451';
palabra[52]:= '462351';
palabra[53]:= '562341';
palabra[54]:= '625341';
palabra[55]:= '642351';
palabra[56]:= '623541';
palabra[57]:= '523461';
palabra[58]:= '326451';
palabra[59]:= '532461';
palabra[60]:= '624351';
palabra[61]:= '543162';
palabra[62]:= '413562';
palabra[63]:= '613452';
palabra[64]:= '516432';
palabra[65]:= '631452';
palabra[66]:= '514362';
palabra[67]:= '365241';
palabra[68]:= '345216';
palabra[69]:= '364125';
palabra[70]:= '543261';
palabra[71]:= '364215';
palabra[72]:= '352416';
palabra[73]:= '635241';
palabra[74]:= '435216';
palabra[75]:= '361425';
palabra[76]:= '354621';
palabra[77]:= '634125';
palabra[78]:= '354216';
palabra[79]:= '465321';
palabra[80]:= '523641';
palabra[81]:= '634152';
palabra[82]:= '564231';
palabra[83]:= '614253';
palabra[84]:= '453261';
palabra[85]:= '635214';
palabra[86]:= '425361';
palabra[87]:= '546312';
palabra[88]:= '462531';
palabra[89]:= '546123';
palabra[90]:= '345261';
palabra[91]:= '532614';
palabra[92]:= '652431';
palabra[93]:= '431652';
palabra[94]:= '645231';
palabra[95]:= '416235';
palabra[96]:= '635124';
palabra[97]:= '231456';
palabra[98]:= '234156';
palabra[99]:= '321456';
palabra[100]:= '142356';
palabra[101]:= '152346';
palabra[102]:= '162345';
palabra[103]:= '264315';
palabra[104]:= '261354';
palabra[105]:= '251346';
palabra[106]:= '231645';
palabra[107]:= '253146';
palabra[108]:= '261435';
palabra[109]:= '543216';
palabra[110]:= '341256';
palabra[111]:= '362145';
palabra[112]:= '531264';
palabra[113]:= '623145';
palabra[114]:= '351246';
palabra[115]:= '654231';
palabra[116]:= '532164';
palabra[117]:= '461325';
palabra[118]:= '452613';
palabra[119]:= '462135';
palabra[120]:= '352164';
palabra[121]:= '563241';
palabra[122]:= '425316';
palabra[123]:= '564312';
palabra[124]:= '456213';
palabra[125]:= '564123';
palabra[126]:= '342516';
palabra[127]:= '352146';
palabra[128]:= '452631';
palabra[129]:= '431562';
palabra[130]:= '542631';
palabra[131]:= '416253';
palabra[132]:= '342561';
palabra[133]:= '325146';
palabra[134]:= '423561';
palabra[135]:= '431526';
palabra[136]:= '452136';
palabra[137]:= '412653';
palabra[138]:= '635421';
palabra[139]:= '153624';
palabra[140]:= '152436';
palabra[141]:= '143652';
palabra[142]:= '145623';
palabra[143]:= '146235';
palabra[144]:= '135264';
palabra[145]:= '214356';
palabra[146]:= '643251';
palabra[147]:= '236451';
palabra[148]:= '246351';
palabra[149]:= '256341';
palabra[150]:= '265341';
cartas := palabra[n] ;
end;
// convierte un entero
// a cadena de caracteres
function entecade(zz:integer) : string ;
var
c : string;
begin
c := '';
str(zz,c);
entecade := c;
end;
function caraente(c:char) : Integer ;
begin
case c of
'1' : caraente := 1;
'2' : caraente := 2;
'3' : caraente := 3;
'4' : caraente := 4;
'5' : caraente := 5;
'6' : caraente := 6;
end;
end;
// retorna verdadero si
// el caracter es 1 .. 6
function valcar(c:char) : boolean;
begin
if (ord (c) > 48) and (ord(c) < 55) then
begin
valcar := true
end
else
begin
valcar := false ;
end;
end;
procedure primer;
begin
cleardevice;
setcolor(BLUE);
settextstyle(defaultfont, horizdir, 4);
outtextxy(3,6,' ADIVINA EL NÚMERO');
settextstyle(defaultfont, horizdir, 7);
circle(260,118,50);
setcolor(YEllOW);
outtextxy(244,85,'?');
settextstyle(defaultfont, horizdir, 3);
setcolor(RED);
outtextxy(1,170 ,'Piensa en un número entre 1 y 63.');
outtextxy(1,203,' Se mostrará 6 tarjetas, en cada');
outtextxy(2,250,'una de ellas debes teclear la letra');
outtextxy(1,270,' [S] y luego Enter⤴ si está el');
outtextxy(1,315,' número que pensaste o ');
outtextxy(1,350,' [N] si no está el número.');
outtextxy(1,380,' Teclear Enter⤴ para continuar');
end;
procedure taruno(g:integer);
begin
cleardevice;
setcolor(BLUE);
settextstyle(defaultfont, horizdir, 3);
outtextxy(3,6,'Tarjeta '+entecade(g)+': ¿El número está aquí?');
rectangle(500,418,27,66);
setfillstyle(1,white);
bar(500,418,27,66);
settextstyle(defaultfont, horizdir, 4);
setcolor(RED);
outtextxy(30,70,' 1 3 5 7 9 11');
outtextxy(30,130,'13 15 17 19 21 23');
outtextxy(30,190,'25 27 29 31 33 35');
outtextxy(30,250,'37 39 41 43 45 47');
outtextxy(30,310,'49 51 53 55 57 59');
outtextxy(30,370,' 61 63 ');
outtextxy(30,360,' [S/N]' );
end;
// Muestra la tarjeta N° 02
procedure tardos(g:integer);
begin
cleardevice;
setcolor(BLUE);
settextstyle(defaultfont, horizdir, 3);
outtextxy(3,6,'Tarjeta '+entecade(g)+': ¿El número está aquí?');
rectangle(500,418,27,66);
setfillstyle(1,white);
bar(500,418,27,66);
settextstyle(defaultfont, horizdir, 4);
setcolor(RED);
outtextxy(30,70 ,' 2 3 6 7 10 11');
outtextxy(30,130,'14 15 18 19 22 23');
outtextxy(30,190,'26 27 30 31 34 35');
outtextxy(30,250,'38 39 42 43 46 47');
outtextxy(30,310,'50 51 54 55 58 59');
outtextxy(30,370,' 62 63 ');
outtextxy(30,360,' [S/N]' );
end;
// Muestra la tarjeta 03
procedure tartres(g:Integer );
begin
cleardevice;
setcolor(BLUE);
settextstyle(defaultfont, horizdir, 3);
outtextxy(3,6,'Tarjeta ' +entecade(g)+ ': ¿El número está aquí?');
settextstyle(defaultfont, horizdir, 3);
outtextxy(3,6,'Tarjeta 3: ¿El número está aquí?');
rectangle(500,418,27,66);
setfillstyle(1,white);
bar(500,418,27,66);
settextstyle(defaultfont, horizdir, 4);
setcolor(RED);
outtextxy(30,70,' 4 5 6 7 12 13');
outtextxy(30,130,'14 15 20 21 22 23');
outtextxy(30,190,'28 29 30 31 36 37');
outtextxy(30,250,'38 39 44 45 46 47');
outtextxy(30,310,'52 53 54 55 60 61');
outtextxy(30,370,' 62 63 ');
outtextxy(30,360,' [S/N]' );
end;
// Muestra la tarjeta N° 4
procedure tarcuatro(g:integer);
begin
cleardevice;
setcolor(BLUE);
settextstyle(defaultfont, horizdir, 3);
outtextxy(3,6,'Tarjeta '+entecade(g)+': ¿El número está aquí?');
rectangle(500,418,27,66);
setfillstyle(1,white);
bar(500,418,27,66);
settextstyle(defaultfont, horizdir, 4);
setcolor(RED);
outtextxy(30,70 ,' 8 9 10 11 12 13');
outtextxy(30,130,'14 15 24 25 26 27');
outtextxy(30,190,'28 29 30 31 40 41');
outtextxy(30,250,'42 43 44 45 46 47');
outtextxy(30,310,'56 57 58 59 60 61');
outtextxy(30,370,' 62 63 ');
outtextxy(30,360,' [S/N]' );
end;
// Muestra la tarjeta N° 05
procedure tarcinco(g:integer );
begin
cleardevice;
setcolor(BLUE);
settextstyle(defaultfont, horizdir, 3);
outtextxy(3, 6,'Tarjeta '+entecade(g)+': ¿El número está aquí?');
rectangle(500,418,27,66);
setfillstyle(1,white);
bar(500,418,27,66);
settextstyle(defaultfont, horizdir, 4);
setcolor(RED);
outtextxy(30,70 ,'16 17 18 19 20 21');
outtextxy(30,130,'22 23 24 25 26 27');
outtextxy(30,190,'28 29 30 31 48 49');
outtextxy(30,250,'50 51 52 53 54 55');
outtextxy(30,310,'56 57 58 59 60 61');
outtextxy(30,370,' 62 63 ');
outtextxy(30,360,' [S/N]' );
end;
// Muestra la tarjeta N° 06
procedure tarseis(g:integer);
begin
cleardevice;
setcolor(BLUE);
settextstyle(defaultfont, horizdir, 3);
outtextxy(3,6,'Tarjeta '+entecade(g)+': ¿El número está aquí?');
rectangle(500,418,27,66);
setfillstyle(1,white);
bar(500,418,27,66);
settextstyle(defaultfont, horizdir, 4);
setcolor(RED);
outtextxy(30,70 ,'32 33 34 35 36 37');
outtextxy(30,130,'38 39 40 41 42 43');
outtextxy(30,190,'44 45 46 47 48 49');
outtextxy(30,250,'50 51 52 53 54 55');
outtextxy(30,310,'56 57 58 59 60 61');
outtextxy(30,370,' 62 63 ');
outtextxy(30,360,' [S/N]' );
end;
procedure finaz( kk :integer);
var
i , j : integer ;
begin
clearDevice;
if (kk = 0) then
begin
clearDevice;
setcolor(BLUE);
setTextStyle(DefaultFont, HorizDir, 4);
OutTextXY(3, 6, ' No pensastes en ningún ');
OutTextXY(3, 60, ' número ');
end
else
begin
for i := 3 to 21 do
for j := 21 downto 1 do
begin
setcolor(Yellow);
SetTextStyle(DefaultFont, HorizDir, i);
outTextXY(1+i, j, ' '+entecade(kk)+' ');
if (i mod 2 = 0 ) then
clearDevice;
end;
delay(500);
setcolor(BLUE);
SetTextStyle(DefaultFont, HorizDir, 4);
OutTextXY(5, 240, 'ES EL NÚMERO ');
end;
end;
procedure abrirmodografico;
begin
Gd := Detect;
InitGraph(Gd, Gm, '');
end;
// retorna verdadero si
// todos son 1
function epalabrapresion(p1,p2,p3,p4,p5,p6:integer):boolean;
begin
if (p1=1) and (p2 = 1)
and (p3=1) and (p4 = 1)
and (p5=1) and (p6 = 1) then
begin
epalabrapresion := true
end
else
begin
epalabrapresion := false ;
end;
end ;
function vali(cad:string):boolean;
var
c1, c2, c3,
c4, c5, c6, y : integer ;
begin
c1 := 0;
c2 := 0;
c3 := 0;
c4 := 0;
c5 := 0;
c6 := 0;
if length(cad) = 6 then
begin
for y := 1 to 6 do
begin
if valcar(cad[y]) then
begin
case cad[y] of
'1' : inc(c1);
'2' : inc(c2);
'3' : inc(c3);
'4' : inc(c4);
'5' : inc(c5);
'6' : inc(c6);
end
end
else
begin
vali := false;
break;
end;
end;
vali := epalabrapresion(c1,c2,c3,c4,c5,c6);
end
else
begin
vali := false;
break;
end ;
end;
// on numeros del 1 al 6
// de forma vatiada
procedure top(cad : string);
var
i : integer ;
begin
if vali(cad) then
begin
for i := 1 to 6 do
begin
x[i]:=caraente(cad[i]);
end;
end
else
begin
dialogalert('Error ',' = ',true);
break;
end;
end;
procedure yyy1(c:Char ; n:Integer);
begin
case n of
1 : if (upcase(c) = 'S') then
begin
speak('sí está ');
su := su + x1[n] ;
end
else
begin
speak('no está ');
end;
2 : if (upcase(c) = 'S') then
begin
speak('sí está ');
su := su + x1[n] ;
end
else
begin
speak('no está ');
end;
3 : if (upcase(c) = 'S') then
begin
speak('sí está ');
su := su + x1[n] ;
end
else
begin
speak('no está ');
end;
4 : if (upcase(c) = 'S') then
begin
speak('sí está y recuerde otra vez el número ');
su := su + x1[n] ;
end
else
begin
speak('no está y recuerde otra vez el número ');
end;
5 : if (upcase(c) = 'S') then
begin
speak('sí está ');
su := su + x1[n] ;
end
else
begin
speak('no está ');
end;
6 : if (upcase(c) = 'S') then
begin
speak('sí está');
su := su + x1[n] ;
end
else
begin
speak('no está');
end;
end;
end;
procedure hablar(numero :Integer);
var
arreglo: array[0..63] of string;
begin
arreglo[63] := 'ustéd pensó en el número sesenta y tres';
arreglo[62] := 'ustéd pensó en el número sesenta y dos';
arreglo[61] := 'ustéd pensó en el número sesenta y uno';
arreglo[60] := 'ustéd pensó en el número sesenta';
arreglo[59] := 'ustéd pensó en el número sincuenta y nueve';
arreglo[58] := 'ustéd pensó en el número sincuenta y ocho';
arreglo[57] := 'ustéd pensó en el número sincuenta y siete';
arreglo[56] := 'ustéd pensó en el número sincuenta y seis';
arreglo[55] := 'ustéd pensó en el número sincuenta y cinco';
arreglo[54] := 'ustéd pensó en el número sincuenta y cuatro';
arreglo[53] := 'ustéd pensó en el número sincuenta y tres';
arreglo[52] := 'ustéd pensó en el número sincuenta y dos';
arreglo[51] := 'ustéd pensó en el número sincuenta y uno';
arreglo[50] := 'ustéd pensó en el número sincuenta';
arreglo[49] := 'ustéd pensó en el número cuarenta y nueve';
arreglo[48] := 'ustéd pensó en el número cuarenta y ocho';
arreglo[47] := 'ustéd pensó en el número cuarenta y siete';
arreglo[46] := 'ustéd pensó en el número cuarenta y seis';
arreglo[45] := 'ustéd pensó en el número cuarenta y cinco';
arreglo[44] := 'ustéd pensó en el número cuarenta y cuatro';
arreglo[43] := 'ustéd pensó en el número cuarenta y tres';
arreglo[42] := 'ustéd pensó en el número cuarenta y dos';
arreglo[41] := 'ustéd pensó en el número cuarenta y uno';
arreglo[40] := 'ustéd pensó en el número cuarenta';
arreglo[39] := 'ustéd pensó en el número treinta y nueve';
arreglo[38] := 'ustéd pensó en el número treinta y ocho';
arreglo[37] := 'ustéd pensó en el número treinta y siete';
arreglo[36] := 'ustéd pensó en el número treinta y seis';
arreglo[35] := 'ustéd pensó en el número treinta y cinco';
arreglo[34] := 'ustéd pensó en el número treinta y cuatro';
arreglo[33] := 'ustéd pensó en el número treinta y tres';
arreglo[32] := 'ustéd pensó en el número treinta y dos';
arreglo[31] := 'ustéd pensó en el número treinta y uno';
arreglo[30] := 'ustéd pensó en el número treinta';
arreglo[29] := 'ustéd pensó en el número veinte y nueve';
arreglo[28] := 'ustéd pensó en el número veinte y ocho';
arreglo[27] := 'ustéd pensó en el número veinte y siete';
arreglo[26] := 'ustéd pensó en el número veinte y seis';
arreglo[25] := 'ustéd pensó en el número veinte y cinco';
arreglo[24] := 'ustéd pensó en el número veinte y cuatro';
arreglo[23] := 'ustéd pensó en el número veinte y tres';
arreglo[22] := 'ustéd pensó en el número veintidós';
arreglo[21] := 'ustéd pensó en el número veintiuno';
arreglo[20] := 'ustéd pensó en el número veinte';
arreglo[19] := 'ustéd pensó en el número diecinueve';
arreglo[18] := 'ustéd pensó en el número dieciocho';
arreglo[17] := 'ustéd pensó en el número diecisiete';
arreglo[16] := 'ustéd pensó en el número dieciseis';
arreglo[15] := 'ustéd pensó en el número quince';
arreglo[14] := 'ustéd pensó en el número catorce';
arreglo[13] := 'ustéd pensó en el número trece';
arreglo[12] := 'ustéd pensó en el número doce';
arreglo[11] := 'ustéd pensó en el número once';
arreglo[10] := 'ustéd pensó en el número diez';
arreglo[9] := 'ustéd pensó en el número nueve';
arreglo[8] := 'ustéd pensó en el número ocho';
arreglo[7] := 'ustéd pensó en el número siete';
arreglo[6] := 'ustéd pensó en el número seis';
arreglo[5] := 'ustéd pensó en el número cinco';
arreglo[4] := 'ustéd pensó en el número cuatro';
arreglo[3] := 'ustéd pensó en el número tres';
arreglo[2] := 'ustéd pensó en el número dos';
arreglo[1] := 'ustéd pensó en el número uno';
arreglo[0] := 'ustéd no pensó en ningún número';
speak('yo leo su mente'+arreglo[numero]);
end;
// Muetra la tarjeta n 1..6
procedure vertar(n, n2:integer);
begin
case n2 of
1 : taruno(n);
2 : tardos(n);
3 : tartres(n);
4 : tarcuatro(n);
5 : tarcinco(n);
6 : tarseis(n);
end;
end;
procedure principal;
begin
su := 0;
con := 0;
contar := 0;
verdad := true;
primer;
top(cartas(loteria(150)));
readln;
cleardevice;
while (verdad = True) do
begin
contar := contar + 1;
vertar(contar,x[contar]);
repeat
carac := #0;
read(carac);
until ((carac = 'S') or (carac = 's') or (carac = 'N') or (carac = 'n') );
con := con + 1;
yyy1(carac ,x [con]);
if (con = 6) then
begin
verdad := false
end;
end;
finaz(su);
hablar(su);
end;
procedure yyyrt;
begin
verdad1 := true;
res := 'S';
abrirmodografico;
while verdad1 do
begin
principal;
setcolor(Yellow);
setTextStyle(DefaultFont, HorizDir, 2);
outtextxy(1,360,'¿Quieres que te adivine otro? [S/N]' );
repeat
res := #0;
read(res);
until ((res = 'S') or (res= 's') or
(res = 'N') or (res = 'n') );
if (res = 'N') or (res = 'n') then
begin
verdad1 := false;
end;
end;
readln ;
closeGraph();
end;
begin
yyyrt;
end.