CONALEP Modulo POV! P"#"P Miguel $ngel %a&os 'rande Alu&nos (elen )arina 'arcs %a&*rez %eina Mndez D*az 'ru+o ,-. Carrera !nfor&/tica %e+orte de +ractica 00 Acti1idad En E2ui+o Pr/ctica00 A+licacin de &ate&/ticas +ara 3uego TiroAlPlato usando lengua3e de +rogra&acin" Pro+sito Ela4ora una a+licacin de 1ideo3uego del TiroAlPlato usando lengua3e de +rogra&acin +ara la a+licacin de conce+tos de geo&etr*a +lana" !ntroduccion En esta +r/ctica se 1er/ uno de los 3uegos &/s conocidos5 +arecido al de dis+arar a +atos5 +ero en esta ocasin son a +latos5 co&o se e6+lica en el +ro+sito de la +r/ctica5 se re2uiere utilizar de conoci&ientos &ate&/ticos +ara hacer el efecto de 2ue el +lato 1a 1olando +or la +antalla" #e +resenta a continuacin el cdigo utilizado5 la e6+licacin del cdigo se 1er/n en5 los co&entarios dentro del +rogra&a" Los co&entarios se encuentran en color A78L 9include :stdli4"h; << Para =rand= 9include :&ath"h; << Para =s2rt= 9include :allegro"h; <<#e declaran las constantes glo4ales 9define ANC(OPANTALLA >?- 9define ALTOPANTALLA ?-- 9define MA@%AD!OD!ANA ?A 9define M!N%AD!OD!ANA A 9define N8MD!ANA# 0? 9define MA@!NC%EM@D!ANA ?- 9define M!N!NC%EM@D!ANA 0- 9define %ETA%DO B <<Declara&os las 1aria4les glo4ales int Ta&anCoDianaActual5 nu&DianaActual5 +os@diana5 +osDdiana5 radioDiana5 incre&@diana5 incre&Ddiana5 acertado E -F << #i se acierta G; +lato nue1o long int +untos E -5 contadorActual E -F float a545cF << Para la +ar/4ola del +lato <<Ahora la rutina de inicializacin donde inicia&os en allegro e intenta&os entrar a &odo gr/fico""" int inicializaHI J allegroKinitHIF installKLeC4oardHIF installKti&erHIF installK&ouseHIF if HsetKgf6K&odeH'M@K#AME5 ANC(OPANTALLA5 ALTOPANTALLA5 -5 -I NE -I J setKgf6K&odeH'M@KTE@T5 -5 -5 -5 -IF allegroK&essageH =!nca+az de entrar a &odo graficoOnPsOn=5 allegroKerrorIF return 0F Q nu&DianaActual E 0F srandHti&eH-IIF shoRK&ouseHscreenIF return -F Q <<%utina +ara el nue1o nue1o +lato 1oid nue1oPlatoHI J int 6VerticePara4ola5 CVerticePara4olaF float +Para4olaF << 8n radio al azar entre el 1alor &/6i&o C el &*ni&o radioDiana E HrandHI P HMA@%AD!OD!ANA G M!N%AD!OD!ANAII S M!N%AD!OD!ANAF << La 1elocidad Hincre&ento de @I5 si&ilar incre&@diana E HrandHI P HMA@!NC%EM@D!ANA G M!N!NC%EM@D!ANAII S M!N!NC%EM@D!ANAF << Vrtice de la +ar/4ola5 cerca del centro en horizontal 6VerticePara4ola E ANC(OPANTALLA<? S HrandHI P .-I G ?-F << D &itad su+erior de la +antalla5 en 1ertical CVerticePara4ola E HrandHI P HALTOPANTALLA<?IIF << Calculo a5 4 C c de la +ar/4ola +Para4ola E ALTOPANTALLA<?F a E 0 < H?T+Para4olaIF 4 E G6VerticePara4ola < +Para4olaF c E HH6VerticePara4olaT6VerticePara4olaI < H?T+Para4olaI I S CVerticePara4olaF << Posicin horizontal 3unto &argen iz2uierdo +os@diana E radioDianaF << Posicin 1ertical segUn la +ar/4ola +osDdiana E aT+os@dianaT+os@diana S 4T+os@diana S cF Q <<%edi4u3ar +antalla""" 1oid redi4u3aPantallaHI J << Oculto ratn scareK&ouseHIF << #e 4orra +antalla clearK4it&a+HscreenIF << #incronizo con 4arrido +ara &enos +ar+adeos 1sCncHIF << #e di4u3a el +aisa3e a o4ser1ar rectfillHscreen5-5-5ANC(OPANTALLA5ALTOPANTALLAG.-5 &aLecolHB-5 B-5 ?AAIIF <<Cielo te6t+rintfHscreen5 font5 .5.5 +aletteKcolorV00W5 =Puntos Pd=5 +untosIF << Puntuacin rectfillHscreen5-5ALTOPANTALLAG.-5ANC(OPANTALLA5ALTOPANTALLA5 &aLecolH-5 0A-5 -IIF <<#uelo circlefillHscreen5 +os@diana5 +osDdiana5 radioDiana5 +aletteKcolorV0AWIF << Diana if Hnu&DianaActual :E N8MD!ANA#I J te6t+rintfHscreen5 font5 .50X-5 +aletteKcolorV0-W5 =Platos Pd=5 N8MD!ANA#G nu&DianaActualIF Q << %estantes5 si no aca4 unscareK&ouseHIF Q <<#e esta4lece la distancia entre dos +untos float distanciaHint 605 int 6?5 int C05 int C?I J return Hs2rtHH60G6?ITH60G6?I S HC0GC?ITHC0GC?II IF Q <<%utina de te&+orizacin 1olatile long int contador E -F 1oid au&entaContadorH1oidI J contadorSSF Q ENDKOMKM8NCT!ONHau&entaContadorIF <<Cuer+o del +rogra&a int &ainHI J << #e inicializan los intentos if HinicializaHI NE -I e6itH0IF << Blo2uea&os la 1aria4le C la funcin del te&+orizador LOC)K << En esta seccion se re+ite &ientras se &ue1e VA%!ABLEH contador IF LOC)KM8NCT!ONH au&entaContador IF << #e +one el te&+orizador en &archa cada 0- &ilisegundos installKintHau&entaContador5 0-IF do J << Ciclo 2ue re+ite el codigo +ara cada +lato nue1oPlatoHIF << Calculo su +osicin inicial redi4u3aPantallaHIF << D di4u3o la +antalla acertado E -F << Toda1*a no se ha acertado5 claro do J << Co&+rue4o el ratn if H&ouseK4 Y 0I J if HdistanciaH&ouseK65 +os@diana5 &ouseKC5+osDdianaI :E radioDianaI J +untos SE ANC(OPANTALLAG+os@dianaF acertado E 0F Q Q << #i Ca se ha +asado el retardo5 &ue1o if Hcontador ;E contadorActualS%ETA%DOI J contadorActual E contadorS%ETA%DOF +os@diana SE incre&@dianaF +osDdiana E aT+os@dianaT+os@diana S 4T+os@diana S cF redi4u3aPantallaHIF Q Q Rhile HH+os@diana :E ANC(OPANTALLA G radioDianaI YY Hacertado EE -IIF nu&DianaActual SSF << #e coloca la siguiente diana Q Rhile Hnu&DianaActual :E N8MD!ANA#IF redi4u3aPantallaHIF scareK&ouseHIF te6t+rintfHscreen5 font5 .-50--5 +aletteKcolorV?W5 =Partida ter&inada=IF unscareK&ouseHIF readLeCHIF return -F Q <T #e concluCe con la =&acro= 2ue +ide Allegro T< ENDKOMKMA!NHIF CONCL8#!ON Bueno esta +r/ctica fue algo co&+licada +uesto al uso de utilizar 1aria4les +ara no llegar a confundirnos en el &o&ento de realizar las funciones5 ta&4in se utilizan distintos rand co&o +ara el di/&etro del +lato C el de la +ar/4ola5 entonces nos da&os cuenta 2ue las &ate&/ticas nos aCudan &ucho5 concidero 2ue eso fue lo &as co&+licado Ca 2ue en lo de&/s fue solo usar un nuestra lgica C co&+render lo 2ue hac*a&os en cada 4lo2ue de instrucciones"