Vous êtes sur la page 1sur 13

ProgramacinMicroLuaDS

Estructurabsica
ElcdigodeunvideojuegoenLuainvolucralacargadecontenidoyladefinicindevariables. Ejemplo:
s p r i t e=S p r i t e . n e w ( " H e r o i n e . p n g " ,1 6 ,1 8 ,V R A M ) b a c k g r o u n d=I m a g e . l o a d ( " B a c k g r o u n d M C . p n g " ,V R A M ) s c o r e=0 l i f e s=3

Tambinenestaprimerapartedelcdigoserecomiendaagregartodaslasfuncionesautilizar enelvideojuego.Porejemplo:
f u n c t i o np r i n t S c o r e ( s c o r e ) s c r e e n . p r i n t ( S C R E E N _ D O W N ,1 5 ,2 0 ," S c o r e :". .s c o r e ) e n d

Altenertodasestasdeclaracionesnecesariasparaelbuenfuncionamientodeljuegose procedeaimplementarelciclodevidadelvideojuego,elcualbsicamenteesunciclowhile hastaqueocurraunevento,porejemplopresionarelbotnStart:


w h i l en o tK e y s . n e w P r e s s . S t a r td o C o n t r o l s . r e a d ( ) -C d i g od e lv i d e o j u e g o r e n d e r ( ) e n d

LafuncinC o n t r o l s . r e a d ( ) permiteconocerelestadodelosbotonesolapantallatctil, mientrasquelafuncinr e n d e r ( ) nospermitedibujaropintarloselementosenpantalla. Dentrodeestecicloquedefinealjuegoseencuentranlocalizadasimplcitamentelasfunciones deactualizacin(Update)ypintado(Draw).

HolamundoenLua
Lonicoqueserequierehaceresescribirelsiguientecdigoencualquiereditordetextoy

guardarloconextensin.lua.
w h i l et r u ed o C o n t r o l s . r e a d ( ) s c r e e n . p r i n t ( S C R E E N _ U P ,1 0 ,1 0 ," H e l l ow o r l d . " ) r e n d e r ( ) e n d

EnseguidahayqueejecutarMicroLuaSimulator1 ,elegirlaopcinFile>Openyelegirelscript anteriorconextensin.lua.Elresultadoeselsiguiente:

LaejecucindeMicroLuaSimulatordependedecadasistemaoperativo,bsicamenteconsisteen ejecutarelarchivomls.

Ejemplosdecdigo2
Elpropsitodelossiguientesejemplosradicaenobservarlassimilitudesqueguardanla estructuradeunjuegoenLuaconlavistaenelframeworkXNA.

Cambiarcolordelbackground
c o l o r 1=C o l o r . n e w ( 1 0 ,1 0 ,2 0 ) c o l o r 2=C o l o r . n e w ( 3 1 ,3 1 ,3 1 )-c o l o rb l a n c o w h i l en o tK e y s . n e w P r e s s . S t a r td o C o n t r o l s . r e a d ( ) -P a n t a l l as u p e r i o r s c r e e n . d r a w F i l l R e c t ( S C R E E N _ U P ,0 ,0 ,S C R E E N _ W I D T H ,S C R E E N _ H E I G H T ,c o l o r 1 ) -P a n t a l l ai n f e r i o r s c r e e n . d r a w F i l l R e c t ( S C R E E N _ D O W N ,0 ,0 ,S C R E E N _ W I D T H ,S C R E E N _ H E I G H T ,c o l o r 2 ) s c r e e n . p r i n t ( S C R E E N _ U P ,1 0 ,1 0 ," H e l l ow o r l d . " ) r e n d e r ( ) e n d

Todoslosejemplossepuedenobtenerenlasiguientedireccin(documentados,listosparausarsey modificarse):https://docs.google.com/file/d/0B4FKTO6ZcDTvNW5Ic3hOekx2R2M/edit

