#sec:Main ' cifrasYletras.bas ' 29/04/2006 ' (c) 2006 Javier Sedano ' javier.sedano@gmail.com ' Distributed under the GNU GPL ' Inicializar arrays vocales=["A","E","I","O","U",& "A","E","I","O","U",& "A","E","I","O","U"& ] total_vocales=15 consonantes=[& "D","R","S",& "D","R","S",& "B","C","D","F",& "G","H","J","K","L","M","N",& "P","Q","R","S","T","V",& "W","X","Y","Z",& "D","R","S",& "B","C","D","F","G","J","L",& "M","N","P","R","S","T","V",& "B","C","D","L","M","N","R","S",& "B","C","D","L","M","N","R","S",& "D","R","S",& "D","R","S",& "B","C","D","F",& "G","H","J","K","L","M","N",& "P","Q","R","S","T","V",& "W","X","Y","Z",& "D","R","S",& "B","C","D","F","G","J","L",& "M","N","P","R","S","T","V",& "B","C","D","L","M","N","R","S",& "B","C","D","L","M","N","R","S"& ] total_consonantes=120 numeros=[& "100","75","50","25","10",& "1","2","3","4","5",& "6","7","8","9",& "1","2","3","4","5",& "6","7","8","9",& "100","75","50","25","10",& "1","2","3","4","5",& "6","7","8","9",& "1","2","3","4","5",& "6","7","8","9",& "100","75","50","25","10",& "1","2","3","4","5",& "6","7","8","9",& "1","2","3","4","5",& "6","7","8","9"& ] total_numeros=69 celda_letras_0=0 celda_letras_1=1 celda_letras_2=2 celda_letras_3=3 celda_letras_4=4 celda_letras_5=5 celda_letras_6=6 celda_letras_7=7 celda_letras_8=8 celda_numeros_0=9 celda_numeros_1=10 celda_numeros_2=11 celda_numeros_3=12 celda_numeros_4=13 celda_numeros_5=14 celda_numeros_6=15 celda_palabra_0=16 celda_palabra_1=17 celda_palabra_2=18 celda_palabra_3=19 celda_palabra_4=20 celda_palabra_5=21 celda_palabra_6=22 celda_palabra_7=23 celda_palabra_8=24 celda_vocal=25 celda_consonante=26 celda_resultado=27 celda_next=28 celda_mas=29 celda_menos=30 celda_por=31 celda_entre=32 celda_mal=33 celda_max=33 celdas_string=[& "","","","","","","","","",& "","","","","","","",& "","","","","","","","","",& "V","C","",">","+","-","x","/","X"& ] celdas_string_vacio=[& "","","","","","","","","",& "","","","","","","",& "","","","","","","","","",& "V","C","",">","+","-","x","/","X"& ] celdas_x=[& 30,60,90,120,150,180,210,240,270,& 5,50,95,140,185,230,275,& 30,60,90,120,150,180,210,240,270,& 50,80,250,300,40,80,120,160,& 280& ] celdas_y=[& 20,20,20,20,20,20,20,20,20,& 150,150,150,150,150,150,150,& 50,50,50,50,50,50,50,50,50,& 200,200,100,200,100,100,100,100,& 200& ] celdas_w=[& 16,16,16,16,16,16,16,16,16,& 35,35,35,35,35,35,35,& 16,16,16,16,16,16,16,16,16,& 15,15,40,15,15,15,15,15,15& ] celdas_h=[& 21,21,21,21,21,21,21,21,21,& 21,21,21,21,21,21,21,& 21,21,21,21,21,21,21,21,21,& 21,21,21,21,21,21,21,21,21& ] celdas_visible=[& 0,0,0,0,0,0,0,0,0,& 0,0,0,0,0,0,0,& 0,0,0,0,0,0,0,0,0,& 0,0,0,1,0,0,0,0,0& ] celdas_clickable=[& 0,0,0,0,0,0,0,0,0,& 0,0,0,0,0,0,0,& 0,0,0,0,0,0,0,0,0,& 0,0,0,0,0,0,0,0,0& ] celdas_ceros=[& 0,0,0,0,0,0,0,0,0,& 0,0,0,0,0,0,0,& 0,0,0,0,0,0,0,0,0,& 0,0,0,0,0,0,0,0,0& ] label_score=0 label_help=1 label_objetivo=2 label_max=2 label_string=["","",""] label_x=[200,5,150] label_y=[200,280,200] label_vacio=["","",""] sub pinta_celdas local i local s cls for i=0 to celda_max if (celdas_visible(i)<>0) x=celdas_x(i) y=celdas_y(i) w=celdas_w(i) h=celdas_h(i) s=celdas_string(i) rect x, y, x+w, y+h at x+1, y print s fi next i for i=0 to label_max if (len(label_string(i))<>0) at label_x(i), label_y(i) print label_string(i) fi next i end sub tiempo local i while (len(inkey) <>0): wend for i=0 to 29 'for i=0 to 2 x=10+10*i delay 1000 rect x, 300, x+8, 310, filled k=inkey if (len(k)<>0) exit for fi next i end func click local i pen on while pen(0): wend while 1=1 if pen(0) x=pen(1) y=pen(2) for i=0 to celda_max xmini=celdas_x(i) xmaxi=celdas_x(i)+celdas_w(i) ymini=celdas_y(i) ymaxi=celdas_y(i)+celdas_h(i) if ( (celdas_clickable(i)<>0) && (x>xmini) && (xymini) && (y para continuar" pinta_celdas at 0, 100 print " Letras y Cifras 1.0" print " (c) 2006 Javier Sedano" print " Distribuido bajo la GNU GPL" c=click if (c=celda_next) c=0 else print "BUG": pause 3 fi end sub ver_score celdas_string=celdas_string_vacio celdas_visible=celdas_ceros celdas_visible(celda_next)=1 celdas_clickable=celdas_ceros celdas_clickable(celda_next)=1 label_string=label_vacio label_string(label_help)=& "Pulsa > para continuar" pinta_celdas at 0, 100 print " Ronda: "; ronda print " Score: "; score if (s>=0) print " Score de esta ronda: "; s fi c=click if (c=celda_next) c=0 else print "BUG": pause 3 fi end func cifras local i celdas_string=celdas_string_vacio celdas_visible=celdas_ceros celdas_clickable=celdas_ceros label_string=label_vacio label_string(label_help)="Piensa mientras hay tiempo" celdas_visible(celda_mas)=1 celdas_clickable(celda_mas)=1 celdas_visible(celda_menos)=1 celdas_clickable(celda_menos)=1 celdas_visible(celda_por)=1 celdas_clickable(celda_por)=1 celdas_visible(celda_entre)=1 celdas_clickable(celda_entre)=1 pinta_celdas for i=celda_numeros_0 to & celda_numeros_6 delay 500 celdas_visible(i)=1 celdas_clickable(i)=1 n=int(rnd*total_numeros) celdas_string(i)=numeros(n) pinta_celdas next i delay 1000 objetivo=int(rnd*899)+100 label_string(label_objetivo)=& str(objetivo) pinta_celdas tiempo label_string(label_help)="Usa +-x/ > para acabar" celdas_visible(celda_resultado)=1 celdas_clickable(celda_resultado)=0 celdas_visible(celda_next)=1 celdas_clickable(celda_next)=1 pinta_celdas operacion=0 c=click while (c <> celda_next) if ( (c>=celda_numeros_0) and & (c<=celda_numeros_6) & ) if (operacion=0) if (celdas_string(celda_resultado)& <>"") for i=celda_numeros_0 to & celda_numeros_6 if (celdas_string(i)="") celdas_string(i)=& celdas_string(celda_resultado) celdas_string(celda_resultado)& ="" exit for fi next i fi celdas_string(celda_resultado)=& celdas_string(c) celdas_string(c)="" elif (celdas_string(c)<>"") uno=val(& celdas_string(celda_resultado)) dos=val(& celdas_string(c)) if (operacion=celda_mas) res=uno+dos elif (operacion=celda_menos) res=uno-dos elif (operacion=celda_por) res=uno*dos elif (operacion=celda_entre) if ((uno%dos)=0) res=uno/dos else res=-1 fi else print "BUG" fi if (res<0) res=uno else celdas_string(c)="" fi celdas_string(celda_resultado)=& str(res) fi operacion=0 elif ( (c=celda_mas) or & (c=celda_menos) or & (c=celda_por) or & (c=celda_entre) & ) operacion=c else print "BUG": pause 3 fi pinta_celdas c=click wend res=val(& celdas_string(celda_resultado)) obj=val(& label_string(label_objetivo)) dif=abs(obj-res) if (dif=0) cifras=60 else cifras=int(30/log10(5*dif)) fi end func letras local i celdas_string=celdas_string_vacio celdas_visible=celdas_ceros celdas_clickable=celdas_ceros label_string=label_vacio label_string(label_help)="Elige V o C" celdas_visible(celda_vocal)=1 celdas_visible(celda_consonante)=1 celdas_clickable(celda_vocal)=1 celdas_clickable(celda_consonante)=1 for i=celda_palabra_0 to & celda_palabra_8 celdas_visible(i)=1 next i for i=celda_letras_0 to celda_letras_8 celdas_visible(i)=1 pinta_celdas c=click if (c=celda_vocal) n=int(rnd*total_vocales) celdas_string(i)=vocales(n) elif (c=celda_consonante) n=int(rnd*total_consonantes) celdas_string(i)=consonantes(n) else ? "BUG": pause 3 fi delay 250 pinta_celdas delay 250 next i label_string(label_help)="Piensa mientras hay tiempo" celdas_visible(celda_vocal)=0 celdas_visible(celda_consonante)=0 celdas_clickable(celda_vocal)=0 celdas_clickable(celda_consonante)=0 pinta_celdas tiempo label_string(label_help)="> para aceptar, X si te equivocaste" for i=celda_letras_0 to celda_letras_8 celdas_clickable(i)=1 next i celdas_visible(celda_next)=1 celdas_clickable(celda_next)=1 celdas_visible(celda_mal)=1 celdas_clickable(celda_mal)=1 letra=celda_palabra_0 pinta_celdas c=click while ( (c <> celda_next) and & (c <> celda_mal) ) if ( (c>=celda_letras_0) and & (c<=celda_letras_8) & ) celdas_string(letra)=& celdas_string(c) celdas_string(c)="" celdas_clickable(c)=0 if ((letra-1)>=celda_palabra_0) celdas_clickable(letra-1)=0 fi celdas_clickable(letra)=1 letra++ elif (c=(letra-1)) for i=celdad_letras_0 & to celda_letras_8 if (celdas_string(i)="") celdas_string(i)=celdas_string(c) celdas_clickable(i)=1 letra-- celdas_string(letra)="" celdas_clickable(letra)=0 if ((letra-1)>=celda_palabra_0) celdas_clickable(letra-1)=1 fi exit for fi next i else ? "BUG": pause 3 fi pinta_celdas c=click wend if (c=celda_next) letras=(letra-celda_palabra_0)^2 else letras=0 fi end randomize timer about score=0 s=-1 ronda="Inicio" ver_score for ronda=1 to 5 s=cifras score=score+s ver_score s=letras score=score+s ver_score next ronda ronda="Fin" s=-1 ver_score