Dibujarimgenes
c o l o r=C o l o r . n e w ( 1 0 ,1 0 ,2 0 ) i m a g e n=I m a g e . l o a d ( " I m a g e n e s / A y a n a m i . p n g " ,V R A M ) w h i l en o tK e y s . n e w P r e s s . S t a r td o C o n t r o l s . r e a d ( ) -B a c k g r o u n d s c r e e n . d r a w F i l l R e c t ( S C R E E N _ U P ,0 ,0 ,S C R E E N _ W I D T H ,S C R E E N _ H E I G H T ,c o l o r ) -D i b u j a ri m a g e n s c r e e n . b l i t ( S C R E E N _ U P ,3 0 ,2 0 ,i m a g e n ) r e n d e r ( ) e n d

Aplicarefectosaimgenes
Lassiguienteslneasdecdigoagreganlosefectosnombrados:
-E s c a l a ri m a g e n I m a g e . s c a l e ( i m a g e n ,7 2 ,2 4 6 )-n u e v oa n c h oyl a r g od el ai m a g e n -R o t a ri m a g e n I m a g e . r o t a t e ( i m a g e n ,4 7 0 )-r a d i a n e s( 0a5 1 1 ) I m a g e . r o t a t e D e g r e e ( i m a g e n ,3 3 0 )-g r a d o s( 0a3 6 0 ) -E f e c t oe s p e j o I m a g e . m i r r o r H ( i m a g e n ,t r u e )-b o o l e a n op a r aa c t i v a d o / d e s a c t i v a d o I m a g e . m i r r o r V ( i m a g e n ,t r u e ) -T i n t e I m a g e . s e t T i n t ( i m a g e n ,C o l o r . n e w ( 1 0 , 2 0 , 3 0 ))

Posicionarimgenes
Sobrecmoalinearocolocarimgenesenlaposicincorrectadelapantalla.
i m a g e n=I m a g e . l o a d ( " I m a g e n e s / A y a n a m i . p n g " ,V R A M ) a n c h o=I m a g e . w i d t h ( i m a g e n ) l a r g o=I m a g e . h e i g h t ( i m a g e n ) w h i l en o tK e y s . n e w P r e s s . S t a r td o C o n t r o l s . r e a d ( ) -B a c k g r o u n d s c r e e n . d r a w F i l l R e c t ( S C R E E N _ U P ,0 ,0 ,S C R E E N _ W I D T H ,S C R E E N _ H E I G H T ,C o l o r . n e w ( 1 0 , 1 0 ,2 0 ) ) -D i b u j a ri m a g e nc e n t r a d ad e ll a d od e r e c h o s c r e e n . b l i t ( S C R E E N _ U P ,0 ,( S C R E E N _ H E I G H T / 2 ) ( l a r g o / 2 ) ,i m a g e n )

-D i b u j a ri m a g e ne ne s q u i n ai n f e r i o rd e r e c h a s c r e e n . b l i t ( S C R E E N _ U P ,S C R E E N _ W I D T H a n c h o ,S C R E E N _ H E I G H T l a r g o ,i m a g e n ) -D i b u j a ri m a g e ne nc e n t r od ep a n t a l l a s c r e e n . b l i t ( S C R E E N _ U P ,( S C R E E N _ W I D T H / 2 ) ( a n c h o / 2 ) ,( S C R E E N _ H E I G H T / 2 ) ( l a r g o / 2 ) , i m a g e n ) r e n d e r ( ) e n d

Moverimgenesautomticamente
Cmohacermoverunaimagendeunladoaotro(horizontalmente)yquerebotedemaneraque nosesalgadelapantalla.
i m a g e n=I m a g e . l o a d ( " I m a g e n e s / A y a n a m i . p n g " ,V R A M ) a n c h o=I m a g e . w i d t h ( i m a g e n ) l a r g o=I m a g e . h e i g h t ( i m a g e n )

x=0 y=0 v e l o c i d a d=1 w h i l en o tK e y s . n e w P r e s s . S t a r td o C o n t r o l s . r e a d ( ) -A c t u a l i z a rc o o r d e n a d ax x=x+v e l o c i d a d -M a n t e n e rd e n t r od e le s p a c i od ep a n t a l l a i fx> =S C R E E N _ W I D T H a n c h oo rx< =0t h e n v e l o c i d a d=v e l o c i d a d*( 1 ) e n d -B a c k g r o u n d s c r e e n . d r a w F i l l R e c t ( S C R E E N _ U P ,0 ,0 ,S C R E E N _ W I D T H ,S C R E E N _ H E I G H T ,C o l o r . n e w ( 1 0 , 1 0 ,2 0 ) ) -D i b u j a ri m a g e n s c r e e n . b l i t ( S C R E E N _ U P ,x ,y ,i m a g e n ) r e n d e r ( ) e n d

Entradadelusuario
Cmointerpretarcuandoelusuariopresionalosbotonesolapantallatctilparamoverla imagenenelespaciodelapantalla.
i m a g e n=I m a g e . l o a d ( " I m a g e n e s / A y a n a m i . p n g " ,V R A M ) x=0 y=0 v e l o c i d a d=2 w h i l en o tK e y s . n e w P r e s s . S t a r td o C o n t r o l s . r e a d ( ) -" A C T U A L I Z A R " -U s a n d oe lc o n t r o lp a dp a r am o v e rl ai m a g e n i fK e y s . h e l d . U pt h e n y=y-v e l o c i d a d e n d i fK e y s . h e l d . D o w nt h e n

y=y+v e l o c i d a d e n d i fK e y s . h e l d . R i g h tt h e n x=x+v e l o c i d a d e n d i fK e y s . h e l d . L e f tt h e n x=x-v e l o c i d a d e n d -U s a n d oe ls t y l u sp a r am o v e rl ai m a g e n i fS t y l u s . h e l dt h e n x=S t y l u s . X y=S t y l u s . Y e n d -" D I B U J A R " -B a c k g r o u n d s c r e e n . d r a w F i l l R e c t ( S C R E E N _ D O W N ,0 ,0 ,S C R E E N _ W I D T H ,S C R E E N _ H E I G H T ,C o l o r . n e w ( 1 0 , 1 0 ,2 0 ) ) -D i b u j a ri m a g e n s c r e e n . b l i t ( S C R E E N _ D O W N ,x ,y ,i m a g e n ) r e n d e r ( ) e n d

Animacin
Elalgoritmodeanimacinsebasaentenerunspritesheetenelcualsedibujaunframe diferenteencadamomentoparacrearlailusindemovimiento. ElspritesheetdentrodelcdigonoestratadocomountipoImagesinocomountipoSprite. Losframesseenumeranautomticamenteapartirdelvalorceroycrearunaanimacinse limitaaindicarlasecuenciadeestosvalores.
s p r i t e=S p r i t e . n e w ( " I m a g e n e s / s p r i t e . p n g " ,2 4 ,3 2 ,V R A M )-c a d af r a m em i d e2 4 x 3 2p x . -C r e a rl a sa n i m a c i o n e s s p r i t e : a d d A n i m a t i o n ( { 0 , 1 , 2 , 1 } ,3 0 0 ) s p r i t e : a d d A n i m a t i o n ( { 3 , 4 , 5 , 4 } ,3 0 0 ) s p r i t e : a d d A n i m a t i o n ( { 6 , 7 , 8 , 7 } ,3 0 0 ) -A n i m a c i o n1 -A n i m a c i o n2 -A n i m a c i o n3

s p r i t e : a d d A n i m a t i o n ( { 9 , 1 0 , 1 1 , 1 0 } ,3 0 0 ) -A n i m a c i o n4 w h i l en o tK e y s . n e w P r e s s . S t a r td o

C o n t r o l s . r e a d ( ) -B a c k g r o u n d s c r e e n . d r a w F i l l R e c t ( S C R E E N _ U P ,0 ,0 ,S C R E E N _ W I D T H ,S C R E E N _ H E I G H T ,C o l o r . n e w ( 1 0 , 1 0 ,2 0 ) ) -M o s t r a ra n i m a c i o n1 s p r i t e : p l a y A n i m a t i o n ( S C R E E N _ U P ,1 0 ,1 0 ,1 ) -M o s t r a ra n i m a c i o n2 s p r i t e : p l a y A n i m a t i o n ( S C R E E N _ U P ,6 0 ,1 0 ,2 ) -M o s t r a ra n i m a c i o n3 s p r i t e : p l a y A n i m a t i o n ( S C R E E N _ U P ,1 1 0 ,1 0 ,3 ) -M o s t r a ra n i m a c i o n4 s p r i t e : p l a y A n i m a t i o n ( S C R E E N _ U P ,1 6 0 ,1 0 ,4 ) r e n d e r ( ) e n d

Colisiones
ElmanejodecolisionesenMicroLuaDSnoestimplementadoexplcitamente,asquesedebe implementardentrodeunafuncin. Acontinuacinsemuestraelpseudocdigoparacolisionesbasadasencajas(boundingbox):
b o o l D o B o x e s I n t e r s e c t ( B o x a , B o x b ) { r e t u r n ( a b s ( a . x b . x ) * 2 < ( a . w i d t h + b . w i d t h ) ) & & ( a b s ( a . y b . y ) * 2 < ( a . h e i g h t + b . h e i g h t ) ) }

Supondremosqueutilizaremosdosimgenesyqueremosdetectarcundohaycolisinentre ellas.Tambindiremosqueunadelasimgenesseencuentraestticamientrasquelaotrase puedecontrolarconlosbotonesostylus(comoelcdigoEntradadelusuariomostrado anteriormente)yencasodehabercolisinmostraremosunmensajedetexto.


i m a g e n=I m a g e . l o a d ( " I m a g e n e s / A y a n a m i . p n g " ,V R A M ) i m a g e n 2=I m a g e . l o a d ( " I m a g e n e s / K a w o r u . p n g " ,V R A M ) a n c h o=I m a g e . w i d t h ( i m a g e n ) l a r g o=I m a g e . h e i g h t ( i m a g e n ) x=0 y=0 v e l o c i d a d=2 x 2=1 5 0 y 2=5 0 a n c h o 2=I m a g e . w i d t h ( i m a g e n ) l a r g o 2=I m a g e . h e i g h t ( i m a g e n ) -D e t e c c i o nd ec o l i s i o n e s( b o u n d i n gb o x ) f u n c t i o nc o l l i s i o n D e t e c t i o n ( ) r e t u r n( ( m a t h . a b s ( x-x 2 )*2 )<( a n c h o+a n c h o 2 ) )a n d ( ( m a t h . a b s ( y-y 2 )*2 )<( l a r g o+l a r g o 2 ) ) e n d w h i l en o tK e y s . n e w P r e s s . S t a r td o C o n t r o l s . r e a d ( ) -" A C T U A L I Z A R " -C o d i g od e E n t r a d ad e lu s u a r i o p a r am o v e ri m a g e n -" D I B U J A R " -B a c k g r o u n d s c r e e n . d r a w F i l l R e c t ( S C R E E N _ D O W N ,0 ,0 ,S C R E E N _ W I D T H ,S C R E E N _ H E I G H T ,C o l o r . n e w ( 1 0 ,

1 0 ,2 0 ) ) -D i b u j a ri m a g e n e s s c r e e n . b l i t ( S C R E E N _ D O W N ,x ,y ,i m a g e n ) s c r e e n . b l i t ( S C R E E N _ D O W N ,x 2 ,y 2 ,i m a g e n 2 ) i fc o l l i s i o n D e t e c t i o n ( )t h e n s c r e e n . p r i n t ( S C R E E N _ D O W N ,1 0 ,1 0 ," C o l i s i o nd e t e c t a d a ! " ) e n d r e n d e r ( ) e n d