<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-18651756</id><updated>2026-04-17T22:13:54.987+02:00</updated><category term="BelgaTV"/><category term="Personal"/><category term="Chapuzas"/><category term="Fin del mundo"/><category term="Curiosidades"/><category term="Linux"/><category term="Videojuegos"/><category term="Tweet"/><category term="Quejas"/><category term="Valencia"/><category term="Xbox 360"/><category term="blender"/><category term="Fútbol"/><category term="Por fin una buena noticia"/><category term="anime"/><category term="Apple"/><category term="Chanchullos"/><category term="Críticas de cine"/><category term="Críticas de juegos"/><category term="Microsoft"/><category term="PS3"/><category term="Software Libre"/><category term="ps4"/><category term="tutoriales"/><category term="Política"/><category term="Wii"/><category term="Nintendo NX"/><category term="xbox one"/><category term="Sketchfab"/><category term="android"/><category term="manga"/><category term="Bélgica"/><category term="Ubuntu"/><category term="xbox series x"/><category term="crunchyroll"/><category term="Noticias"/><category term="Críticas de anime"/><category term="Tres canciones nightcore"/><category term="evo"/><category term="xbox"/><category term="profecías"/><category term="Nintendo"/><category term="inseguridad"/><category term="pc"/><category term="Compras del año"/><category term="devblog"/><category term="p2p"/><category term="Fotos"/><category term="PC Fútbol"/><category term="Windows"/><category term="spanishrevolution"/><category term="Compras 2024"/><category term="retro"/><category term="privativo pero gratis"/><category term="Críticas de mangas"/><category term="Google"/><category term="Sword Art Online"/><category term="Tres openings"/><category term="mangas del mes"/><category term="SGAE"/><category term="Búsquedas de la semana"/><category term="proyecto isekai"/><category term="EVO Japan"/><category term="Muerte a MSN Messenger"/><category term="PSP"/><category term="Tres waifus"/><category term="España"/><category term="Batallitas retro"/><category term="Colección de Postales"/><category term="SNES"/><category term="Sony"/><category term="Tres trailers"/><category term="belgaFM"/><category term="el karma me adora"/><category term="popup parade"/><category term="Brasil"/><category term="Compras mangas"/><category term="game boy"/><category term="mangas 2025"/><category term="wtf"/><category term="Gamecube"/><category term="Historias de la Universidad Politécnica"/><category term="Wii U"/><category term="e-sports"/><category term="estadísticas blog"/><category term="figuras ánime"/><category term="krystal"/><category term="ps5"/><category term="F1"/><category term="Mi colección de G.I. Joe"/><category term="That Time I Got Reincarnated as a Slime"/><category term="ankha"/><category term="gameplay"/><category term="lina"/><category term="mangas de la semana"/><category term="n64"/><category term="slayers"/><category term="Bandai Namco"/><category term="Granblue fantasy"/><category term="re:zero"/><category term="Dragon&#39;s Dogma"/><category term="Genshin Impact"/><category term="UPV"/><category term="Zelda"/><category term="EVO Japan 2019"/><category term="Space Kokoro Doki Doki Club"/><category term="Ya se vende"/><category term="breath of fire ii"/><category term="goblin slayer!"/><category term="psx"/><category term="tensura"/><category term="Aquella vez que me convertí en Slime"/><category term="High Elf Archer"/><category term="Minecraft"/><category term="aisha"/><category term="ariel"/><category term="atelier"/><category term="dark arisen"/><category term="erufu"/><category term="frases de mangas"/><category term="mac"/><category term="rejugando"/><category term="retro-mac"/><category term="shion"/><category term="street fighter"/><category term="tanya"/><category term="windows 9X"/><category term="Consolas"/><category term="ETA"/><category term="Game Boy Advance"/><category term="Katt"/><category term="Midna"/><category term="Nier"/><category term="Nintendo 3DS"/><category term="Ys"/><category term="capcom"/><category term="div games studio"/><category term="frieren"/><category term="gawr gura"/><category term="in/spectre"/><category term="kde"/><category term="macos"/><category term="pickups manga del mes"/><category term="ranma"/><category term="square enix"/><category term="tales of"/><category term="twilight princess"/><category term="vlog"/><category term="Copyleft"/><category term="EVO Japan 2018"/><category term="Fedora"/><category term="Inocentada"/><category term="Tales of Symphonia"/><category term="Tira cómica"/><category term="aprendiendo python"/><category term="atelier ryza"/><category term="breath of fire"/><category term="dana 2024"/><category term="datos curiosos"/><category term="evo japan 2020"/><category term="memorias de un exgamer"/><category term="miHoYo"/><category term="mushoku tensei"/><category term="opensuse"/><category term="opera"/><category term="rejugando breath of fire ii"/><category term="sega"/><category term="street fighter v"/><category term="sylvie"/><category term="xenoblade"/><category term="Alfafar"/><category term="Animal Crossing"/><category term="Backstabbed in a Backwater Dungeon"/><category term="CD&#39;s comprados"/><category term="Carrefour"/><category term="Compras 2025"/><category term="Diferencias"/><category term="Firefox"/><category term="Fotos 3DS"/><category term="How NOT to Summon a Demon Lord"/><category term="Inquisición"/><category term="Ivrea"/><category term="Megadrive"/><category term="Microsoft adora GNU"/><category term="No compraré DRM"/><category term="Personajes que nos marcaron"/><category term="Rent-A-Girlfriend"/><category term="SteamLink"/><category term="Super Nintendo"/><category term="Tensei Shitara Slime Datta Ken"/><category term="Umm... sexy"/><category term="alita"/><category term="bromas"/><category term="censura"/><category term="hololive"/><category term="hyperkin"/><category term="iPhone"/><category term="kimetsu no yaiba"/><category term="last recollection"/><category term="pegi"/><category term="playstation 4"/><category term="reparaciones"/><category term="retron sq"/><category term="rimur tempest"/><category term="selectavisión"/><category term="steam"/><category term="steins;gate"/><category term="tanya degurechaff"/><category term="twitter"/><category term=".net"/><category term="Antena3"/><category term="Ataque a los titanes"/><category term="Atlus"/><category term="Baloncesto"/><category term="Blackberry"/><category term="Bugs"/><category term="Calidad gráfica consolas retro"/><category term="Capcom arregla tu web de una vez"/><category term="Chainsaw Man"/><category term="Desarrollo de videojuegos"/><category term="Dot TK = mal servicio"/><category term="El clarín del General Failure"/><category term="Flyff"/><category term="Fnac"/><category term="Gimp"/><category term="Humor"/><category term="Jarabe de Palo"/><category term="Juevos viejunos guays"/><category term="Kotoko Iwanaga"/><category term="Miss Kobayashi’s Dragon Maid"/><category term="Modificaciones del blog"/><category term="Nights of azure"/><category term="NihongoGamer"/><category term="Novell"/><category term="PC Liga"/><category term="París"/><category term="Persona 5"/><category term="Rimuru"/><category term="SGAE = MacGiver"/><category term="Sebas Game Station"/><category term="Shining (saga)"/><category term="So I&#39;m a Spider so what?"/><category term="Tales of Xillia"/><category term="Tekken"/><category term="Tekken 7"/><category term="Trailer de la vergüenza"/><category term="Vodafone"/><category term="XNA"/><category term="actores de voz"/><category term="asciialiens"/><category term="carteles motivacionales"/><category term="claymore"/><category term="dango soccer"/><category term="danmachi"/><category term="death end re;quest"/><category term="destripando la serie"/><category term="doblaje"/><category term="dreamcast"/><category term="ebay"/><category term="evercade"/><category term="evo 2019"/><category term="evo 2020"/><category term="final fantasy"/><category term="gally"/><category term="god eater 3"/><category term="godot"/><category term="gog.com"/><category term="gunnm"/><category term="halo"/><category term="hype"/><category term="iTunes"/><category term="jackass"/><category term="joy of tech"/><category term="konosuba"/><category term="metaphor: refantazio"/><category term="moiré"/><category term="nazuna"/><category term="neptunia"/><category term="oni"/><category term="overlord"/><category term="portada"/><category term="rejugando tales of grace"/><category term="s3rl"/><category term="seafile"/><category term="shangri-la frontier"/><category term="star ocean"/><category term="tales of grace"/><category term="threads"/><category term="uzaki chan"/><category term="valve"/><category term="vida útil de juegos"/><category term="vtuber"/><category term="youtube"/><category term="2k games"/><category term="3djuegos"/><category term="Anda ya"/><category term="Análisis de tiendas"/><category term="Apparently Disillusioned Adventurers Will Save the World"/><category term="Attack on titans 2"/><category term="Avatar"/><category term="Bethesda"/><category term="Billgates"/><category term="Censura Blogger"/><category term="Crunchyroll Anime Awards"/><category term="Críticas de comida"/><category term="Críticas de cómics"/><category term="Críticas de dibujos"/><category term="Dango y Hamster"/><category term="Dell"/><category term="Eiyuden Chronicle: Hundred Heroes"/><category term="El amigo americano"/><category term="Europa"/><category term="FIFA 17"/><category term="FIFA 98"/><category term="FSM"/><category term="FX Interactive"/><category term="Fabiniku"/><category term="GB Studio Magazine"/><category term="GTA IV"/><category term="Google+"/><category term="Guilty gear"/><category term="HD-DVD vs Blu-Ray"/><category term="Happy Console Gamer"/><category term="Jahy"/><category term="Jon Stewart"/><category term="Jump Force"/><category term="Lista"/><category term="Llavero Alphonse"/><category term="Los diarios de la boticaria"/><category term="Luxemburgo"/><category term="Maomao"/><category term="Meet Linux"/><category term="Mega Drive Mini"/><category term="Mitsuri kanroji"/><category term="Mortal Kombat"/><category term="Mortal Kombat 11"/><category term="Nezuko Kamado"/><category term="Nier Automata"/><category term="Nintenderos"/><category term="Nintendo DS"/><category term="Onyx Equinox"/><category term="Osu! Tatakae! Ouendan"/><category term="Otherworlder"/><category term="Ouya"/><category term="PC Fútbol 8"/><category term="PSOE"/><category term="Palestina"/><category term="Patentes del software"/><category term="Persona"/><category term="Persona 3"/><category term="Persona 3 Reload"/><category term="Podemos"/><category term="Polònia"/><category term="Praey for the gods"/><category term="Prensa seria"/><category term="Rajoy"/><category term="Rap"/><category term="Rebajas"/><category term="Recore"/><category term="Recuerdos"/><category term="Reincarnated as a sword"/><category term="Reyes magos"/><category term="Rimur"/><category term="Rimuru Tempest"/><category term="SPAM"/><category term="Sebas Moncho&#39;s Asteroid"/><category term="Skeleton Knight in Another World"/><category term="Spectrum"/><category term="Star Ocean V"/><category term="Steve Ballmer"/><category term="Super Mario 64"/><category term="Sátira"/><category term="TNSE"/><category term="Telefonía móvil"/><category term="That Time I Got Reincarnated as a Slime ISEKAI Chronicles"/><category term="That Time I Got Reincarnated as a Slime banpresto"/><category term="The Apothecary Diaries"/><category term="The Rising of The Shield Hero"/><category term="Theme Park"/><category term="Thw Dawn of The Witch"/><category term="Tux"/><category term="Ubuntu Feisty Fawn"/><category term="Una de espías"/><category term="Unity"/><category term="VR Chat"/><category term="Vendetta"/><category term="Vgchartz"/><category term="Vivienda"/><category term="Xrd Rev 2"/><category term="Ys VIII"/><category term="Zero Two"/><category term="akira"/><category term="analogue"/><category term="analogue pocket"/><category term="analogue3d"/><category term="anime box"/><category term="arms"/><category term="astrofísica"/><category term="atelier lydie &amp; suelle"/><category term="atelier sophie"/><category term="atelier yumia"/><category term="audio"/><category term="avance"/><category term="bangladesh"/><category term="barrapunto"/><category term="bases de datos"/><category term="bash"/><category term="blazblue"/><category term="blazblue: cross tag battle"/><category term="blockbuster"/><category term="blogger"/><category term="borja pavón"/><category term="bravely default 2"/><category term="breath of fire iv"/><category term="catra"/><category term="chromebook"/><category term="clare"/><category term="compile hearts"/><category term="comunicado"/><category term="configuración equipo"/><category term="conspiraciones"/><category term="corpus documentario"/><category term="corr"/><category term="cripto-monedas"/><category term="cyberpunk 2077"/><category term="cyberpunk: Edgerunners"/><category term="darksiders"/><category term="darksiders iii"/><category term="darling in the franxx"/><category term="death stranding"/><category term="descargas digitales"/><category term="devir"/><category term="dinamic"/><category term="dinamic multimedia"/><category term="dixie"/><category term="django"/><category term="dragon ball fighterz"/><category term="dragon quest"/><category term="drumsy"/><category term="ea"/><category term="ebooks"/><category term="ecc"/><category term="eiyuden chronicle"/><category term="entrando en el &quot;lore&quot;"/><category term="epic"/><category term="espacio exterior"/><category term="especulación"/><category term="estanterías"/><category term="evo 2018"/><category term="f-zero"/><category term="fable"/><category term="fales of graces f"/><category term="fantasian"/><category term="fifa 16"/><category term="figuritas"/><category term="final fantasy vii"/><category term="fire force"/><category term="forza horizon 4"/><category term="francia"/><category term="fumination"/><category term="galapagos rpg"/><category term="gantz"/><category term="gate"/><category term="gatia"/><category term="gb studio"/><category term="gears of war"/><category term="gpl"/><category term="gta 3"/><category term="gta v"/><category term="gunnm last order"/><category term="gunvalkyrie"/><category term="hackers"/><category term="half life 2"/><category term="he Great Jahy Will Not Be Defeated!"/><category term="heritage auctions"/><category term="heroclix"/><category term="hestia"/><category term="hinata tachibana"/><category term="hobby consolas"/><category term="howto"/><category term="hybrid heaven"/><category term="idea factory"/><category term="ikea"/><category term="illusion"/><category term="intelPhone"/><category term="irrelevante"/><category term="japón"/><category term="joeur de grenier"/><category term="jonu media"/><category term="joueur de grenier"/><category term="jujutsu kaisen"/><category term="karan"/><category term="karl jobst"/><category term="kill la kill"/><category term="king of fighters"/><category term="king of fighters XIV"/><category term="kojima"/><category term="konfabulator"/><category term="kyokousuiri"/><category term="la jefa"/><category term="limited Run"/><category term="listillos"/><category term="luto"/><category term="lylatwars"/><category term="mac mini"/><category term="madden"/><category term="made in abyss"/><category term="makima"/><category term="marbella vice"/><category term="maverick"/><category term="milin"/><category term="milin nava"/><category term="millim"/><category term="millim nava"/><category term="minus8"/><category term="modelos 3d de 2024"/><category term="modelos del año"/><category term="modern vintage gamer"/><category term="monolith soft"/><category term="motivacional"/><category term="msdos"/><category term="mvg"/><category term="my dress up darling"/><category term="nagatoro"/><category term="nasa"/><category term="nelke"/><category term="neo-geo"/><category term="nights of azure 2"/><category term="ninja gaiden"/><category term="no me rayes nagatoro"/><category term="noeve grafx"/><category term="oracle"/><category term="p4w3r"/><category term="perfect dark"/><category term="pipas"/><category term="plagio"/><category term="playstation 5"/><category term="pos vale pos bueno pos me alegro"/><category term="programación"/><category term="ps2"/><category term="psvita"/><category term="qr"/><category term="raspberry pi"/><category term="rebecca"/><category term="redes sociales"/><category term="regalo_lectores"/><category term="repros"/><category term="retrotink"/><category term="revistas de videojuegos"/><category term="rodolfo marscarpone"/><category term="rule of rose"/><category term="ryuko matoi"/><category term="saofd"/><category term="sasel"/><category term="scott pilgrim"/><category term="secret of mana"/><category term="sexy cosplay doll"/><category term="shadow"/><category term="shadow warriors"/><category term="sharepoint"/><category term="she-ra"/><category term="shenmue"/><category term="shenmue 2"/><category term="shogo"/><category term="skyrim"/><category term="smash bros."/><category term="soulcalibur"/><category term="soulcalibur vi"/><category term="spinecard"/><category term="splatoon"/><category term="splatoon 2"/><category term="spy x family"/><category term="sql"/><category term="stadia"/><category term="starfox"/><category term="stromae"/><category term="suikoden"/><category term="sí soy una araña"/><category term="tachibana"/><category term="terrorismo"/><category term="the elder scrolls"/><category term="the initiative"/><category term="the witcher"/><category term="the witcher 3"/><category term="timos"/><category term="tiny hellwing"/><category term="tira de ecol"/><category term="to your eternity"/><category term="tokyo mirage sessions #fe"/><category term="troyano casero"/><category term="twitter-topic"/><category term="ubisoft"/><category term="ultramarinos"/><category term="unrwa"/><category term="vandal"/><category term="vhs"/><category term="videoclip"/><category term="virtualbox"/><category term="virtuanestor"/><category term="vivi"/><category term="vr"/><category term="vrchat"/><category term="wata games"/><category term="welcome to the nhk"/><category term="wikipedia"/><category term="xfce"/><category term="ys xi"/><category term="yuri on ice"/><category term="¿qué tiene de malo intentar ligar en una mazmorra?"/><category term="チェンソーマン"/><category term="ファ美肉"/><category term="マキマ"/><category term="岩永琴子"/><category term="橘 日向"/><category term="異世界美少女受肉おじさんと"/><category term="紫苑"/><category term="虚構推理"/><category term="転生したらスライムだった件"/><title type='text'>El general Failure, leo tu disco duro</title><subtitle type='html'>Blog independiente de un informático pro-Linux.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.elgeneralfailure.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3006</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18651756.post-9032906000730619760</id><published>2026-04-16T23:08:00.003+02:00</published><updated>2026-04-16T23:08:49.218+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="final fantasy"/><category scheme="http://www.blogger.com/atom/ns#" term="final fantasy vii"/><category scheme="http://www.blogger.com/atom/ns#" term="pc"/><category scheme="http://www.blogger.com/atom/ns#" term="windows 9X"/><title type='text'>Rosebud</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Hoy he recibido mi &quot;Rosebud&quot;, el Final Fantasy VII para PC, en su formato bigbox distribuida por Proein en España. Este título se trató de uno de los primeros juegos que compré con mi propio dinero, ocupó un lugar destacado en mi tiempo libre durante el inicio del instituto, llegando a dedicarle un considerable número de horas nocturnas.  Alcancé el nivel máximo de 99 con todos los personajes, excepto Aerith, y completé todas las &quot;Armas&quot; (nombre de una serie de enemigos finales ocultos) y me hice con todas las materias posibles. Y es que lo acabé malvendiendo y aún recuerdo con claridad el nombre del compañero al que se lo vendí, decisión que he lamentado en numerosas ocasiones.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGC1ITQ3FYc1bdrNe_QwkuNHAIFohonMqx-tJld0zQX7l3JDnQkw1XW9NlhqS2TaII7ZxyJBFCgFtj-JpBQAFQ959IdpMeNuZJpSTA_QsB798Xb5ROO2VqPK8nNHbxpr17hCucD0aF7mFxK8Wm3tsnWwO9WneRRqZsTqFQzLB4mUCkAo24qz6_/s4032/IMG_9666.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGC1ITQ3FYc1bdrNe_QwkuNHAIFohonMqx-tJld0zQX7l3JDnQkw1XW9NlhqS2TaII7ZxyJBFCgFtj-JpBQAFQ959IdpMeNuZJpSTA_QsB798Xb5ROO2VqPK8nNHbxpr17hCucD0aF7mFxK8Wm3tsnWwO9WneRRqZsTqFQzLB4mUCkAo24qz6_/w480-h640/IMG_9666.jpeg&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Tras años buscando y alucinar con los precios, finalmente lo encontré en Wallapop a un monto razonable. Si bien se encontraba en mal estado y carecía del manual de instrucciones, estos inconvenientes no me supusieron un obstáculo, dado que el ejemplar que poseía en aquella época tampoco se encontraba en óptimas condiciones y aún conservo el manual de instrucciones.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiCBlQRLvtspHBCObkW2VqOQqKx2PfwvcTon65kPZlN9WxhW4lWCAACDMWTF2LzUTFi7pgG9WZMZMFxaQ8Tq2YzBLv9DJoI66-__I_QvEf2NquR2jufHq9z9QKzDJ4EQZrNDx71CnG7FauEXFJoFM1vyb-bpxhSoWjmWmlUKfqjl9ZeUJEK3S0/s4032/IMG_9669.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiCBlQRLvtspHBCObkW2VqOQqKx2PfwvcTon65kPZlN9WxhW4lWCAACDMWTF2LzUTFi7pgG9WZMZMFxaQ8Tq2YzBLv9DJoI66-__I_QvEf2NquR2jufHq9z9QKzDJ4EQZrNDx71CnG7FauEXFJoFM1vyb-bpxhSoWjmWmlUKfqjl9ZeUJEK3S0/w300-h400/IMG_9669.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyVJS_E6U6Qi5WhJd4w9REx7azLbUiWC0zj5oun_c58Pm6pdm-W_TTnQGaJN0KuZsBdzi-tCYB-mqB8-DqhhE6SolaP7GES79nM877J27SejnUOqnRzCHFYhDdUJmk44KNrFhdT-HkzfdMasbcpaX0LMev_zjmE3csVgTUDzVrcZ6VBl0usqUb/s4032/IMG_9670.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyVJS_E6U6Qi5WhJd4w9REx7azLbUiWC0zj5oun_c58Pm6pdm-W_TTnQGaJN0KuZsBdzi-tCYB-mqB8-DqhhE6SolaP7GES79nM877J27SejnUOqnRzCHFYhDdUJmk44KNrFhdT-HkzfdMasbcpaX0LMev_zjmE3csVgTUDzVrcZ6VBl0usqUb/w300-h400/IMG_9670.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIlgsPeDh_4lPPWvsGtqLl_sWjoonsvtJrXXjBy_hiRQFKw7vMMT9leriKWw4xH5zQ1OcRjpeZtiVnLhwZa8ffwCWChb1FwtLXwIU0uLr6V5oNfEXjVEHTcwTgFzid5qocZ8GIEo6JoSGAWMeznU7fC4K-mcTjN0xtFWLxjZm9X0F9ogO0yohc/s4032/IMG_9664.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIlgsPeDh_4lPPWvsGtqLl_sWjoonsvtJrXXjBy_hiRQFKw7vMMT9leriKWw4xH5zQ1OcRjpeZtiVnLhwZa8ffwCWChb1FwtLXwIU0uLr6V5oNfEXjVEHTcwTgFzid5qocZ8GIEo6JoSGAWMeznU7fC4K-mcTjN0xtFWLxjZm9X0F9ogO0yohc/w640-h480/IMG_9664.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3N8FhDTtwLjRGImko9LeFCfePQwpvqnYZuQ0qktYfUObEyeXFdOoRMkE8RuOG4Lb4iOOlt3yfbJ1XkTvdKoKGLyzJlRjqWMGUBYBFU7bMCTGte47O25aruQ_u_bJjrq1S1wZ6h5I7tpNvZSp81tVaMmMyULbucQVm_izMKA7flbLhKEUga-i7/s4032/IMG_9665.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3N8FhDTtwLjRGImko9LeFCfePQwpvqnYZuQ0qktYfUObEyeXFdOoRMkE8RuOG4Lb4iOOlt3yfbJ1XkTvdKoKGLyzJlRjqWMGUBYBFU7bMCTGte47O25aruQ_u_bJjrq1S1wZ6h5I7tpNvZSp81tVaMmMyULbucQVm_izMKA7flbLhKEUga-i7/w640-h480/IMG_9665.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6URu9KU9z7JwCVfGqGlGWW0XdIiuOlxcIou3R8SPRllW33nC-GVtKlx8cT8VpNRcx3ed-GG3JoqJq-34gTS7h6IuVjYQcnoLr2wCvSJQjWGCDlP0vzYOcddj7iUD_I3e0IamRmSTIWJvDbTYxXcBWxGQwPrdJWWZgTD4ff38Zyx_0eqdqyYNG/s4032/IMG_9671.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6URu9KU9z7JwCVfGqGlGWW0XdIiuOlxcIou3R8SPRllW33nC-GVtKlx8cT8VpNRcx3ed-GG3JoqJq-34gTS7h6IuVjYQcnoLr2wCvSJQjWGCDlP0vzYOcddj7iUD_I3e0IamRmSTIWJvDbTYxXcBWxGQwPrdJWWZgTD4ff38Zyx_0eqdqyYNG/w300-h400/IMG_9671.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaqO35dgS0G5rHK71Stk2Gs0XKLEYTzxK7yj7P7aQUulChxGVZeBIZGYM61gpjBxVHONtzWuFHGmkLFoU-AWkFDYc6rINErQzvjEyalEXi5SevVMnN2PUZ7wcnGzKgIKLYY5G6cJZBsAl56YyXCt_QjnC9H0Yiytd27dFfcoQ10ESQ9dgdwmqM/w300-h400/IMG_9663.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWj-VrR5gGBFR4PNBD2qox4sIj8ZNv1pngpFsbf8xRZKa4TbCCuzj6796ChyphenhyphenDcrz8fognxUSFCCBbnbkSv1RgcCpm7jms_ZPKGm76_qHb7hBWvE1FtP-GQoIYm__Nk9HUXT24oELD39i0VoY7YMq55cm0fV-KJPUv49fZ-ggrtTNJzgi7xhkTy/w640-h480/IMG_9672.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3200gkOkLbvELRLSUJc83hyaTF-h4CjzZnfU12QEPEs9Uf7Vbg8KZAMfqN4Z1pyXrnszNjZCXr36RisY5SopdGBQB2yOvUKPgheDYT9DmyySWoLv8HPK9GmcOKZdfrrUh6uVcONtZ-z8tB0KVYlt5l4y4nNO2pkFF-vKexU8g9HPA-KFpBwi-/s4032/IMG_9673.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3200gkOkLbvELRLSUJc83hyaTF-h4CjzZnfU12QEPEs9Uf7Vbg8KZAMfqN4Z1pyXrnszNjZCXr36RisY5SopdGBQB2yOvUKPgheDYT9DmyySWoLv8HPK9GmcOKZdfrrUh6uVcONtZ-z8tB0KVYlt5l4y4nNO2pkFF-vKexU8g9HPA-KFpBwi-/w300-h400/IMG_9673.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit13g79pKpYb-fl6yeSQRS4IxzN6lq1Cd5gtFCthRq8XXeVfkjzeFuZFoRfEb5IJP53w5e2381l0xL0wQbjjF6Qyysfn-6nvcWaH3piV0scHjh8JmOzHB-NbYvOXAEZZq8-tJzqX4EczdCuME2ZKHM6mkbWpToywOqusG8oRGk63wozr4qeZ4w/s4032/IMG_9674.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit13g79pKpYb-fl6yeSQRS4IxzN6lq1Cd5gtFCthRq8XXeVfkjzeFuZFoRfEb5IJP53w5e2381l0xL0wQbjjF6Qyysfn-6nvcWaH3piV0scHjh8JmOzHB-NbYvOXAEZZq8-tJzqX4EczdCuME2ZKHM6mkbWpToywOqusG8oRGk63wozr4qeZ4w/w300-h400/IMG_9674.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2026/04/rosebud.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/9032906000730619760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/9032906000730619760'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2026/04/rosebud.html' title='Rosebud'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGC1ITQ3FYc1bdrNe_QwkuNHAIFohonMqx-tJld0zQX7l3JDnQkw1XW9NlhqS2TaII7ZxyJBFCgFtj-JpBQAFQ959IdpMeNuZJpSTA_QsB798Xb5ROO2VqPK8nNHbxpr17hCucD0aF7mFxK8Wm3tsnWwO9WneRRqZsTqFQzLB4mUCkAo24qz6_/s72-w480-h640-c/IMG_9666.jpeg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-2037326463693749739</id><published>2026-04-14T23:57:00.003+02:00</published><updated>2026-04-15T13:14:54.939+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dango soccer"/><category scheme="http://www.blogger.com/atom/ns#" term="devblog"/><title type='text'>Dango Soccer. Build: 0.26.04.14 - ALPHA - Emisario EDITION</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Supongo que habréis notado que me he ausentado del blog durante los últimos meses. Esta ausencia no se debe a una falta de deseo por retomar la escritura, sino a circunstancias específicas. De hecho, tengo una entrada preparada para Div Games Studio.&amp;nbsp; Sin embargo, en mi trabajo fui subcontratado para crear desde cero una app en React, tecnología en la que no me considero experto y esta situación me ha generado un nivel considerable de agotamiento. No obstante, para animarme, durante mi tiempo libre de estos meses opté por retomar el desarrollo del clon de PC Fútbol que estoy llevando a cabo con Godot .NET. A continuación, les presento un resumen cómo está quedando: &lt;a href=&quot;https://www.youtube.com/watch?v=Hyy2Hx2vlJ0&quot;&gt;https://www.youtube.com/watch?v=Hyy2Hx2vlJ0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/Hyy2Hx2vlJ0&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2026/04/dango-soccer-build-0260414-alpha.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/2037326463693749739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/2037326463693749739'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2026/04/dango-soccer-build-0260414-alpha.html' title='Dango Soccer. Build: 0.26.04.14 - ALPHA - Emisario EDITION'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Hyy2Hx2vlJ0/default.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-6719366568974515924</id><published>2026-02-04T01:33:00.001+01:00</published><updated>2026-02-04T21:47:48.305+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="devblog"/><category scheme="http://www.blogger.com/atom/ns#" term="div games studio"/><category scheme="http://www.blogger.com/atom/ns#" term="tiny hellwing"/><title type='text'>¿Aprendiendo a programar para MS-DOS con DIV2 Games Studio? ¡Hagámos un bullet hell! (capítulo 3)</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmYr2-dYEaj-cbLSeseka9ciWX2pyumcAPVU0ClzfPzgN97cnPwwM8TCNAJAYh9dQ9wq4GSEp4sXuGM2SeDjmqFCnA4TobFbkEVPUEEfL1ntAf5zF3yCGGaMhCBh23fQZrrVtf8X3DysiEmqs2es-uU2IBA0YGF5wmj0mUUcy42HW6fB66f-4a/s640/000HD.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;400&quot; data-original-width=&quot;640&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmYr2-dYEaj-cbLSeseka9ciWX2pyumcAPVU0ClzfPzgN97cnPwwM8TCNAJAYh9dQ9wq4GSEp4sXuGM2SeDjmqFCnA4TobFbkEVPUEEfL1ntAf5zF3yCGGaMhCBh23fQZrrVtf8X3DysiEmqs2es-uU2IBA0YGF5wmj0mUUcy42HW6fB66f-4a/w640-h400/000HD.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En esta tercera entrega de la serie de programación de &lt;i&gt;DIV&lt;/i&gt;, continuaremos con el enfoque establecido en la entrada anterior, partiendo de un prototipo básico y progresando gradualmente hacia la creación de un juego atractivo.... y en este caso tenemos incluso un juego COMPLETO (sí, en mayúsculas). Este capítulo incorpora el &lt;i&gt;feedback &lt;/i&gt;recibido de la entrada anterior y se centra en mejorar la legibilidad del código, asegurando que los cambios entre las distintas versiones del ejercicio sean fácilmente identificables y además esta vez lo he escrito en castellano. Aún así prepararos un bocadillo y un café bien cargado, que los ejemplos finales no son sencillos.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Si eres nuevo, o no estás familiarizado con &lt;i&gt;Div Games Studio&lt;/i&gt;, se trata de un entorno de programación de videojuegos para MS-DOS lanzado en 1998. Este lenguaje de programación es procedural, no orientado a objetos, y ofrece numerosas características atractivas para su época, tales como el uso de estructuras, punteros, reserva dinámica de memoria (con malloc/free) y una curva de aprendizaje relativamente sencilla. De hecho, mucha gente aprendió a programar con este lenguaje en España y se hizo tan popular a finales de los 90 que incluso llegaron a comercializarse revistas comerciales dedicados a este &lt;i&gt;framework&lt;/i&gt;.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Uno de los aspectos más destacados del &lt;i&gt;feedback &lt;/i&gt;recibido de la entrada anterior fueron las dudas sobre la utilidad de las estructuras, cómo diferenciar distintos tipos de enemigos o la eficiencia de implementar un proceso unificado para el dibujo, en lugar de permitir que cada instancia dibuje su propio gráfico. Esta reflexión me llevó a considerar el desarrollo de un juego de naves, similar a &lt;i&gt;Space Invaders&lt;/i&gt; o &lt;i&gt;Galaga&lt;/i&gt;, puesto que son elementos comunes en este tipo de juegos, donde debemos de dibujar grandes tipos de enemigos, de distintos tipos y evitando que el juego se ralentice.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Así que empecé a trabajar en un programa llamado &quot;vshooter&quot; de &quot;Vertical Shooter&quot;, en honor al género de este tipo de juegos de marcianitos. Como siempre, recordad que todos estos ejemplos de código los tengo subidos en mi Github (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT01.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT01.PRG&lt;/a&gt;).&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Y vamos con el primer ejemplo:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// TÍTULO:      VSHOOT01.PRG - Nave Jugador Simple&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// AUTOR:       Sebastian J. MONCHO MAQUET&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// FECHA:       18/01/2026&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// DESCRIPCIÓN: Versión simplificada con solo la nave del jugador y controles.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// NOTA:        Usa las flechas para mover la nave, espacio para disparar y ESC para salir.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Requiere la paleta DIV2.PAL en el mismo directorio.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Código y comentarios en castellano para facilitar la comprensión (por petición).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROGRAM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;vshooter&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Programa principal&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Arrancamos el juego a 320x200 a 60 FPS con la paleta cargada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;set_mode&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;m320x200&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 320x200&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;set_fps&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;load_pal&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;DIV2.PAL&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Creamos la nave del jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Bucle principal del juego&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Controla la nave del jugador.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Maneja el dibujo, movimientos y disparos en un bucle continuo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;vel&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Velocidad de movimiento&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Contador para controlar la frecuencia de disparos&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// El dibujo de la nave se compone de varias partes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_circulo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo del círculo de la nave&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo de la primera línea de la nave&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo de la segunda línea de la nave&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo de la tercera línea de la nave&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Posición inicial de la nave en el centro inferior de la pantalla&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;160&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Centro horizontal&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;170&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Cerca del fondo&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Bucle principal del jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujamos la nave del jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Borrar los dibujos anteriores&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_circulo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_circulo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea1&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea2&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea3&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujar la nave&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_circulo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;31&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea1&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;31&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea2&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;31&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nave_linea3&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;31&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movimiento de la nave&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;_left&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;vel&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;_right&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;310&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;vel&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;_up&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;vel&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;_down&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;190&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;vel&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Disparar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;_space&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Crear bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Salir con ESC&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;_esc&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;))&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;EXIT&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;Gracias por jugar.&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Esperar al siguiente frame&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: bala_jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Controla el movimiento de una bala disparada por el jugador.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Se mueve hacia arriba y se elimina si sale de la pantalla.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo de la bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Borramos dibujo anterior si existe&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_draw&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujamos la bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_draw&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movemos la bala hacia arriba&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Eliminamos la bala si sale de la pantalla&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Esperar al siguiente frame&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Este ejemplo que os he puesto es terriblemente sencillo: Manejamos una especie de botijo azul, que se desplaza pulsando los cursores (las teclas de arriba/abajo/izquierda/derecha), dispara balas redondas pulsando espacio y salimos del juego pulsando escape. Ya está, no tiene nada más, tienes un proceso de jugador, un proceso de bala_jugador, ambos se dibujan en pantalla con primitivas gráficas (ni siquiera &lt;i&gt;sprites&lt;/i&gt;) y hacemos uso de una variable de &quot;tiempo_disparo&quot; para controlar que las balas se disparen por ráfagas.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi97pHdCpUg0Gj8U5AZ92DyMzh7URVOpcq_dpMbfztHQVb2m0p7lYetmUvcK0OeZZSz4FfIwUysXZas5igJWbcW2E8GoFREq38lt5Y6jWyVlXeXi25UqISLX_9w1W5OoIoJpmOKo9CElqSzs85iso_C8d_ZQFcDhYF_ZOjGwmR-0sqkHC3d_3Xt/s1504/Captura%20de%20pantalla%202026-02-03%20a%20las%2022.16.27.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi97pHdCpUg0Gj8U5AZ92DyMzh7URVOpcq_dpMbfztHQVb2m0p7lYetmUvcK0OeZZSz4FfIwUysXZas5igJWbcW2E8GoFREq38lt5Y6jWyVlXeXi25UqISLX_9w1W5OoIoJpmOKo9CElqSzs85iso_C8d_ZQFcDhYF_ZOjGwmR-0sqkHC3d_3Xt/w640-h528/Captura%20de%20pantalla%202026-02-03%20a%20las%2022.16.27.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Cosas chulas que no suelen verse: Si os fijáis en la bala_jugador, tenemos un bucle infinito (LOOP) que paramos con un RETURN. Aquí no actúa como &quot;BREAK&quot; del bucle, si no que indica que la ejecución del proceso acaba ahí. Sencillamente, cuando quieras forzar que una instancia deje de &quot;vivir&quot;, la puedes &quot;matar&quot; con un return.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Ahora vamos a añadir enemigos. De hecho, vamos a añadir 2, uno de cada tipo y tendrán patrones de movimiento distinto. Uno se desplazará de derecha a izquierda y de izquierda a derecha y cada vez que llegue a un extremo de la pantalla bajará ligeramente. El otro se moverá haciendo ligeros círculos, casi imperceptibles (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT02.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT02.PRG&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Para ello añadiremos una instancia de cada tipo de enemigo en el main:&amp;nbsp;&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROGRAM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;vshooter&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Programa principal&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Arrancamos el juego a 320x200 a 60 FPS con la paleta cargada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;set_mode&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;m320x200&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 320x200&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;set_fps&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;load_pal&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;DIV2.PAL&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Creamos la nave del jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;// Creamos 2 enemigos: uno tipo 1 y uno tipo 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;background-color: #6aa84f; color: white;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Bucle principal del juego&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; E implementamos ambos enemigos:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: enemigo_tipo1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Controla el comportamiento de un enemigo tipo 1.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Se mueve horizontalmente, dispara balas y verifica si muere o llega abajo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición inicial x.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición inicial y.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dirección inicial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_box&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo de la caja&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_circulo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo del círculo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujar enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_box&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_circulo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mover enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mover_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Salir si llega abajo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;210&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: enemigo_tipo2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Controla el comportamiento de un enemigo tipo 2.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Se mueve en círculos, dispara balas dirigidas y verifica si muere.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición inicial x.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición inicial y.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Ángulo inicial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_linea1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// IDs de dibujos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_linea2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_linea3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_linea4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_circulo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujar enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_linea1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_linea2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_linea3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_linea4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_circulo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mover enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mover_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Si os fijáis, a nivel de implementación son muy parecidos. Tienen sus 
parámetros y verificaciones propias, pero a su vez ambos tienen una estructura parecida, donde llamamos a un proceso de dibujo y controlamos su movimiento:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: dibujar_enemigo_tipo1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Dibuja el enemigo tipo 1, borrando los dibujos anteriores.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - box_offset: Puntero al ID de la caja.  -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - circulo_offset: Puntero al ID del círculo.  -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición x.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición y.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los punteros sirven para modificar las variables originales fuera de la función.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Si modificas una varariable del puntero dentro de la función, se refleja fuera también.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Sirve para evitar el uso de variables globales innecesarias.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los PROCESS se ejecutan en paralelo, mientras que las FUNCTION se ejecutan de forma secuencial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Es decir, hasta que no termine esta función, el proceso que lo llama queda bloqueado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;dibujar_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;box_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;circulo_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Borramos los dibujos del frame anterior&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Controlamos que existe ya una box y un círculo (ID != 0) antes de borrarlos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si no lo comprobamos, tendríamos una excepción en el primer FRAME y el juego se colgaría&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;box_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;box_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;circulo_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;circulo_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujamos el enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;box_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;114&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;circulo_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: mover_enemigo_tipo1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Maneja el movimiento horizontal del enemigo tipo 1, cambiando dirección al llegar a los bordes y descendiendo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x_offset: Puntero a la posición x. -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y_offset: Puntero a la posición y. -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - dir_offset: Puntero a la dirección (1 o -1). -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los punteros sirven para modificar las variables originales fuera de la función.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Si modificas una varariable del puntero dentro de la función, se refleja fuera también.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Sirve para evitar el uso de variables globales innecesarias.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los PROCESS se ejecutan en paralelo, mientras que las FUNCTION se ejecutan de forma secuencial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Es decir, hasta que no termine esta función, el proceso que lo llama queda bloqueado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;mover_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movimiento horizontal&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Cambiar dirección al llegar a los bordes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;310&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descenso&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: dibujar_enemigo_tipo2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Dibuja el enemigo tipo 2, borrando los dibujos anteriores.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - linea1_offset: Puntero al ID de la línea 1.  -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - linea2_offset: Puntero al ID de la línea 2.  -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - linea3_offset: Puntero al ID de la línea 3.  -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - linea4_offset: Puntero al ID de la línea 4.  -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - circulo_offset: Puntero al ID del círculo.  -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición x.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición y.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los punteros sirven para modificar las variables originales fuera de la función.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Si modificas una varariable del puntero dentro de la función, se refleja fuera también.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Sirve para evitar el uso de variables globales innecesarias.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los PROCESS se ejecutan en paralelo, mientras que las FUNCTION se ejecutan de forma secuencial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Es decir, hasta que no termine esta función, el proceso que lo llama queda bloqueado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;dibujar_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea1_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea2_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea3_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea4_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;circulo_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Borramos los dibujos anteriores&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea1_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea1_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea2_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea2_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea3_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea3_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea4_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea4_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;circulo_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;circulo_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujamos el enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea1_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea2_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea3_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea4_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;circulo_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: mover_enemigo_tipo2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Maneja el movimiento circular del enemigo tipo 2, manteniéndolo dentro de la pantalla.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x_offset: Puntero a la posición x. -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y_offset: Puntero a la posición y. -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - ang_offset: Puntero al ángulo de movimiento. -&amp;gt; Usamos el puntero para modificar la variable original.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los punteros sirven para modificar las variables originales fuera de la función.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Si modificas una varariable del puntero dentro de la función, se refleja fuera también.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Sirve para evitar el uso de variables globales innecesarias.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los PROCESS se ejecutan en paralelo, mientras que las FUNCTION se ejecutan de forma secuencial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Es decir, hasta que no termine esta función, el proceso que lo llama queda bloqueado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;mover_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang_offset&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5000&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Incremento del ángulo&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movimiento circular&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_distx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_disty&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mantener dentro de la pantalla&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;310&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;310&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;190&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y_offset&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;190&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Cosas chulas que no se suelen ver:&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- Dividir el objeto, el comportamiento y su dibujado en procesos distintos. Esto suele hacerse para para reducir la complejidad del código, haciendo que sea más sencillo de leer (no es lo mismo un proceso gigante que tres pequeños) y de mantener.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- Hago uso de punteros tanto para el dibujado como para el movimiento de los enemigos. ¿Qué es un puntero? Digamos que tanto la variable &quot;x&quot; de enemigo, como la variable &quot;x_offset&quot; de mover_enemigo, comparten la misma región de memoria. O dicho de otra forma, si modificas una de esas dos variables, estás modificando realmente ambas variables a la vez. Esto es muy útil si quieres que varios procesos &quot;comuniquen&quot; entre ellos en tiempo real, sin tener que recurrir a variables globales.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;¿Se puede hacer todo eso por valor en vez de punteros? Sí. ¿Estoy complicando el código innecesariamente? También. Pero pensad que ahora mismo sólo tenemos dos enemigos en pantalla. Mañana tendremos 160.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhje7l0wFnK_B9PC5tvyq6R2z3zr6HD51eKtjvwejHo5E9QWKGamdzPhC6QX68pxfMtQBf3SlJH3WGcIDZewrcvOCmxpay0RNNRuZ0OacX4DJh3yyTuyMp2effOw8JgkLDxd5N7xPNUAUykCZ0WmuazLLQ_NkRVpA-yyfpCnTBhc2EksVKhsYWW/s1504/Captura%20de%20pantalla%202026-02-03%20a%20las%2022.18.04.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhje7l0wFnK_B9PC5tvyq6R2z3zr6HD51eKtjvwejHo5E9QWKGamdzPhC6QX68pxfMtQBf3SlJH3WGcIDZewrcvOCmxpay0RNNRuZ0OacX4DJh3yyTuyMp2effOw8JgkLDxd5N7xPNUAUykCZ0WmuazLLQ_NkRVpA-yyfpCnTBhc2EksVKhsYWW/w640-h528/Captura%20de%20pantalla%202026-02-03%20a%20las%2022.18.04.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Bueno, pues ahora que ya tenemos un jugador, balas y enemigos, podemos plantearnos ya hacer un juego: Pongamos más enemigos en pantalla, que disparen con patrones distintos, explosiones y que el jugador y los enemigos mueran al colisionar con las balas. Atentos, que se vienen curvas (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT03.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT03.PRG&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;En este ejemplo (el tercero), si hacéis un diff con el anterior veréis que hay muchísimos cambios, en gran parte porque, además de añadir todo lo que os voy a describir, he remplazado muchos &quot;magic numbers&quot; por constantes. Y también me lié y cambié de lugar varias funciones. ¿Qué es un &quot;magic number&quot;? Pues ni más ni menos que todos los valores &quot;hardcodeados&quot; que veis por el código. Está claro que si quieres centrar un proceso en una pantalla de 320x200, puedes directamente decir que su posición X es 160 y su posición Y es 100, pero en programación los llamamos números &quot;mágicos&quot; porque sacados de contexto no significan nada. Imagínate dentro de 6 meses releyendo tu código: &quot;¿Por qué puse aquí 80? ¿Por que sí y punto?&quot;. Pues esos números mágicos o cadenas mágicas (para el caso de los strings) se mitigan poniendo constantes. La constante nos permite aplicar un nombre que le otorga un contexto en lectura y que, cuando se compila, no se trata como si fuera una variable, si no que el compilador ya mete directamente el valor esperado donde corresponda.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;En este ejemplo, para crear enemigos simplemente he creado un proceso independiente en el que llamo a un bucle FROM para crear 5 instancias de cada enemigo. Cosas a tener en cuenta: A diferencia del bucle FOR, el FROM sólo permite operar con constantes, entre otras cosas porque lo que hace el compilador es repetir X veces el bloque de instrucciones que contenga dicho bucle. O dicho de otra forma, no hay un componente condicional que haga variar el número de iteraciones que tendrá el bucle.&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: crear_enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Crea los procesos de enemigos al inicio de cada nivel.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Genera 5 enemigos tipo 1 (a la izquierda) y 5 tipo 2 (a la derecha).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;crear_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Variable para el bucle&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Crea 5 enemigos tipo 1 en posiciones espaciadas en la izquierda&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;TO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ESPACIADO_ENEMIGO1_X&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ESPACIADO_ENEMIGO1_X&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ESPACIADO_ENEMIGO1_Y_INICIAL&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ESPACIADO_ENEMIGO1_Y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Posición x e y calculada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Crea 5 enemigos tipo 2 en posiciones espaciadas en la derecha&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;TO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ESPACIADO_ENEMIGO2_X_INICIAL&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ESPACIADO_ENEMIGO2_X&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ESPACIADO_ENEMIGO2_Y_INICIAL&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ESPACIADO_ENEMIGO2_Y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Posición x e y calculada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Luego, defino también una función de de iniciar_nivel, que me permite llamar a ese crear enemigos, inicializar variables para la partida, invocar al jugador y le he implementado una cuenta regresiva de &quot;3, 2, 1... GO!&quot;. Si os fijáis aquí, estoy definiendo una función y no un proceso, pero a dicha función le meto instancias de &quot;FRAME&quot;. ¿Por qué? ¿Las funciones no son métodos que devuelven resultados? Pues esto es uno de los trucos que nos permite Div Games Studio: Las funciones, en la práctica, tienen un comportamiento identico a los procesos (aka &quot;instancias&quot;), pero bloquean la ejecución de su proceso padre. Es decir, hasta que incio_nivel no termine de ejecutarse, el proceso que lo llama (en este caso el bucle principal del juego) para su ejecución.&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: inicio_nivel&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Inicializa un nuevo nivel mostrando una cuenta regresiva (3, 2, 1, GO!) y creando los procesos de enemigos y jugador.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Desactiva controles durante la cuenta y los activa al final.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los PROCESS se ejecutan en paralelo, mientras que las FUNCTION se ejecutan de forma secuencial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Aunque tenga FRAME dentro, es una función y bloquea el proceso que la llama (hack de DIV)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Es decir, hasta que no termine esta función, el proceso que lo llama queda bloqueado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;inicio_nivel&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;contador&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Cuenta regresiva: 3, 2, 1, GO!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Contador de frames&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;contador_str&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// String para mostrar contador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Desactivamos controles durante la cuenta regresiva&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;controles_activos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Creamos naves pero sin movimiento&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;crear_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Creamos enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Crear jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Esperar un momento para que se vean las naves&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Cuenta regresiva 3, 2, 1, GO!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;contador&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;contador_str&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;itoa&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;contador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Convertimos el número a string (itoi = integer to ascii)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;CENTRO_X&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;CENTRO_Y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ALINEACION_CENTRADO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;contador_str&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 4 = centrado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;FPS_JUEGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Ha pasado un segundo, actualizamos la cuenta atrás&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;contador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;--;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_text&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;all_text&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Limpiamos todos los textos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mostrar_textos_hud&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Volmemos a dibujar los textos del HUD&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Siguiente frame&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mostramos el GO!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;CENTRO_X&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;CENTRO_Y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ALINEACION_CENTRADO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;GO!&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 4 = centrado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;FPS_JUEGO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mostramos GO! por 0,5 segundos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_text&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;all_text&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Limpiamos todos los textos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mostrar_textos_hud&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Volmemos a dibujar los textos del HUD&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;controles_activos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Activar controles para empezar el juego&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp;De hecho, también defino funciones &quot;bloqueantes&quot; para calcular las colisiones del jugador con las balas, con sus enemigos y de los enemigos con las balas y el jugador. El algoritmo de la colisiones o es muy complicado, pero necesita un punto de atención en get_id(type tipo_instancia). El funcionamiento de get_id es muy peculiar: Si tienes varias instancias de un tipo de enemigo, te devuelve sólo el ID de la instancia del primer enemigo... pero si vuelves a usar get_id te devuelve el del segundo enemigo... y si lo vuelves a usar te devuelve el del tercer enemigo... y llega un momento que devolverá 0 (cuando no queden más identificadores en la cola). La gracia es que cada vez que el proceso llama a &quot;FRAME&quot;, esa cola de identificadores se reinicia y si lo usas vuelve a darte el primer enemigo de la cola. Sabiendo esto, podemos crear bucles que recorran todos los enemigos que hay en pantalla desde una función externa y comprobar si entra dentro de un área (las famosas &quot;hitboxes) de los videojuegos:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: comprobar_colision_jugador_enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Verifica si la nave del jugador colisiona con algún enemigo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Si hay colisión, suma puntos, crea explosiones y termina el juego.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición x de la nave (por valor, ya que no se modifica).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición y de la nave (por valor, ya que no se modifica).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los PROCESS se ejecutan en paralelo, mientras que las FUNCTION se ejecutan de forma secuencial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Es decir, hasta que no termine esta función, el proceso que lo llama queda bloqueado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;comprobar_colision_jugador_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del enemigo para iterar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Comprobamos la colisión con enemigos de tipo 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si existen varios procesos del tipo que se ha especificado,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// la función get_id() devolverá el resto de los identificadores en las sucesivas llamadas que se realicen a la misma.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Una vez se hayan devuelto todos los códigos identificadores, la función devolverá 0, hasta que se vuelva a ejecutar una sentencia FRAME&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// En cada frame, la lista que devuelve get_id() se reinicia, es por eso que aqui no ponemos ningún FRAME&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Bucle, recorriendo todos los enemigos tipo 1, enemigo a enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Calculamos distancia entre jugador y enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fget_dist&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;DISTANCIA_COLISION&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Significa que ambos han chocado y ambos mueren&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;puntos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;PUNTOS_POR_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Sumamos los puntos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Explosión del enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_muerto_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Marcar enemigo como muerto&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_NAVE&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Explosión del jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Marcamos game over (lo leerá el process principal y actuará en cosnecuencia)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Siguiente enemigo, hasta que no hagamos FRAME, get_id() devolverá el siguiente ID&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// cuando no queden más, devolverá 0 y saldremos del bucle&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Comprobamos la colisión con enemigos de tipo 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si existen varios procesos del tipo que se ha especificado,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// la función get_id() devolverá el resto de los identificadores en las sucesivas llamadas que se realicen a la misma.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Una vez se hayan devuelto todos los códigos identificadores, la función devolverá 0, hasta que se vuelva a ejecutar una sentencia FRAME&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Calculamos distancia entre jugador y enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fget_dist&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;DISTANCIA_COLISION&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Significa que ambos han chocado y ambos mueren&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;puntos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;PUNTOS_POR_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Sumar puntos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Explosión del enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_muerto_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Marcar enemigo para morir&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_NAVE&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Explosión del jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Terminar juego&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Siguiente enemigo, hasta que no hagamos FRAME, get_id() devolverá el siguiente ID&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// cuando no queden más, devolverá 0 y saldremos del bucle&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: comprobar_colision_bala_enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Verifica si la bala del jugador colisiona con algún enemigo. Si hay colisión, suma puntos, crea explosión y marca al enemigo para morir.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición x de la bala.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición y de la bala.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Retorna: 1 si hay colisión, 0 si no.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los PROCESS se ejecutan en paralelo, mientras que las FUNCTION se ejecutan de forma secuencial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Es decir, hasta que no termine esta función, el proceso que lo llama queda bloqueado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;comprobar_colision_bala_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del enemigo para iterar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Comprobamos si hay colisión con enemigos tipo 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Para ello obtenemos el primer ID de enemigo tipo 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Bucle, recorriendo todos los enemigos tipo 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Obtenemos la distancia entre bala y enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fget_dist&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;DISTANCIA_COLISION&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Hay colisión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;puntos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;PUNTOS_POR_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Sumamos puntos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Creamos explosión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_muerto_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Marcamos el enemigo como muerto&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 1 -&amp;gt; Indicamos colisión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Siguiente enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Comprobamos si hay colisión con enemigos tipo 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Para ello obtenemos el primer ID de enemigo tipo 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Bucle, recorriendo todos los enemigos tipo 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Calcular distancia entre bala y enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fget_dist&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;DISTANCIA_COLISION&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Hay colisión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;puntos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;PUNTOS_POR_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Sumamos puntos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Creamos explosión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_muerto_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Marcamos enemigo para morir&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 1 -&amp;gt; Indicamos colisión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Siguiente enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 0 -&amp;gt; No hay colisión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dzFo0pGwTD8RBiQ0Uu1zB2BQn-5ODs3DVg2Ngp8ulddKF-17bUENPrqiGiOy7O6G7o_-2X7uFu5kOg&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Con esto ya tenemos algo jugable. Ahora bien, queda feo tener un proceso por tipo de enemigo. Si mañana queremos tener 50, ¿creamos 50 procesos distintos en el código? Bueno, pues auqi viene el cuarto ejemplo, que a nivel funcional ofrece exactamente lo mismo que el anterior, pero con optiomizaciones (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT04.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT04.PRG&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Para emepzar creo una variable de tipo local llamada &quot;tipo&quot;. Las variables locales en Div Games Studio actuan como propiedades. Es decir, todos los procesos del programa (enemigo, iniciar_nivel, jugador...) pasan a tener una variable llamada &quot;tipo&quot;, pero esta variable, en su contexto, es independiente: Puedes crear 50 instancias de un proceso y asignarle valores disntintos a cada uno de ellos.&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Variables locales&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Las variables locales son atributos presentes en TODOS los process.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Su valor puede ser modificado únicamente desde su propio process&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - No obstante, podemos consultarlas desde cualquier otro process -&amp;gt; TIPO = enemigo.tipo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Sirve para falsear la orientación a objetos, actuaría como una &quot;propiedad&quot; del objeto en modo read only&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOCAL&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Tipo de enemigo (1 o 2), empleado sólo en el proceso genérico de enemigos&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Variables internas&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Dicho esto, borro las definiciones de enemigo_tipo1 y enemigo_tipo2 y creo un único proceso que haga uso de esa variable local:&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Controla el comportamiento de un enemigo (tipo 1 o 2).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Se mueve según el tipo, dispara balas y verifica si muere.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición inicial x.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición inicial y.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - tipo: Tipo de enemigo (1 o 2).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// (OPTIMIZACIÓN: Proceso genérico para ambos tipos de enemigos.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Reduce duplicación de código. Usa parámetro &#39;tipo&#39; para diferenciar comportamiento.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mejora mantenibilidad: cambios en un lugar afectan a ambos tipos.)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Para tipo 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Para tipo 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;temp_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Para iterar en bucles&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 0: box/circulo para tipo1, 1-4: lineas para tipo2, 5: circulo tipo2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujo inicial del enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Verificar muerte&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_muerto_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;id)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Borrar dibujos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;temp_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;TO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;temp_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;temp_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigos_vivos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;--;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_muerto_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujar y mover basado en tipo solo si controles activos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;controles_activos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mover_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ALTO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_draws&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mover_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Disparar si corresponde&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;controles_activos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;disparar_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;disparar_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;¿Podría haberme limitado a usar una variable privada tipo y pasarlo como parámetro a enemigo? Pues sí, pero me apetecía explicar que las variables locales existen y para qué sirven. De hecho, ahora que definimos la variable como local, puede ser consultada de forma externa por otras funciones y procesos, cosa que no podríamos hacer si la variable fuera privada:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: comprobar_colision_bala_enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Verifica si la bala del jugador colisiona con algún enemigo. Si hay colisión, suma puntos, crea explosión y marca al enemigo para morir.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición x de la bala.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición y de la bala.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Retorna: 1 si hay colisión, 0 si no.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los PROCESS se ejecutan en paralelo, mientras que las FUNCTION se ejecutan de forma secuencial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Es decir, hasta que no termine esta función, el proceso que lo llama queda bloqueado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;comprobar_colision_bala_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del enemigo para iterar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Color para la explosión del enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Comprobamos si hay colisión con enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Para ello obtenemos el primer ID de enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Bucle, recorriendo todos los enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Obtenemos la distancia entre bala y enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fget_dist&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;DISTANCIA_COLISION&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Hay colisión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;puntos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;PUNTOS_POR_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Sumamos puntos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Determinamos el color de la explosión según el tipo de enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Creamos explosión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_muerto_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Marcamos el enemigo como muerto&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 1 -&amp;gt; Indicamos colisión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Siguiente enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Pero no es la única optimización que podríamos aplicar. De hecho, en el ejemplo 5 seguimos sin cambiar funcionalmente el juego y nos centramos en ir aún más lejos con las optimizaciones (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT05.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT05.PRG&lt;/a&gt;). ¿Cómo? Pues con dos grandes conocidos del capítulo 2 (que os ha dado pesadillas): ¡Uso de estructuras y de un único hilo para dibujar a todos los enemigos!&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Para empezar, ese hermosa variable local que habíamos creado nos la cepillamos y creamos una estructura genérica para los eneigos. En ella definimos su posición (x, y), el tipo de enemigo, si está vivo o muerto, la dirección de su desplazamiento, su ángulo de movimiento (para el tipo 2) y un array de enteros donde almacenar los ID de las primitivas gráficas que lo representan.&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Definición de struct para enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRUCT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Posición X&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;       &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Posición Y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Tipo de enemigo (1 o 2)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si está activo (1) o muerto/inactivo (0)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dirección horizontal para tipo1 (1 derecha, -1 izquierda)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Ángulo para movimiento circular de tipo2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Array de IDs de dibujos (5 slots por enemigo)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Luego, borramos el proceso enemigo y creamos un &quot;proceso_enemigos&quot; para gestionar TODOS los enemigos en bucle. ¡Fijaros que reutilizamos los métodos ya existentes de dibujo y movimiento (gracias a la magia de los punteros), pero recorremos todos los enemigos que hay en la estructura para ver si están vivos o muertos y actuar en consecuencia:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: proceso_enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Controla el comportamiento de todos los enemigos usando un STRUCT array.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Maneja movimiento, disparos y eliminación de enemigos tipo 1 y 2.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// (OPTIMIZACIÓN: Proceso genérico para ambos tipos de enemigos.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Reduce duplicación de código. Usa parámetro &#39;tipo&#39; para diferenciar comportamiento.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mejora mantenibilidad: cambios en un lugar afectan a ambos tipos.)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;proceso_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Contador de tiempo para disparos de cada enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujo inicial de todos los enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FOR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujamos el enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujamos el enemigo de tipo 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si el juego ha terminado, salimos del proceso&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Por cada enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FOR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Verificamos si está vivo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Verificamos si los controles están activos (p. ej., no durante la cuenta regresiva)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;controles_activos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movemos en función del tipo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movemos el enemigo tipo 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mover_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movemos el enemigo tipo 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mover_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Verificar si sale de pantalla&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ALTO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;TAMANO_ENEMIGO1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;TO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujamos el enemigo en función del tipo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dibujar_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Disparar en función del tipo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;disparar_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;disparar_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Fijaros que también, a su vez, el código acaba siendo más sencillo cuando manejamos estructuras. Por ejemplo, reducimos aún más el tamaño de las funciones de detección colisiones:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: comprobar_colision_bala_enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Verifica si la bala del jugador colisiona con algún enemigo. Si hay colisión, retorna el index del enemigo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición x de la bala.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición y de la bala.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Retorna: Index del enemigo colisionado (0-4), o -1 si no hay colisión.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Los PROCESS se ejecutan en paralelo, mientras que las FUNCTION se ejecutan de forma secuencial&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Es decir, hasta que no termine esta función, el proceso que lo llama queda bloqueado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;comprobar_colision_bala_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Variable para el bucle&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Comprobamos si hay colisión con enemigos iterando sobre el array&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FOR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Obtenemos la distancia entre bala y enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fget_dist&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;DISTANCIA_COLISION&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Retornamos el index del enemigo colisionado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN(-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// No hay colisión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Bueno, pues ahora que tenemos un juego potable y algo optimizado, podemos empezar a trabajar con sprites y aquí entra el ejemplo 6 (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT06.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT06.PRG&lt;/a&gt;). Este ejemplo es básicamente el anterior, pero adaptado para trabajar con sprites.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;El mayor cambio reside en que, como he querido animar al personaje principal, he utilizado distintos gráficos para él en función de la tecla que pulsamos y de si estamos disparando o no. Es decir, si nos desplazamos o si disparamos, el gráfico va cambiando de forma dinámica.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Básicamente tenemos un fichero FPG para él con 16 gráficos. Los 8 primeros representan las 8 posiciones posibles en las que podemos depslazarnos (arriba, abajo, izquierda, derecha y diagonales) cuando no estamos disparando y las 8 siguientes es lo mismo, pero disparando. Sobre qué gráfico va primero, pues lo gestiono como si fueran las agujas del reloj -&amp;gt; 1 sería mirar arriba, 2 arriba/derecha, 3 derecha... y así hasta 8 izquierda/arriba.&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Función: calcular_grafico_jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Calcula el ID del gráfico según dirección y estado de disparo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Retorna: ID del gráfico (1-18)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;calcular_grafico_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;disparando&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;base_grafico&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Base: 0 si no dispara, 9 si dispara&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;disparando&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;base_grafico&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;base_grafico&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Calcular offset según dirección&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Quieto&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Arriba&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Arriba derecha&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Derecha&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Derecha abajo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Abajo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Abajo izquierda&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Izquierda&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Arriba izquierda&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;base_grafico&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;offset_direccion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Sobre los sprites en cuestión, decidí bastame en el universo de Saga of Tanya The Evil de Carlo Zen (su mangaka, Chika Tojo, me cae genial). Su protagonista, Tanya, la he modelado varias veces en Blender y decidí hacer uso de una versión modificada que subí a sketchfab en verano y que, pese a ser uno de mis modelos preferidos y de los que más orgulloso estoy, lleva la friolera de cero likes (&lt;a href=&quot;https://sketchfab.com/3d-models/tanya-degurechaff-from-saga-of-tanya-the-evil-fb725e63784d4839928aa8ea6fe28e56&quot;&gt;https://sketchfab.com/3d-models/tanya-degurechaff-from-saga-of-tanya-the-evil-fb725e63784d4839928aa8ea6fe28e56&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Y esto me consumió batante tiempo, puesto que el modelo de Tanya no lo tenía animado conforme yo quería para este juego y tuve que &lt;i&gt;&quot;riguear&lt;/i&gt;&quot; poses nuevas para luego renderizarlas.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8VaZD18FuKtnxrGO22cSHjsWI6OgwNqKW0ltVrEZtkWJ2kqLeL-bT8TVKxxebVI84dQ53w5QYXM9WzKvvFMkm8FNky6vD6XAoWenV7SvA-vB3WXFfXjZ043CaZdfsiFCTAlj3EB4K4_abkh-Q7tREqBup2FTkd5oUyL2HOO1nYJSAHIudpnxP/s3584/Captura%20de%20pantalla%202026-02-04%20a%20las%200.04.57.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2264&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8VaZD18FuKtnxrGO22cSHjsWI6OgwNqKW0ltVrEZtkWJ2kqLeL-bT8TVKxxebVI84dQ53w5QYXM9WzKvvFMkm8FNky6vD6XAoWenV7SvA-vB3WXFfXjZ043CaZdfsiFCTAlj3EB4K4_abkh-Q7tREqBup2FTkd5oUyL2HOO1nYJSAHIudpnxP/w640-h404/Captura%20de%20pantalla%202026-02-04%20a%20las%200.04.57.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Para los enemigos fue más sencillo. Generé modelos con Meshy.AI y luego los rendericé por Blender.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEiMwN7Z65RoUkfnnTMnYScE7UcE3ZapM_TJ6a2lWsCYfksH8dM4PMRqE1_zHXfeVEaGgpwKTfo5aX3u_Gax4v6VXSLAjzTIA3_Dmg4Ace9CoUR1Rk2sk3Cx4Ghkr1Yux80Yb30iE3HQ8p9p0Yn5LzP1qUAw4LsePwDx9q5jsOIV1nokPnktjp/s3584/Captura%20de%20pantalla%202026-02-04%20a%20las%200.07.31.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2264&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEiMwN7Z65RoUkfnnTMnYScE7UcE3ZapM_TJ6a2lWsCYfksH8dM4PMRqE1_zHXfeVEaGgpwKTfo5aX3u_Gax4v6VXSLAjzTIA3_Dmg4Ace9CoUR1Rk2sk3Cx4Ghkr1Yux80Yb30iE3HQ8p9p0Yn5LzP1qUAw4LsePwDx9q5jsOIV1nokPnktjp/w640-h404/Captura%20de%20pantalla%202026-02-04%20a%20las%200.07.31.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Y para los escenarios tiré de ChatGPT.&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimgDVr9XG3Wp66VIy0-PumKkfgk_-DdxgXUVV5m-fC5JNYdJvYf8yzX_AZfXkkmqk4FdP8g5o88Ebq5ZoM_h24HwgeFH4T7g9eDbTXcf950ZlUxJeU7LFgTk_81ajMJ5PRsbsKvjL_HdJDeFrDiqWH-Hc2zfVQ8f4LpSt4jcrqT32F5ikenTYq/s1536/000.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;1024&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimgDVr9XG3Wp66VIy0-PumKkfgk_-DdxgXUVV5m-fC5JNYdJvYf8yzX_AZfXkkmqk4FdP8g5o88Ebq5ZoM_h24HwgeFH4T7g9eDbTXcf950ZlUxJeU7LFgTk_81ajMJ5PRsbsKvjL_HdJDeFrDiqWH-Hc2zfVQ8f4LpSt4jcrqT32F5ikenTYq/w426-h640/000.png&quot; width=&quot;426&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Ahora bien, el proceso de adaptar los gráficos para Div Games Studio fue bastante tortuoso. Lo primero es que, por comodidad, decidí emplear una única paleta de colores para todos los niveles. Esto me obligaba, por ejemplo, a crearme una paleta en Gimp para poder hacer uso de ella en el modo &quot;Imagen/Modo/Indexado&quot;. Además, para mitigar la limitacion de 256 colores forcé el&amp;nbsp;&lt;span class=&quot;ILfuVd&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hgKElc pOOWX&quot;&gt;&lt;i&gt;dithering&lt;/i&gt; activando&lt;/span&gt;&lt;/span&gt;&amp;nbsp;el tramado de color posicionado:&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFJzNyj4YeOWoybyO2J4iaeUILbwwmF4Kjzz8wWafFNRWw85RsT30r1cszg2cAg3JKctFbbFEs3wNncOEy81vxHgoC06xtIVMZIVPbQQ0Aga6Ou3GhhosTyq-ymvgk5YvQCWYLtNpeSELT2HfBlxQtmPa0sW-NzalXhy_ths4Ay6L7YOQO1-WF/s3496/Captura%20de%20pantalla%202026-02-04%20a%20las%200.12.21.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2176&quot; data-original-width=&quot;3496&quot; height=&quot;398&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFJzNyj4YeOWoybyO2J4iaeUILbwwmF4Kjzz8wWafFNRWw85RsT30r1cszg2cAg3JKctFbbFEs3wNncOEy81vxHgoC06xtIVMZIVPbQQ0Aga6Ou3GhhosTyq-ymvgk5YvQCWYLtNpeSELT2HfBlxQtmPa0sW-NzalXhy_ths4Ay6L7YOQO1-WF/w640-h398/Captura%20de%20pantalla%202026-02-04%20a%20las%200.12.21.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Para crear la paleta en Gimp, lo que hice fue crear desde Div2 un dibujo random en formato PCX con la tableta &quot;DIV2.PAL&quot;.&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;Por otro lado también implementé una pequeña explosión que se vea en el fusil de Tanya cuando dispara:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: explosion_pequena&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Crea una animación de explosión pequeña para efectos de disparo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Más pequeña y rápida que la explosión normal&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Parámetros:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - x: Posición x de la explosión.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - y: Posición y de la explosión.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   - color: Color de la explosión.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;explosion_pequena&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Contador para el bucle&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;radio&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Radio inicial más pequeño&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;exp_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo de la explosión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Animamos la explosión pequeña&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;TO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Menos iteraciones para que sea más rápida&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;exp_draw&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;exp_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;exp_draw&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;OPACIDAD_DRAW&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;REGION_DRAW&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;radio&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;radio&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;radio&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;radio&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;radio&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Incremento menor&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;exp_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dz0cnVrx9TUEekXcAQ07bzXjD1qPLzJgppnpaPN4p_-hP-1RkNw_y9NxpH2u0ycncywwdyqHdTu1gA&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Ahora bien, con este ejemplo 6 me di cuenta de una cosa bastante básica y es que, si desplazaba al personaje a una esquina y dejaba que los enemigos dispararan... pues habían ralentizaciones, el juego tenía bajones de frames. Y es que, aunque habíamos optimizado los enemigos, ¡pero no las balas! Y justamente en un juego de tipo bullet-hell como el que estabamos creando ahora mismo, era obvio que en pantalla tendríamos más balas que enemigos. &quot;Lo siento mucho, me he equivocado, no volverá a ocurrir&quot;.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Así me puse a implementar el ejemplo 7, que es, a nivel jugable, idéntico al anterior, pero optimizando las balas (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT07.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT07.PRG&lt;/a&gt;). ¿Cómo? ¡Pues con estructuras y un proceso común para dibujarlas todas!&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Definición de struct para balas del jugador (OPTIMIZACIÓN: Lista enlazada separada)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Almacena balas del jugador en array con lista enlazada para optimizar acceso&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRUCT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MAX_BALAS_JUGADOR&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;         &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Posición X de la bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;         &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Posición Y de la bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si está activa (1) o inactiva (0)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Delta X precalculado para movimiento (siempre 0 para jugador)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dy&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Delta Y precalculado para movimiento (hacia arriba)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Tamaño precalculado para dibujo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Color precalculado para dibujo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo de la bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice del siguiente slot en la lista (-1 = fin de lista)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Definición de struct para balas enemigas (OPTIMIZACIÓN: Lista enlazada separada)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Almacena balas enemigas en array con lista enlazada para optimizar acceso&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRUCT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MAX_BALAS_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;         &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Posición X de la bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;         &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Posición Y de la bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Tipo de bala enemiga (1=enemigo1, 2=enemigo2)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si está activa (1) o inactiva (0)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;angulo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Ángulo de movimiento (para balas enemigo tipo 2)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Delta X precalculado para movimiento&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dy&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Delta Y precalculado para movimiento&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Tamaño precalculado para dibujo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Color precalculado para dibujo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del dibujo de la bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice del siguiente slot en la lista (-1 = fin de lista)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Cosas a tener en cuenta: Veréis un INT de &quot;Siguiente&quot;. Esto es debido a que, como tienen que haber tantas balas en pantalla, hace falta hacer un sistema de listas. Si digo al compilador que pueden haber 256 balas en pantalla como máximo, resulta contraproducente crear bucles donde se recorran las 256 posiciones del array de balas, existan o no, para cada verificación que tenga que ver con balas. Lo que sí que puedo hacer es marcar con un &quot;-1&quot; en siguiente para decirle a un bucle &quot;no sigas recorriendo el array de balas, no ay más ahora mismo:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: proceso_balas_jugador (OPTIMIZACIÓN: Proceso separado para balas del jugador)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Proceso dedicado que gestiona solo balas del jugador usando lista enlazada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Solo procesa balas activas del jugador siguiendo la lista enlazada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Mueve, dibuja y verifica colisiones con enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Elimina balas que salen de pantalla o colisionan&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;proceso_balas_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;             &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice de la bala actual en la lista&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;           &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice de la bala anterior en la lista&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice de la bala siguiente (guardado antes de posible eliminación)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice del enemigo colisionado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Color de explosión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Flag para marcar si debe eliminarse&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si el juego terminó, salimos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// PROCESAR BALAS DEL JUGADOR&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primera_bala_jugador_activa&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #f3f3f3;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Guardar el siguiente antes de posibles modificaciones&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;delete_draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mover la bala según deltas precalculados&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dy&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Verificar si sale de pantalla&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ALTO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ANCHO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Colisión con enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;comprobar_colision_bala_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;puntos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;PUNTOS_POR_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;remover_enemigo_lista&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigos_vivos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;--;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Eliminar bala de la lista si es necesario&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Sacar de lista de activas&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primera_bala_jugador_activa&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Marcar como inactiva&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Devolver a lista de libres&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primer_slot_libre_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primer_slot_libre_jugador&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujar la bala&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;TIPO_DIBUJO_CIRCULO_RELLENO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;OPACIDAD_DRAW&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;REGION_DRAW&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Avanzar anterior solo si no eliminamos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Avanzar al siguiente&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #ffd966; color: white;&quot;&gt;            actual = siguiente;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Esperar al siguiente frame&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Ahora que hemos reoptimizado el código para evitar bajones de frames, deberíamos adaptar el juego para que sea más divertido. Quiero decir, ahora mismo tenemos un escenario inmovil con diez enemigos fijos... y en eso consiste nuestro ejemplo 8 (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT08.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT08.PRG&lt;/a&gt;). En esta versión implementamos un scroll (con start_scroll, no el falso scroll del capítulo 2), repartimos 80 enemigos por todo el escenario e implementamos rutinas para revisar que los enemigos que están fuera de la pantalla no se dibujen y que las barras que salen de nuestra pantalla se destruyan (pensad que las coordenadas no son iguales si usamos scroll o no).&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// PROCESS: proceso_enemigos (MODIFICADO PARA SCROLL)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// DESCRIPCIÓN: Controla el comportamiento de todos los enemigos usando un STRUCT array.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Maneja movimiento, disparos y eliminación de enemigos tipo 1 y 2.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Ahora solo procesa y dibuja enemigos visibles en la pantalla actual del scroll.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Usa procesos hijos con ctype=c_screen para visualizar cada enemigo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;proceso_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;NUM_ENEMIGOS_INICIAL&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Contador de tiempo para disparos de cada enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_visible&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Flag para verificar si el enemigo está visible&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;NUM_ENEMIGOS_INICIAL&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;];&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// IDs de procesos hijos para cada enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Inicializar array de procesos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;TO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;NUM_ENEMIGOS_INICIAL&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si el juego ha terminado, salimos del proceso&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Terminar todos los procesos hijos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FOR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;NUM_ENEMIGOS_INICIAL&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;signal&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;s_kill&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Por cada enemigo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FOR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;NUM_ENEMIGOS_INICIAL&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Verificamos si está vivo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// OPTIMIZACIÓN: Solo procesar enemigos visibles en el scroll actual&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Un enemigo es visible si su Y está entre scroll.y0 - MARGEN y scroll.y0 + ALTO_PANTALLA + MARGEN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_visible&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MARGEN_VISIBLE_ARRIBA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ALTO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MARGEN_VISIBLE_ABAJO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_visible&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Solo procesar si está visible&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_visible&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Crear proceso hijo si no existe&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;proceso_enemigo_visual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Solo mover y disparar si los controles están activos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;controles_activos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movemos en función del tipo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movemos el enemigo tipo 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mover_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Movemos el enemigo tipo 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;mover_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ang&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Verificar si sale del área visible por abajo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ALTO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MARGEN_VISIBLE_ABAJO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;remover_enemigo_lista&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigos_vivos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;--;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Disparar en función del tipo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;disparar_enemigo_tipo1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;disparar_enemigo_tipo2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tiempo_disparo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Enemigo no visible, eliminar proceso hijo si existe&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;signal&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;s_kill&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Enemigo muerto, eliminar proceso hijo si existe&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;signal&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;s_kill&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;procesos_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// PROCESS: proceso_enemigo_visual (NUEVO)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// DESCRIPCIÓN: Proceso hijo liviano que solo se encarga de visualizar un enemigo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Usa ctype=c_screen para coordenadas de pantalla.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Lee los datos del enemigo desde el struct enemigo[].&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;proceso_enemigo_visual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ctype&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;c_screen&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Usar coordenadas de pantalla&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;FPG_LEVEL&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Archivo de gráficos&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si el enemigo ya no está activo o el juego terminó, salir&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Actualizar posición en pantalla (convertir de coordenadas de mapa a pantalla)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Actualizar gráfico según tipo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;graph&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;GRAFICO_ENEMIGO1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Rotar según dirección de movimiento&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dir&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;angle&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ANGULO_ROTACION_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Rotar 15° a la derecha&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;angle&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ANGULO_ROTACION_ENEMIGO_OPUESTA&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Rotar 15° a la izquierda&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ESCALA_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;graph&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;GRAFICO_ENEMIGO2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;angle&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dwPJ8ThERqEAFkGXx4uFF4gP_DNKFQ8H80H1zsxy6y0iIAp2T3ea24QKlK7cyrg4DwbIQN2Tfc_diM&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Con todo esto ya vamos teniendo un juego más o menos potable, pero siempre podemos ir a más. En el siguiente ejemplo, el 9, (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT09.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT09.PRG&lt;/a&gt;), vamos más lejos e implementamos un sistema de niveles distintos, cada uno con su propio fichero FPG. En cada nivel, además, incrementamos el número de enemigos: Empezamos con 40, después 50, después 60... y así vamos sumando de diez en diez en cada fase. Además, el reparto de enemigos lo hacemos de forma escalonada, haciendo que haya pocos enemigos de inicio y muchos al final. También se implementa un sistema de vidas, para que el personaje del jugador no muera al primer toque e incluso cambiamos su fichero FPG en función del número de toques recibido (para dibujarlo sin casco al recibir el primer balazo y sin mochila al recibir el segundo).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// FUNCIÓN: cargar_fpg_nivel&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// DESCRIPCIÓN: Carga el FPG correspondiente al nivel actual&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Descarga el FPG anterior si existe y carga el nuevo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;cargar_fpg_nivel&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nivel_fpg&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ruta_fpg&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Ruta del FPG a cargar&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;numero_str&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Número del nivel como string&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descargar el FPG anterior si existe&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;FPG_LEVEL&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;unload_fpg&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;FPG_LEVEL&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Construir la ruta del FPG según el nivel&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// LEVEL000.FPG, LEVEL001.FPG, ..., LEVEL009.FPG, LEVEL010.FPG, LEVEL011.FPG, LEVEL012.FPG&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;numero_str&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;itoa&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nivel_fpg&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;background-color: #f1c232; color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;// Agregar ceros a la izquierda según sea necesario&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;nivel_fpg&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;ruta_fpg&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;&quot;TANYA/LEVEL00&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;numero_str&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;&quot;.FPG&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;ruta_fpg&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;&quot;TANYA/LEVEL0&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;numero_str&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;&quot;.FPG&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;background-color: #f1c232; color: #eeeeee;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Cargar el nuevo FPG&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;FPG_LEVEL&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;load_fpg&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ruta_fpg&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: proceso_balas_jugador (OPTIMIZACIÓN: Proceso separado para balas del jugador)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Proceso dedicado que gestiona solo balas del jugador usando lista enlazada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Solo procesa balas activas del jugador siguiendo la lista enlazada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Mueve, dibuja y verifica colisiones con enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Elimina balas que salen de pantalla o colisionan&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;proceso_balas_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;             &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice de la bala actual en la lista&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;           &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice de la bala anterior en la lista&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice de la bala siguiente (guardado antes de posible eliminación)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice del enemigo colisionado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Color de explosión&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Flag para marcar si debe eliminarse&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si el juego terminó, salimos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// PROCESAR BALAS DEL JUGADOR&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primera_bala_jugador_activa&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Guardar el siguiente antes de posibles modificaciones&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mover la bala según deltas precalculados&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dy&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Verificar si sale del área visible del scroll (eliminar balas fuera de pantalla)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MARGEN_VISIBLE_ARRIBA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ALTO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MARGEN_VISIBLE_ABAJO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ANCHO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Colisión con enemigos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;comprobar_colision_bala_enemigos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;puntos&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;PUNTOS_POR_ENEMIGO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tipo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_ENEMIGO2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color_explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;remover_enemigo_lista&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigo_index&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;enemigos_vivos&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;--;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Eliminar bala de la lista si es necesario&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Sacar de lista de activas&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primera_bala_jugador_activa&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Marcar como inactiva&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Devolver a lista de libres&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primer_slot_libre_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primer_slot_libre_jugador&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujar la bala (convertir coordenadas de mapa a pantalla)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;TIPO_DIBUJO_CIRCULO_RELLENO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;OPACIDAD_DRAW&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;REGION_DRAW&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Avanzar anterior solo si no eliminamos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Avanzar al siguiente&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Esperar al siguiente frame&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Proceso: proceso_balas_enemigo (OPTIMIZACIÓN: Proceso separado para balas enemigas)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Descripción: Proceso dedicado que gestiona solo balas enemigas usando lista enlazada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Solo procesa balas activas enemigas siguiendo la lista enlazada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Mueve, dibuja y verifica colisiones con el jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// - Elimina balas que salen de pantalla o colisionan&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PROCESS&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;proceso_balas_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;             &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice de la bala actual en la lista&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;           &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice de la bala anterior en la lista&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Índice de la bala siguiente (guardado antes de posible eliminación)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;          &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// ID del jugador&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Flag para marcar si debe eliminarse&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dy&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;             &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Diferencias para cálculo de distancia&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dist_cuadrado&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;      &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Distancia al cuadrado (optimización)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;get_id&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(type&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;LOOP&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si el juego terminó, salimos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// PROCESAR BALAS ENEMIGAS&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primera_bala_enemigo_activa&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;WHILE&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Guardar el siguiente antes de posibles modificaciones&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mover la bala según deltas precalculados&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dx&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dy&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Verificar si sale del área visible del scroll (eliminar balas fuera de pantalla)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MARGEN_VISIBLE_ARRIBA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ALTO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MARGEN_VISIBLE_ABAJO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;OR&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ANCHO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Colisión con jugador (solo si no está inmune)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;jugador_inmune&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Bounding box rápida&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;abs&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MARGEN_BOUNDING_BOX&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;AND&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;abs&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;MARGEN_BOUNDING_BOX&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Calcular distancia al cuadrado&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dx&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dy&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dist_cuadrado&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dx&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dx&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dy&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dy&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;dist_cuadrado&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;DISTANCIA_COLISION_CUADRADO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// El jugador recibe un impacto&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;vidas_jugador&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;--;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;explosion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;COLOR_NAVE&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;// Verificar si el jugador murió&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;vidas_jugador&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;&amp;lt;=&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;// Tercera bala = muerte&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;game_over&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;// Activar inmunidad temporal y parpadeo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;jugador_inmune&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;TIEMPO_INMUNIDAD&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;// Cambiar FPG según vidas restantes&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;vidas_jugador&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                    &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;// Primera bala: cambiar a PLAYERME.FPG&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                    &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;FPG_PLAYERME&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                    &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;// Segunda bala: cambiar a PLAYERLO.FPG&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                    &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;id_player&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;file&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;FPG_PLAYERLO&lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                                &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;background-color: #bf9000; color: white;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Eliminar bala de la lista si es necesario&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;debe_eliminar&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Sacar de lista de activas&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primera_bala_enemigo_activa&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Marcar como inactiva&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;activo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Devolver a lista de libres&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primer_slot_libre_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;primer_slot_libre_enemigo&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;ELSE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Dibujar la bala (convertir coordenadas de mapa a pantalla)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;draw_id&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;TIPO_DIBUJO_CIRCULO_RELLENO&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;OPACIDAD_DRAW&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;REGION_DRAW&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;x0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;scroll&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;y0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;bala_enemigo&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;tamano&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Avanzar anterior solo si no eliminamos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;anterior&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Avanzar al siguiente&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;actual&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FRAME;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Esperar al siguiente frame&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Por último tenemos el ejemplo 10, el que contiene el juego acabado. Aquí creamos el enemigo de tipo 3, añadimos un ranking por puntuación, cargamos cinemáticas (escenas estilo Visual Novel) entre niveles y añadimos efectos de sonido y música (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT10.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/VSHOOT10.PRG&lt;/a&gt;). Este es el que presenta mayor dificultad de todos, ya que si haceís un diff con el anterior veréis que cambia casi por completo. Para estas cinemáticas recurri a varias IA generativas: Meshy (Nano Banana), ChatGPT y Grok.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw6oL_nlFA_02mTuB_I9e9-PhBNyl1mO_Gitkps71ZJ3DKSNzFp4cg7U1ylNlxV5GJ2DAKXhyphenhyphenzGEpETuS-ul023di0XgGvsb_KlCxf2xGDyQV_3pTwp8YUxVlrFTEyywN0__eSPcd1F_-IusCNfb787_OCDn__PTmbR9Zkd2fOUWceaErm13r1/s2068/Screenshot%202026-02-04%20at%2021-36-24%20MS-DOS%202026%20Tiny%20Hellwing%20gameplay%20completo%20-%20YouTube.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1552&quot; data-original-width=&quot;2068&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw6oL_nlFA_02mTuB_I9e9-PhBNyl1mO_Gitkps71ZJ3DKSNzFp4cg7U1ylNlxV5GJ2DAKXhyphenhyphenzGEpETuS-ul023di0XgGvsb_KlCxf2xGDyQV_3pTwp8YUxVlrFTEyywN0__eSPcd1F_-IusCNfb787_OCDn__PTmbR9Zkd2fOUWceaErm13r1/w640-h480/Screenshot%202026-02-04%20at%2021-36-24%20MS-DOS%202026%20Tiny%20Hellwing%20gameplay%20completo%20-%20YouTube.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;Cosas a tener en en cuenta:&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- El sistema de estructuras para las cinemáticas. Como ya he mencionado en otras entradas, Div Games Studio no permite hacer un array de strings, pero nos permite crear un array de un struct que contenga uno o varios strings:&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Estructuras de datos para cinematicas&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRUCT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;cinematics&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;num_cg&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;siguiente_nivel&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRUCT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;cgs&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;fpg_ruta&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;pal_ruta&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;wav_ruta&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;num_paginas&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRUCT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;paginas&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea2&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea3&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;                &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;linea4&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;En este ejemplo tenemos 10 cinemáticas:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Cada una indica a qué nivel hay que saltar cuando acabe (siguiente_nivel). Además, tenemos una lista de CG (una CG = una imagen).&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Cada CG tiene su propio fichero FPG, su propia paleta, su propia melodía y una lista de hasta diez págicas.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Cada página tiene 4 líneas de texto.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Cada línea de texto tiene un tamaño máximo de 50 caracteres.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- Las funciones ligadas al ranking: Cuando añades una puntuación en una posición X, tienes que tener especial cuidado con el algoritmo que empleas para reordenar los posiciones X+1 a N: Si te limitas a hacer X+1 = X, es bastante fácil que acabes clonando puntuaciones erroneamente. Para evitar esto, hago lo contrario -&amp;gt; Desde N hazta X =&amp;gt; y = y-1.&lt;/p&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #dddddd; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; font-weight: normal; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// FUNCION: cargar_top_scores&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// DESCRIPCION: Carga las 10 mejores puntuaciones desde el archivo TOP.DAT&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Si el archivo no existe, inicializa con valores por defecto&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              (1000, 900, 800, 700, 600, 500, 400, 300, 200, 100)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;cargar_top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;data_size&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Intentar abrir el archivo para lectura&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fopen&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;TOP.DAT&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// El archivo no existe, inicializar con valores por defecto&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;TO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;score&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Leer la estructura completa de puntuaciones&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;data_size&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;sizeof(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fread&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(OFFSET&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;data_size&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Cerrar el archivo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fclose&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// FUNCION: guardar_top_scores&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// DESCRIPCION: Guarda las 10 mejores puntuaciones en el archivo TOP.DAT&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;guardar_top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;data_size&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Abrir el archivo para escritura (crea o sobrescribe)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fopen&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;TOP.DAT&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Error al crear el archivo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;RETURN;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Escribir la estructura completa de puntuaciones&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;data_size&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;sizeof(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fwrite&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(OFFSET&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;data_size&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Cerrar el archivo&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;fclose&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;file_handle&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// FUNCION: actualizar_top_scores&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// DESCRIPCION: Actualiza el ranking de puntuaciones con una nueva puntuacion&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              Inserta la puntuacion en la posicion correcta si esta entre las 10 mejores&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// PARAMETROS:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//   nueva_puntuacion - La puntuacion a comparar con el top 10&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;actualizar_top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nueva_puntuacion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;posicion_insercion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;posicion_insercion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Buscar la posicion donde insertar la nueva puntuacion&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;TO&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nueva_puntuacion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;score&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;posicion_insercion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BREAK;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Si la puntuacion esta en el top 10, insertarla&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;IF&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;posicion_insercion&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Desplazar las puntuaciones inferiores hacia abajo (de abajo hacia arriba)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FOR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;posicion_insercion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;--)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;score&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;score&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Insertar la nueva puntuacion&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;posicion_insercion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;score&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;nueva_puntuacion&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// FUNCION: mostrar_top_scores&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// DESCRIPCION: Muestra las 10 mejores puntuaciones en la parte superior izquierda&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//              de la pantalla del menu principal&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FUNCTION&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a6e22e;&quot;&gt;mostrar_top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;PRIVATE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;pos_y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRUCT&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ranking_lines&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #66d9ef; font-style: italic;&quot;&gt;STRING&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;line&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Titulo del ranking&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ANCHO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;RANKING:&quot;&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 5 = alineacion izquierda&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Preparar las 10 lineas del ranking&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FOR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ranking_lines&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;line&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;itoa&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e6db74;&quot;&gt;&quot;. &quot;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;itoa&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;top_scores&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;score&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Mostrar cada puntuacion&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;FOR&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;pos_y&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// Espaciado de 10 pixels entre lineas&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: #66d9ef;&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ANCHO_PANTALLA&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;pos_y&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ae81ff;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;ranking_lines&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #f8f8f2;&quot;&gt;line&lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;color: #75715e;&quot;&gt;// 5 = alineacion izquierda&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f92672;&quot;&gt;END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Sobre la música, se tratan de canciones generadas con SUNO (una plataforma de música generada por IA) que he convertido a wav. En mi caso tengo un mac y esto me permite hacerlo con un simple comando:&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;afconvert -f WAVE -d UI8@11025 -c 2 CANCION.MP3 CANCION.WAV&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Este comando lo que hace es generar un wav en sonido estéreo a 11025Hz. Es una calidad bastante mala para los estándares actuales, pero me permite tener canciones de menos de 3 MB (el formato wav abulta mucho y las máquinas con MS-DOS no pueden permitirse malgastar RAM).&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y para finalizar, aquí os dejo el gameplay completo del juego:&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/ctFYWD8VweI&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp;Prometo que intentaré que el próximo capítulo sea de un juego más fácil y menos complicado de programar.&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2026/02/aprendiendo-programar-para-ms-dos-con.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/6719366568974515924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/6719366568974515924'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2026/02/aprendiendo-programar-para-ms-dos-con.html' title='¿Aprendiendo a programar para MS-DOS con DIV2 Games Studio? ¡Hagámos un bullet hell! (capítulo 3)'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmYr2-dYEaj-cbLSeseka9ciWX2pyumcAPVU0ClzfPzgN97cnPwwM8TCNAJAYh9dQ9wq4GSEp4sXuGM2SeDjmqFCnA4TobFbkEVPUEEfL1ntAf5zF3yCGGaMhCBh23fQZrrVtf8X3DysiEmqs2es-uU2IBA0YGF5wmj0mUUcy42HW6fB66f-4a/s72-w640-h400-c/000HD.PNG" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-6278095497982301184</id><published>2026-01-13T23:11:00.009+01:00</published><updated>2026-01-14T21:48:27.232+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="devblog"/><category scheme="http://www.blogger.com/atom/ns#" term="div games studio"/><title type='text'>¿Aprendiendo a programar para MS-DOS con DIV2 Games Studio? ¡Hagámos un JRPG! (capítulo 2)</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; ¡Hola a todos los entusiastas de la programación retro! Hoy vamos a sumergirnos de nuevo en el fascinante mundo de DIV Games Studio, un motor de juegos para MS-DOS de 1998 que nos permite crear videojuegos de la época con relativa facilidad. En esta entrada, crearemos un JRPG simple que demuestra conceptos fundamentales como el manejo de procesos, gráficos primitivos, tiles, NPCs y diálogos. El objetivo es enseñar los principios básicos de programación en DIV, ideal para principiantes que quieran dar sus primeros pasos en desarrollo de juegos. Aunque bueno, a lo largo de esta entrada veremos conceptos bastante avanzados.&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;¿Qué es DIV Games Studio?&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; DIV Games Studio es un entorno de desarrollo gratuito para crear juegos en MS-DOS. Utiliza un lenguaje similar al PASCAL, con énfasis en procesos (como hilos ligeros) para manejar lógica de juego, gráficos y audio. Es perfecto para prototipos rápidos y aprendizaje, ya que no requiere compiladores complejos. Si te pica el gusanillo, recuerda que este es el segundo capítulo que dedico a este lenguaje de programación. El primero lo tienes en el siguiente enlace: &lt;a href=&quot;https://www.elgeneralfailure.com/2025/06/aprendiendo-programar-para-ms-dos-con.html&quot;&gt;https://www.elgeneralfailure.com/2025/06/aprendiendo-programar-para-ms-dos-con.html&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;Estructura General del Código&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; El primer ejemplo que veremos es el JRPG_01.PRG (disponible en mi github: &lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_01.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_01.PRG&lt;/a&gt;). Si analizamos el código, veremos que este programa crea un mundo tileado (dividido en casillas) donde el jugador controla un personaje circular, interactúa con NPCs y navega por terrenos variados. Vamos a desglosarlo sección por sección.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;¿Por qué un juego donde la única salida por pantalla son primitivas gráficas y texto? Pues para recordaros un poco los tiempos de las priemras Atari, donde rara vez los juegos venían con sprites.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfgUDcpwIyJYqGouvoOEeKvsTn-igQdBKa5YQ4RpijIY7JCo9GJ1z8FroFO6BSAm4zT82zKdcfCCL16OxsziRyzH-_ddGkePch947iNfUG3CBAzcNXrdKKfkwWNcxrJKLwNyBHgq8G8rlgBY6wUOUVB5KeopT-qTOt-JsU9-wuwMX7SebOR7B_/s1504/Captura%20de%20pantalla%202026-01-05%20a%20las%2019.58.39.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfgUDcpwIyJYqGouvoOEeKvsTn-igQdBKa5YQ4RpijIY7JCo9GJ1z8FroFO6BSAm4zT82zKdcfCCL16OxsziRyzH-_ddGkePch947iNfUG3CBAzcNXrdKKfkwWNcxrJKLwNyBHgq8G8rlgBY6wUOUVB5KeopT-qTOt-JsU9-wuwMX7SebOR7B_/w640-h528/Captura%20de%20pantalla%202026-01-05%20a%20las%2019.58.39.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;1. Configuración inicial y estructuras globales&lt;/h3&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Al inicio, definimos constantes y estructuras globales:&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Constantes y Variables Globales: MAX_NPC limita los NPCs. Variables como offset_x y offset_y manejan el desplazamiento de la cámara.&lt;/li&gt;&lt;li&gt;Structs: Son como clases simples, pero sin lógica. Puedes verlo como la definición de una clase, pero sin implementación lógica (no tienen métodos, ni constructor):&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Controls asigna teclas que utilizaremos en el juego;&lt;/li&gt;&lt;li&gt;Map almacena los tiles (celdas) del mapa; Se trata de una matriz que representa un tablero.&lt;/li&gt;&lt;li&gt;DialogState gestiona el estado de diálogos;&lt;/li&gt;&lt;li&gt;NPCData guarda info de NPCs (posicionamiento en los ejes x e y, sus diálogos, étc.);&lt;/li&gt;&lt;li&gt;Colors define paletas (bosques, ciudades, pasto, agua, montañas...);&lt;/li&gt;&lt;li&gt;ZLevels controla capas de dibujo;&lt;/li&gt;&lt;li&gt;ScreenConfig configura resolución y FPS.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Inicio del Programa: set_mode() establece la resolución (320x240), set_fps() fija 30 FPS. Luego inicializamos controles, mapa y NPCs, y lanzamos procesos.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAXgKa3tY4Ad_uYdCoWEM7T9X4R8enMFVgmmpn92hZIh9sXr0tF_hOaGXRbNHNGyFkzQKUKwvbiSL30O6c2dDeqHWT4W_X-hn0fH3rDEKxKXLHh93AekPo2bSg0u6aSCdHTc7o63t39yidpVWicvAcTQSQNinT40imuMtuX3J7yKDEHHKEi8el/s2326/Captura%20de%20pantalla%202026-01-05%20a%20las%2019.53.24.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1416&quot; data-original-width=&quot;2326&quot; height=&quot;390&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAXgKa3tY4Ad_uYdCoWEM7T9X4R8enMFVgmmpn92hZIh9sXr0tF_hOaGXRbNHNGyFkzQKUKwvbiSL30O6c2dDeqHWT4W_X-hn0fH3rDEKxKXLHh93AekPo2bSg0u6aSCdHTc7o63t39yidpVWicvAcTQSQNinT40imuMtuX3J7yKDEHHKEi8el/w640-h390/Captura%20de%20pantalla%202026-01-05%20a%20las%2019.53.24.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9FK1xn0Nxz8TJ4gFWvLLNisO7r5j4eHT700LW5xsq6GMysa4yChES5723ipFt5dPXopUbGDvTeMYHdtntv2ziTIzyprRD6WFMKR7gCeRJHW-nOat8E8fxQkrpDDGLUmwGXn4jWqbpk0ZWQh-1RVpcx3hDnnlebOa-jZe9t4V7rxpXuOYCoVLU/s2326/Captura%20de%20pantalla%202026-01-05%20a%20las%2019.53.43.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;914&quot; data-original-width=&quot;2326&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9FK1xn0Nxz8TJ4gFWvLLNisO7r5j4eHT700LW5xsq6GMysa4yChES5723ipFt5dPXopUbGDvTeMYHdtntv2ziTIzyprRD6WFMKR7gCeRJHW-nOat8E8fxQkrpDDGLUmwGXn4jWqbpk0ZWQh-1RVpcx3hDnnlebOa-jZe9t4V7rxpXuOYCoVLU/w640-h252/Captura%20de%20pantalla%202026-01-05%20a%20las%2019.53.43.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Las variables globales permiten comunicación entre procesos, mientras que el uso de structs es para organizar la capa de datos. Puedes ver los structs como clases de objetos, pero sin implementación (no poseen métodos ni constructores).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;2. Inicialización de datos&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Tres procesos inicializan datos:&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;InitNPCData(): Rellena NPCData con nombres, diálogos, posiciones y colores.&lt;/li&gt;&lt;li&gt;InitMap(): Crea un mapa tileado (32x24 tiles de 32x32 píxeles). Asigna colores basados en posiciones: campos verdes, montañas marrones, ríos azules, etc. Incluye caminos y ciudades.&lt;/li&gt;&lt;li&gt;InitControls(): Asigna constantes de teclado (_LEFT, _RIGHT, etc.).&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAmfSmcqKXVUZVS4UfMphILRLZtxYNfYEYJY3QSugCLFWGKcoIU74lGI4y4CkMNE8I2aGPWF-oxMD8I7UVSUuSI-jW7pQEq-qP8sTJIn2iUa2Ecjm1a9wDldm8wzST49OVH1hKK43_Muu0cpVwp4XtxS0Sv4Kgv-irzsnGdFNC4tsZNtR5O5Sr/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.01.16.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1372&quot; data-original-width=&quot;2166&quot; height=&quot;406&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAmfSmcqKXVUZVS4UfMphILRLZtxYNfYEYJY3QSugCLFWGKcoIU74lGI4y4CkMNE8I2aGPWF-oxMD8I7UVSUuSI-jW7pQEq-qP8sTJIn2iUa2Ecjm1a9wDldm8wzST49OVH1hKK43_Muu0cpVwp4XtxS0Sv4Kgv-irzsnGdFNC4tsZNtR5O5Sr/w640-h406/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.01.16.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;img border=&quot;0&quot; data-original-height=&quot;1644&quot; data-original-width=&quot;2166&quot; height=&quot;486&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnrKxcNW0oxtCwNUJn-KK02Xfo6UbdUi37QwMbtdbHubSqQ_FszCMdDo8DgrM_pyKckB9e3knA-W4eWfjTabHr3P107fcMYte7VVE0GxATlILKVr4kIQXbRoXELMJHacABrYp4bZ2cOwXs61T3eYyxfm5Di-LelH2HXf6ni835P3DZAb0wABrV/w640-h486/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.01.27.jpg&quot; width=&quot;640&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNLCQxlfQ0so1PwhbOjIOF8AU6yjWqtPdupL_6WZ_U4pRUB7xJcwGizD7y1NYQYGW2uyKJdbSVYsafig7n4dfPh-7ULqWZ4VSh_DTdNBi0fMd05a8klw5RFacOSz9Xxs9WWf4ZMLvvSCxHcUi0Ub63emYViKkrjmzuU9zylhFmdQORkJHe-IUg/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.01.43.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1492&quot; data-original-width=&quot;2166&quot; height=&quot;440&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNLCQxlfQ0so1PwhbOjIOF8AU6yjWqtPdupL_6WZ_U4pRUB7xJcwGizD7y1NYQYGW2uyKJdbSVYsafig7n4dfPh-7ULqWZ4VSh_DTdNBi0fMd05a8klw5RFacOSz9Xxs9WWf4ZMLvvSCxHcUi0Ub63emYViKkrjmzuU9zylhFmdQORkJHe-IUg/w640-h440/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.01.43.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3P6pqBUo-ZfqPw6DW1BvFQ_UtMTbw_QZOTC6gVNbAkHuBR0PoPcIPzHl2oWZmnZ7QRJtGf_uboIz0oeHPyGkSVA_p-angXRoQ0_02fZU9Nr56VTYQ67kXatg6Z9mzf3VHZTEjcgEdKNWnfG2TXx0d3X7DDUDz9Lxta-4HgTTofX0iq3PMJ1Gd/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.02.00.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1434&quot; data-original-width=&quot;2166&quot; height=&quot;424&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3P6pqBUo-ZfqPw6DW1BvFQ_UtMTbw_QZOTC6gVNbAkHuBR0PoPcIPzHl2oWZmnZ7QRJtGf_uboIz0oeHPyGkSVA_p-angXRoQ0_02fZU9Nr56VTYQ67kXatg6Z9mzf3VHZTEjcgEdKNWnfG2TXx0d3X7DDUDz9Lxta-4HgTTofX0iq3PMJ1Gd/w640-h424/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.02.00.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Como ya habréis intuído, DIV no es un lenguaje orientado a objetos, por lo que las estructuras que definimos no tienen un constructor, ni métodos. Esto hace que tengamos que crear procesos de inicialización, para que estos actúen como constructores de clase para dichas estructuras.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En cuanto al uso de bucles FROM para rellenar los distintos arrays de las estructuras, ten en cuenta que, a diferencia de los bucles como FOR o WHILE, los bucles FROM no son condicionales y el valor final a alcanzar debe de ser una constante. Puedes emplear en un FROM una operación con una constante (por ejemplo &quot;MAX_NPC - 1&quot;), pero no una variable dinámica que cambie de valor en tiempo de ejecución. De ser el caso, el compilador te remontará un error.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Respecto al tamaño del mapa, ¿por qué celdas de 32x32 píxeles? ¿Por qué no de 16x16 o de 8x8? Pues se trata de una decisión de diseño debido a que DIV cuenta con una limitación y es que nos deja sólo manejar al mismo tiempo un total de 256 primitivas gráficas (1 byte). Y, aunque tengamos 768 tiles (32x24), gracias al algoritmo implementando (si un tale está fuera de la pantalla, no lo dibujo), a las dimensiones de las tiles (32x32) y al tamaño de la resolución de pantalla (320x240), no nos encontraremos con esa limitación de sobrepasar las 256 primitivas simultáneas en pantalla.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Por cierto, el uso de primitivas gráficas está muy mal optimizado en DIV y DIV2, debido a que las rutinas empleadas son las suyas propias y tienen un costo alto (parece que dibujan las geometrías pixel a pixel, lo que tiene un costo muy elevado en comparación con cargar un sprite y hacer uso de él), especialmente si se usan transparencias. En consecuencia este ejemplo debería de ir terriblemente lento en &lt;i&gt;hardware&lt;/i&gt; real de la época, pero si tenéis un DoxBox configurado con cycles = MAX, el juego debería de iros a 30 frames por segundo (velocidad máxima que he definido con el set_fps).&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;3. Proceso de dibujo del mapa: map_drawer()&lt;/h4&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Este proceso renderiza el mapa visible:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Bucle Principal: En cada frame, borra dibujos antiguos con delete_draw() y cuenta y almacena IDs en draw_ids[].&lt;/li&gt;&lt;li&gt;Cálculo de Visibilidad: Determina qué tiles (celdas) mostrar basándose en offset_x/y, simulando un escenario con scroll.&lt;/li&gt;&lt;li&gt;Dibujo: Usa draw(3, color, 15, 0, x1, y1, x2, y2) para rectángulos rellenos y hacemos uso de draw_z con la estructura ZLevels para establecer la capa de profundidad.&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX8HOu8votAOjs2lrYldTXd4ZpLqSiTTrZ6LKjHd7sRN5NztAuWc3YE37gmcR7NPOuhWysA55C9ovj4ED7E7FaP-MdBSGEde3-T0qYqvdPsIbdv53Ndh28LmLdbvMC2nW57fJ3dHG4-POt5wEiQjHw0x2TYysxP5d1Gn2HVTNb3q1KjZhNp1QR/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.13.52.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1648&quot; data-original-width=&quot;2166&quot; height=&quot;486&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX8HOu8votAOjs2lrYldTXd4ZpLqSiTTrZ6LKjHd7sRN5NztAuWc3YE37gmcR7NPOuhWysA55C9ovj4ED7E7FaP-MdBSGEde3-T0qYqvdPsIbdv53Ndh28LmLdbvMC2nW57fJ3dHG4-POt5wEiQjHw0x2TYysxP5d1Gn2HVTNb3q1KjZhNp1QR/w640-h486/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.13.52.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Claramente este bucle está poco optimizado, puesto que hacemos limpieza y redibujado de la pantalla en cada frame. Para distinguir los distintos niveles de profundidad (mapa, npc o jugador), utilizamos la variable global de draw_z. No obstante, el manejo de draw_z es bastante problemático en DIV. Realmente no existe un z-buffer para las funciones de primitivas en la que puedas indicar &quot;esto va detrás&quot;, &quot;esto va en primer plano&quot;, como sí que existe en los sprites. Draw_z es una variable global, que afecta a TODAS las primitivas gráficas a la vez y es importante que, si juegas con esta variable, su valor modificado esté muy cerca en código al draw que dibuja el objeto, puesto que, al no contar con &lt;i&gt;mutex&lt;/i&gt; (semáforos), en caso de que el procesador priorice otro proceso, puedes encontrarte con cambios no deseados de profundidad (del estilo dibujar el mapa encima del jugador). Este problema se hace especialmente notorio en máquinas potenters, que procesan un mayor número de frames por segundo.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; El principal problema que hay con draw_z es que, al ser una variable global del propio &lt;i&gt;framework&lt;/i&gt;, en el momento que todos los procesos ejecutan el comando FRAME, encargado de dibujar todo un fotograma completo en pantalla, todas las primitivas que vayan a dibujarse por pantalla tendrán realmente la misma profundidad. Para &lt;i&gt;bypasear&lt;/i&gt; este problema la única solución seria que hay es forzar una impresión puramente secuencial, forzando a dibujar primero por lógica el mapeado y después los personajes (cosa que no hago en este ejemplo), lo cual entra en conflicto con la idea de usar procesos independientes para cada cosa. Por suerte este problema no lo tenemos con los sprites o imágenes de fondo.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Si os fijáis, este tema del z-buffer con primitivas no es algo tan raro, en juegos de Atari, por ejemplo, era bastante común tener efectos de parpadeos de personajes si esto se implementaba mal (del estilo asegurarse a&lt;i&gt;&amp;nbsp;&lt;/i&gt;dibujar&amp;nbsp;el personaje en un fotograma distinto al escenario), o incluso en la primera PlayStation el manejo de los juegos 3D daban problemas notorios de perspectiva, al no saberse interpretar correctamente qué texturas tenían que sobreponerse sobre otras.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;4. Proceso del jugador: player()&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Maneja movimiento, colisiones y interacciones:&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Movimiento: Ajusta velocidad por terreno (bosques/montañas ralentizan) y evita agua con &lt;i&gt;checks&lt;/i&gt; de colisión.&lt;/li&gt;&lt;li&gt;Cámara: offset_x/y centran la vista en el jugador.&lt;/li&gt;&lt;li&gt;Dibujo: Dibuja un círculo con draw(5, 15, 15, 0, ...).&lt;/li&gt;&lt;li&gt;Interacción: Calcula la distancia a NPCs; presiona ENTER para dialogar con el más cercano.&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5pr9FktIMiHJpFam9UakjbVUf4Xxa0ITOWAsX6z7UVkoFwKUPWslvia68YGVhaHZPrE9ZUy7TUkLxbrhLjnRPA0YprhKxttkmYBA6Pz_b6A6kUtQpnY8ymAScRORgW2Vz9Q2Z_eHHRFUVyWzsIVMVlREgfmzPu6hJR44NOI8L18autLm8Jwfy/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.19.56.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1604&quot; data-original-width=&quot;2166&quot; height=&quot;474&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5pr9FktIMiHJpFam9UakjbVUf4Xxa0ITOWAsX6z7UVkoFwKUPWslvia68YGVhaHZPrE9ZUy7TUkLxbrhLjnRPA0YprhKxttkmYBA6Pz_b6A6kUtQpnY8ymAScRORgW2Vz9Q2Z_eHHRFUVyWzsIVMVlREgfmzPu6hJR44NOI8L18autLm8Jwfy/w640-h474/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.19.56.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjveesQ52B3L6bTEUX0zUHfHCtDKy5-2E4YL2jvH5yAyguwtDxJ1sVH6v4qhlihHTbke_Yd7bMfjmxslXSdCuREiTF5gpZENMDap4xreOlD85VMl9ekwUHBoRTv_eIG7cGqYpM_wMPrAyIcr2lqNEsJKjQHOc3OZfPxhB4xWkenz30TFAZ0Qknz/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.20.12.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1518&quot; data-original-width=&quot;2166&quot; height=&quot;448&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjveesQ52B3L6bTEUX0zUHfHCtDKy5-2E4YL2jvH5yAyguwtDxJ1sVH6v4qhlihHTbke_Yd7bMfjmxslXSdCuREiTF5gpZENMDap4xreOlD85VMl9ekwUHBoRTv_eIG7cGqYpM_wMPrAyIcr2lqNEsJKjQHOc3OZfPxhB4xWkenz30TFAZ0Qknz/w640-h448/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.20.12.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt-njtidSHbfmBOEaORAfJ7JxuYRqxBGOeNg_Hs1xdqGEqrx7CYDoKNW5HjaybUnUJQ0RBOinpA3O2JuD9eq0HS_y4-9Pc_Xn88CBXglRWELZARpsOMQ6er3MqS3gQH106lW2oAjTcw0E6AjnV4QXrMZ3Uyqovvh_TdgKtfLd8EFPDAWNyuwTp/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.20.24.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1492&quot; data-original-width=&quot;2166&quot; height=&quot;440&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt-njtidSHbfmBOEaORAfJ7JxuYRqxBGOeNg_Hs1xdqGEqrx7CYDoKNW5HjaybUnUJQ0RBOinpA3O2JuD9eq0HS_y4-9Pc_Xn88CBXglRWELZARpsOMQ6er3MqS3gQH106lW2oAjTcw0E6AjnV4QXrMZ3Uyqovvh_TdgKtfLd8EFPDAWNyuwTp/w640-h440/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.20.24.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En player capturamos los controles y verificamos si la casilla de destino es una montaña o un bosque para relentizar la velocidad del jugador y de paso evitamos que se pueda cruzar por una casilla de agua. En lo que concierne a la rutina para calcular cual es el NPC más cercano, aunque DIV tiene funciones para calcular la distancia entre dos procesos (distancia = get_dist(&amp;lt;código identificador&amp;gt;) o distancia = fget_dist(x, y, id2.x, id2.y)), hago uso de una simple función algebraica basada en el Teorema de Pitágoras para obtenerla (distancia = sqrt((player_x - NPCData[i].x) * (player_x - NPCData[i].x) + (player_y - NPCData[i].y) * (player_y - NPCData[i].y)).&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;5. Proceso de NPCs: npc(id_char)&lt;/h4&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Renderiza los NPC como círculos:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Visibilidad: Solo dibuja si el NPC está en pantalla.&lt;/li&gt;&lt;li&gt;Dibujo: Similar al jugador, con draw_z = ZLevels.npc.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVJ4cIlmFiFoqbIsvINyDlqSnh8WksL2xg3hoi6hyXC4HxjQylCo7aJvcumGzIniUs6RvZ2e_AXxGJ9Mw-AgCmlIWsbGngz2DKxXlHcDySaEQKHzf_dC60r0ezi8_E3PIitNQ8075R1PnQgWuynuJvSbxuRQwrhjb0m4oZ-VCu1O2Hs1SS1qcM/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.29.04.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1124&quot; data-original-width=&quot;2166&quot; height=&quot;332&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVJ4cIlmFiFoqbIsvINyDlqSnh8WksL2xg3hoi6hyXC4HxjQylCo7aJvcumGzIniUs6RvZ2e_AXxGJ9Mw-AgCmlIWsbGngz2DKxXlHcDySaEQKHzf_dC60r0ezi8_E3PIitNQ8075R1PnQgWuynuJvSbxuRQwrhjb0m4oZ-VCu1O2Hs1SS1qcM/w640-h332/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.29.04.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;6. Sistema de diálogos: dialogue(name, text)&lt;/h4&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Abre una ventana de texto:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Animación: Construye una cadena de texto con el diálogo del NPC juntando letra a letra.&lt;/li&gt;&lt;li&gt;Input: ENTER para auto-completar el texto y/o cerrar el diálogo.&lt;/li&gt;&lt;li&gt;Dibujo: Uso de draw() para el fondo y write() para texto.&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiDz2hZCytRp7mIK2Zc6fDsvi5fpZF8gj3UNInvBcv2PepSpWa-12Ut6QD3qLCoVPlkqFVRTrFIfvTwK_rJ499SiZ5kiOo6JafU6gHKeGkdURwtXV6r-xrOJHArnHKNz6jgAJx-ffEAxFJLMD7Y2FOwZrmFqW7I9foITA9YzhRZ30wGsKZvi2m/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.30.40.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1650&quot; data-original-width=&quot;2166&quot; height=&quot;488&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiDz2hZCytRp7mIK2Zc6fDsvi5fpZF8gj3UNInvBcv2PepSpWa-12Ut6QD3qLCoVPlkqFVRTrFIfvTwK_rJ499SiZ5kiOo6JafU6gHKeGkdURwtXV6r-xrOJHArnHKNz6jgAJx-ffEAxFJLMD7Y2FOwZrmFqW7I9foITA9YzhRZ30wGsKZvi2m/w640-h488/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.30.40.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXElvV3PDSU4Uurnp7TMd9NdPmFoepvmjB09JuVMD7F3siGpRTcAMoEuJrvDBZe-twuh29hTf1rhgK5pVTbzoZpL4A4VhKWLp575quCgMe0LVynD_f3Yc6GvvdF_y7nyIfO_fnZqWgHyMJzJPZwDjc3cTCuPc9p8kAMc953A6Aa6xXjW7FbNHZ/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.30.55.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1174&quot; data-original-width=&quot;2166&quot; height=&quot;346&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXElvV3PDSU4Uurnp7TMd9NdPmFoepvmjB09JuVMD7F3siGpRTcAMoEuJrvDBZe-twuh29hTf1rhgK5pVTbzoZpL4A4VhKWLp575quCgMe0LVynD_f3Yc6GvvdF_y7nyIfO_fnZqWgHyMJzJPZwDjc3cTCuPc9p8kAMc953A6Aa6xXjW7FbNHZ/w640-h346/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.30.55.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicbmAQcVmiLhkqbg_Rzsdj1wBhhLkc790cKjPDN6SPdgWvTago7sZ3edyMzbAXQLDTxxru04-ZZk4_zww7gBq6I7C2PMFHFJIz1JUTi-gGsbRFhWxOYQVkcS8bt8kNv_H_x3nVPJs-5xeQEdTcJ1YAUs0nm5VAOj9aw2XYVHu-qUkTaN6uVAcW/s2166/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.31.08.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1336&quot; data-original-width=&quot;2166&quot; height=&quot;394&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicbmAQcVmiLhkqbg_Rzsdj1wBhhLkc790cKjPDN6SPdgWvTago7sZ3edyMzbAXQLDTxxru04-ZZk4_zww7gBq6I7C2PMFHFJIz1JUTi-gGsbRFhWxOYQVkcS8bt8kNv_H_x3nVPJs-5xeQEdTcJ1YAUs0nm5VAOj9aw2XYVHu-qUkTaN6uVAcW/w640-h394/Captura%20de%20pantalla%202026-01-05%20a%20las%2020.31.08.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Ejemplo 2&amp;nbsp;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Con todo esto ya tendríamos algo funcional: Un personaje que se pasea por un mapa y que habla con distintos NPC. Este código demuestra lo esencial de DIV: Procesos concurrentes, dibujo primitivo y manejo de estado. Pero a nivel jugable, poco podemos hacer y, para extenderlo y hacerlo más disfrutare,&amp;nbsp; podríamos agregar un inventario y más mapas... Y ahí surge el segundo ejemplo que os traigo hoy, el &quot;JRPG_02.PRG&quot; (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_02.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_02.PRG&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;En esta segundo ejemplo, nos en una versión optimizada que introduce mejoras significativas. Veremos cómo estas optimizaciones no solo mejoran el rendimiento y la jugabilidad, sino que también enseñan conceptos más avanzados de programación en DIV.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; JRPG_01.PRG era funcional, pero tenía limitaciones: redibujaba el mapa entero cada frame (causando flickering), usaba procesos separados para NPCs (ineficiente, imaginad un mapa con 100 npc), y carecía de mapas múltiples o inventario. Esta nueva resuelve estos problemas con optimizaciones que reducen el overhead de CPU y añaden más funcionalidades. Vamos a desglosar las mejoras clave:&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;1. Dirty Rectangles Approach para redibujar el mapa sólo si es necesario&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;El Dirty Rectangles Approach (enfoque de rectángulos sucios) es una técnica de optimización en programación gráfica 2D diseñada para reducir la carga de procesamiento al evitar el redibujado innecesario de toda la pantalla, siguiendo a su vez la premisa del&amp;nbsp;&quot;lazy evaluation&quot; (no hagas trabajo innecesario).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;En la función de map_drawer, el problema con nuestro enfoque inicial era que el proceso redibujaba todo el mapa visible cada frame, incluso si la cámara no se movía. Esto consumía recursos innecesariamente. Para aplicar esta estrategia, hago uso de&amp;nbsp; variables globales para rastrear cambios de estado y redibujamos el mapa sólo cuando cambian los valores de offset_x, offset_y o current_map:&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJQxCEiu3ySs5iNKhj8BvAqdYGtdm3Lf0f1QphuyJLT7TlVpMZhig-XUkiJAgHjrOqnAuT_IfSJ6XAgY-k0kn2siWRHaNFEuVs9eYln5qD5Lj8cvBhG5SISJs_zcQX2ofrEl9GacZAEIlu-0On_NpgqnJdIO3G49fm_CZjzLeZs7pqkHtaMHx5/s2598/Captura%20de%20pantalla%202026-01-06%20a%20las%2011.49.22.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1706&quot; data-original-width=&quot;2598&quot; height=&quot;420&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJQxCEiu3ySs5iNKhj8BvAqdYGtdm3Lf0f1QphuyJLT7TlVpMZhig-XUkiJAgHjrOqnAuT_IfSJ6XAgY-k0kn2siWRHaNFEuVs9eYln5qD5Lj8cvBhG5SISJs_zcQX2ofrEl9GacZAEIlu-0On_NpgqnJdIO3G49fm_CZjzLeZs7pqkHtaMHx5/w640-h420/Captura%20de%20pantalla%202026-01-06%20a%20las%2011.49.22.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;2. Renderizado consolidado en un solo proceso&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;En el código inicial teníamos el renderizado de cada proceso por separado (map_drawer, npc y player), lo cual suele ser lo normal en los juegos que programamos con DIV, pero trae dos problemas principales en nuestro diseño: Al usar sólo primitivas gráficas en lugar de sprites, podemos sufrir de flickering y superposiciones mal gestionadas por estar todo en la misma coordenada del z-buffer; Además, trae problemas de escalabilidad, puesto que cuantos más NPC pongamos en el mapa, más llamadas ralentizaremos nuestro juego (imaginaros 100 procesos NPC compitiendo con el map_drawer o el proceso del player).&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Con esta nueva versión todo el dibujo se consolida en map_drawer y eliminamos el proceso de NPC al ser redundante (ahora entendéis por qué usaba el teorema de Pitágoras para obtener el NPC más cercano al jugador).&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsh-_WuKVL3fhyonoDaLr72ZLu3Zi5eAvIesUzr07uzkvKxcOY6e2Tq2UkBVrttj_22rSm5d6Kn_O-g-ZzfQJY_zJ5MmGOHcAaAYP2loOWxjXlCBFg6QPYSMt7sfVRlvaWSDnrKFGNADCP3vjmrl1elUEHdjbQ4vq2wi1DBAwIEzHMQNVGbhQA/s2598/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.19.41.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1608&quot; data-original-width=&quot;2598&quot; height=&quot;396&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsh-_WuKVL3fhyonoDaLr72ZLu3Zi5eAvIesUzr07uzkvKxcOY6e2Tq2UkBVrttj_22rSm5d6Kn_O-g-ZzfQJY_zJ5MmGOHcAaAYP2loOWxjXlCBFg6QPYSMt7sfVRlvaWSDnrKFGNADCP3vjmrl1elUEHdjbQ4vq2wi1DBAwIEzHMQNVGbhQA/w640-h396/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.19.41.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;3. Múltiples mapas y transiciones suaves&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;En esta nueva versión tenemos tres mapas: Un mamamundi de 32x24 tiles y dos ciudades de 8x8. Para gestionar esto transformamos el struct MapData en un array y creamos una variable global &quot;current_map&quot; que nos indica en qué mapa nos encontramos.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj29P1t1kL_WhyphenhyphenzqOuYClWZnOrNzvSRMH74o2R32Vx85pNaJLPS_RSnEedvfQAFmJ5UvdahUGGRQ9BpPKrUre_n1dLgN4sgf2nTen9IkAPumwT4CcQHwnJMU0IhgK0D8r_kusKTCC_8T-Q6nNQ5l6bVJcaAEhOlVnnC_SUBz_C5wChwPc_ni2td/s2598/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.25.50.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;962&quot; data-original-width=&quot;2598&quot; height=&quot;236&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj29P1t1kL_WhyphenhyphenzqOuYClWZnOrNzvSRMH74o2R32Vx85pNaJLPS_RSnEedvfQAFmJ5UvdahUGGRQ9BpPKrUre_n1dLgN4sgf2nTen9IkAPumwT4CcQHwnJMU0IhgK0D8r_kusKTCC_8T-Q6nNQ5l6bVJcaAEhOlVnnC_SUBz_C5wChwPc_ni2td/w640-h236/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.25.50.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Por ahora las áreas de teletransporte (si entro en X voy al mapa Y) las defino por código &lt;i&gt;hardcode&lt;/i&gt; y también filtro así qué NPC están en cada mapa, pero la idea es que en el código final (el del siguiente ejemplo) veáis un enfoque mejor estructurado (definiendo estas áreas y filtros directamente en las estructuras de datos). Otra cosa que me gusta señalar, es el uso de fade_on y fade_off para forzar fundidos de pantalla cuando cambiamos de mapa.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzbJYRK6S5vzoXUk66LkKrP6qVmgUsAJaTYRIMxc42CP5TgAklnspt-_8nStWGTZsrDqiMDofypgiR-E_gnrBhjWEEgTHvUXbV2KEh0cWBLxcZ5SvEzXzUjMLj3tjoK2eHa87PNW8huQMtidZFfA4FFyJvSnapHisT-KKE0ZTBd8VdQ22uhCMJ/s2598/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.33.56.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1584&quot; data-original-width=&quot;2598&quot; height=&quot;390&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzbJYRK6S5vzoXUk66LkKrP6qVmgUsAJaTYRIMxc42CP5TgAklnspt-_8nStWGTZsrDqiMDofypgiR-E_gnrBhjWEEgTHvUXbV2KEh0cWBLxcZ5SvEzXzUjMLj3tjoK2eHa87PNW8huQMtidZFfA4FFyJvSnapHisT-KKE0ZTBd8VdQ22uhCMJ/w640-h390/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.33.56.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh260kaKK7fYgNIIgM3Wqb9znJIMJnoGGsr-uam83cLeHSIdEWQvPN-OqisRGsbq8r8JPTWRaEYfS_NSMgOkgZbClr45PuEk5LM1uwzvFE5CBFjlAEHim6_1l2mvDLRJBMD72eukD11BUjudA_ECrYw4WY14um8Il2CWzIXJk4fJEcS5aOZPiOY/s2598/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.34.15.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1008&quot; data-original-width=&quot;2598&quot; height=&quot;248&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh260kaKK7fYgNIIgM3Wqb9znJIMJnoGGsr-uam83cLeHSIdEWQvPN-OqisRGsbq8r8JPTWRaEYfS_NSMgOkgZbClr45PuEk5LM1uwzvFE5CBFjlAEHim6_1l2mvDLRJBMD72eukD11BUjudA_ECrYw4WY14um8Il2CWzIXJk4fJEcS5aOZPiOY/w640-h248/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.34.15.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;4. Sistema de inventario&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En esta nueva versión disponemos de un inventario de hasta 10 objetos. Estos objetos básicamente son un array de 10 strings (cadenas de texto). El sistema tiene mucho margen de mejora y, por ejemplo, podemos crear un struct objeto y meterle un &lt;i&gt;integer&lt;/i&gt; de cuantía, pero no quiero adelantar acontecimientos del próximo ejemplo.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; Los strings en DIV son unidimensionales, por lo que no podemos crear un array de strings de forma implícita, ni siquiera forzando la definición de una matriz (array de arrays), pero podemos crear un array de una estructura que contenga únicamente un string para poder crear un falso array de strings:&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeqH8wsp-g0paaD-jtZscKPa-_urUGPDlBVAVYWHQzjzgcM7FFbAa0Wc94JNDv0dRXSCOZy0LHJ5AFq9hQxH0D7xlTIzZ2JGeS0M2GnJy5RHQ7Un0nhYTp0Z43oL_SDndU0Gy1rkr6KcHYQ50iV5Ln4y09ZJeTtCQBOfdDKEsBs9hTrsLAhRY9/s2598/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.37.16.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;122&quot; data-original-width=&quot;2598&quot; height=&quot;30&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeqH8wsp-g0paaD-jtZscKPa-_urUGPDlBVAVYWHQzjzgcM7FFbAa0Wc94JNDv0dRXSCOZy0LHJ5AFq9hQxH0D7xlTIzZ2JGeS0M2GnJy5RHQ7Un0nhYTp0Z43oL_SDndU0Gy1rkr6KcHYQ50iV5Ln4y09ZJeTtCQBOfdDKEsBs9hTrsLAhRY9/w640-h30/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.37.16.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; La gestión de strings en div requieren una mención 
especial, puesto que cuando hacemos una definición del estilo &quot;string cadena[256]&quot; 
no estás creando un array de 256 strings, si no un string de 256 
caracteres (la talla del string). Además, cabe mencionar que el operando
 &quot;=&quot; copia por referencia en los strings, es decir, la asignación &quot;a = 
b&quot; hace que las cadenas a y b apunten a la misma región de memoria:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; string a = &quot;123&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; string b = &quot;456&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; a = b;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; b[0] = &quot;5&quot;;&amp;nbsp; // -&amp;gt; a y b valen ahora &quot;556&quot;.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Esto
 suele ser un quebradero de cabeza para cualquiera que no esté 
acostumbrado a trabajar con punteros, por lo que si quieres copiar el 
contenido de un string sin que ambas variables apunten a la misma región
 de memoria, lo ideal es usar la función strcpy (uso -&amp;gt; 
strcpy(cadena_destino, cadena_origen).&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL68PvoCXJRzi9yp9x05GApCDRXXT0TrkV9oNXNgPOTLyJPEYGEBn39IvuJMWPth8yOHeVVPSXEYHq4eigHe1t547swdPSTKkiPSHAWyOIuVpEtjFZr2r-uAYLGhOk3rbE3jQ35yRhZzJKA1MlgwOp4hAvpJD2-S5SW0Jy2SAWWyB03yMN237J/s2598/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.11.49.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;776&quot; data-original-width=&quot;2598&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL68PvoCXJRzi9yp9x05GApCDRXXT0TrkV9oNXNgPOTLyJPEYGEBn39IvuJMWPth8yOHeVVPSXEYHq4eigHe1t547swdPSTKkiPSHAWyOIuVpEtjFZr2r-uAYLGhOk3rbE3jQ35yRhZzJKA1MlgwOp4hAvpJD2-S5SW0Jy2SAWWyB03yMN237J/w640-h192/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.11.49.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Esto por suerte sólo pasa 
con las cadenas de texto, el reto de tipo de datos de DIV suelen 
copiarse por valor y no por referencia. Y bueno, por ahora la única forma de obtener objetos es aceptando el ofrecimiento de un NPC que se encuentra en el mapamundi, pero la idea es que al final podamos recogerlos del suelo, comprarlos o obtenerlos de cofres del tesoro. Además, si pulsamos la tecla &quot;escape&quot; veremos un inventario con la lista de objetos que tenemos acumulados.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi95UmU_M4KiJItPnd2fM-qR1DZOzEu0m2SwigeWKyK0hsJb5PJSZ70aZBG4GwUCESf_JuJNUgQAVBR0OwilfxI-CJVjwrJUQIb1gD7V3s-ACWSSkntYtPpi9f_hReIZ-KKcUM6LTQJPY5GKsR-eb7AzTqngGuoudbvbanKamcq1hlQS3PJmlgm/s1504/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.47.19.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi95UmU_M4KiJItPnd2fM-qR1DZOzEu0m2SwigeWKyK0hsJb5PJSZ70aZBG4GwUCESf_JuJNUgQAVBR0OwilfxI-CJVjwrJUQIb1gD7V3s-ACWSSkntYtPpi9f_hReIZ-KKcUM6LTQJPY5GKsR-eb7AzTqngGuoudbvbanKamcq1hlQS3PJmlgm/w640-h528/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.47.19.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtxglZ-jLMCdvv61PJ1EIocEmIQGtdexw1TJQvkGGyer8rbcL6K5HGsRbylWcCBxKooj1bpkQzEYuygvHn3DvEvHSxHbJ2Ye4aG9ZQ6YJ1HNR8tL7i-3z3_ElXO5BxT-NTBUW725gUdgUhWbtrvJYN5iviecYHc0Cl3n6gGZ5tBXtZnYFmUDzt/s1504/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.47.36.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtxglZ-jLMCdvv61PJ1EIocEmIQGtdexw1TJQvkGGyer8rbcL6K5HGsRbylWcCBxKooj1bpkQzEYuygvHn3DvEvHSxHbJ2Ye4aG9ZQ6YJ1HNR8tL7i-3z3_ElXO5BxT-NTBUW725gUdgUhWbtrvJYN5iviecYHc0Cl3n6gGZ5tBXtZnYFmUDzt/w640-h528/Captura%20de%20pantalla%202026-01-06%20a%20las%2012.47.36.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;6. Música de fondo&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En este ejemplo no he añadido aún efectos de sonido, pero si os fijáis se hace uso de load_Song() y play_song() para ejecutar una de las canciones que vienen con la instalación de DIV2. La función de &quot;load_song()&quot; soporta formatos los MOD, S3M y XM. Estos formatos pertenecen a la familia de los archivos de módulos (Tracker music) y, a diferencia de un MP3 que es una grabación de audio digital, estos archivos funcionan como una partitura digital con sus propios instrumentos incluidos. Un archivo de módulo no contiene una onda de sonido continua (como un wav, un pcm, un mp3 o un ogg), si no que contiene &quot;&lt;i&gt;samples&lt;/i&gt;&quot; de sonido (una nota de piano, un golpe de batería, etcétera) y un secuenciador (una lista de instrucciones que indica qué nota tocar, en qué momento, con qué efecto (volumen, vibración) y en qué canal).&amp;nbsp;Estos ficheros ocupan muy poco espacio (KB o pocos megas) manteniendo una calidad de sonido alta, ya que el audio se genera en tiempo real.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLOl8b137JkE76MCJK83I3Fxn0rzemZN4qzLO_C-j4NG3825FdNMN3JNQozv8YIRWFOfElGgBmQhVLJvxf7lbfGvJYey9Ot5Uh2SAbzqwpHK93XnF0g58q6oAUSy7h5hdsESXla9snz7-3ZcvTnNRyIbsnDGT2oszMj6gYY3iPxkzK8fIcZW2c/s1372/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.26.42.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;388&quot; data-original-width=&quot;1372&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLOl8b137JkE76MCJK83I3Fxn0rzemZN4qzLO_C-j4NG3825FdNMN3JNQozv8YIRWFOfElGgBmQhVLJvxf7lbfGvJYey9Ot5Uh2SAbzqwpHK93XnF0g58q6oAUSy7h5hdsESXla9snz7-3ZcvTnNRyIbsnDGT2oszMj6gYY3iPxkzK8fIcZW2c/w640-h180/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.26.42.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioz3p5XdbUzI10WF4YR9eef9LgTpAYYefr3lIKmMhTfn-NrsxG5mcMFucpkFr5XZ8-hITeDiIuIebTWMviCI0JNPkNQop52WDWO13gzdmDhdUnCAaYrUuh_8exKDSU5o6lhSoX7XzVvPZdySfkqDSg0Ln2PAL1MILy5mumnBeyhmqynCArtAYD/s2598/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.19.50.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;776&quot; data-original-width=&quot;2598&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioz3p5XdbUzI10WF4YR9eef9LgTpAYYefr3lIKmMhTfn-NrsxG5mcMFucpkFr5XZ8-hITeDiIuIebTWMviCI0JNPkNQop52WDWO13gzdmDhdUnCAaYrUuh_8exKDSU5o6lhSoX7XzVvPZdySfkqDSg0Ln2PAL1MILy5mumnBeyhmqynCArtAYD/w640-h192/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.19.50.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;7. Diálogos interactivos con recompensas&lt;/h4&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp; Otra de las adaptaciones de este ejemplo es la inclusión de dialogos básicos con elecciones de &quot;Sí/No&quot; que además permiten obsequiar con objetos. Para ello hago uso de flags de estados y extiendo las estructuras de diálogos y NPC.&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPuxLhwLPvfM73f2r5iRA5n0EJgXgDUYkOMKSAZmMHUG2DKOOUOGA72WhYIv33IbSmzGoEivz5aiM-07I3xLeKpYGg2WZovbYI98LcZAYAb34CRfUaxSlBwftSo0nAQHFBmqRzNUNNs-KxCd1OAq7lLulwgjHYjusJMS9EUUi8MrfTj7YpXkl3/s2550/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.30.14.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;898&quot; data-original-width=&quot;2550&quot; height=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPuxLhwLPvfM73f2r5iRA5n0EJgXgDUYkOMKSAZmMHUG2DKOOUOGA72WhYIv33IbSmzGoEivz5aiM-07I3xLeKpYGg2WZovbYI98LcZAYAb34CRfUaxSlBwftSo0nAQHFBmqRzNUNNs-KxCd1OAq7lLulwgjHYjusJMS9EUUi8MrfTj7YpXkl3/w640-h226/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.30.14.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKIFKRXkyB2KAd7DOapDqqCHuflKwW7JUa8o4wEIZ-yF_jd7arzxGdOnsMneCuvWg8Dei3kTwXbAw079A9bp_a7U7gUV-Ri6bqjshHdul4piypyGFJdKlmde7EjKAmjfSDO1shTK3V60sHNIfJmcMVAYglJF72gDrmAaNbSkHDFWbtmi1yNR5q/s2604/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.31.26.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;910&quot; data-original-width=&quot;2604&quot; height=&quot;224&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKIFKRXkyB2KAd7DOapDqqCHuflKwW7JUa8o4wEIZ-yF_jd7arzxGdOnsMneCuvWg8Dei3kTwXbAw079A9bp_a7U7gUV-Ri6bqjshHdul4piypyGFJdKlmde7EjKAmjfSDO1shTK3V60sHNIfJmcMVAYglJF72gDrmAaNbSkHDFWbtmi1yNR5q/w640-h224/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.31.26.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Ejemplo 3&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;¿Y qué más podemos hacer para mejorar nuestro juego? Bueno, en la descripción del ejemplo anterior vimos varias posibles mejoras:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Definir los NPC que salen en cada mapa dentro de la estructura de mapas.&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Definir los teletransportes (si estoy en la casilla X -&amp;gt; voy al mapa Y) dentro de la estructura de mapas.&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Adaptar el sistema de inventario para permitir cuantías (en vez de ver el mismo ítem en varias líneas) y además obtener una descripción.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhahbfrlzwtBaqkoSfOK0wGQokV2WF7DuHv2HNjFQIMR3cjq_-wlywXTSZHM8ssRbsObRJ2bREoDN_cSCH3ByWs4isdm4Fox1RYmK0HlsbgHOj58-9WGWDFh3jpYCE9uHfn3BQO8CbFwVGt9Dd91H5Vox_ye23lKDeLDC_4U20j2eQpeefe_q1k/s1504/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.59.56.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhahbfrlzwtBaqkoSfOK0wGQokV2WF7DuHv2HNjFQIMR3cjq_-wlywXTSZHM8ssRbsObRJ2bREoDN_cSCH3ByWs4isdm4Fox1RYmK0HlsbgHOj58-9WGWDFh3jpYCE9uHfn3BQO8CbFwVGt9Dd91H5Vox_ye23lKDeLDC_4U20j2eQpeefe_q1k/w640-h528/Captura%20de%20pantalla%202026-01-06%20a%20las%2021.59.56.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Y dicho y hecho, el ejemplo 3 que encontraréis en mi github (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_03.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_03.PRG&lt;/a&gt;) realiza justamente todas esas adaptaciones en el código:&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;214&quot; data-original-width=&quot;1286&quot; height=&quot;106&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLo69BTX7c5oAA9L2R6VAiVIrX1dKMxQd3yaozxwiScl7sMm9kriI_lgoX2DSclbLpnRNUS05dI1vSsbiOoXu8CAmoOTG4EM_msN9zwqai-0Z8ZyNkakMKuEfFJjreBLRiPkVlT09RnqyIkj4Okm6bptzsW_ru_XS09IXiUmAM9tpR78u2qv4h/w640-h106/Captura%20de%20pantalla%202026-01-06%20a%20las%2022.06.38.jpg&quot; width=&quot;640&quot; /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBIplNfb578-wvD0GEmwTHCzXtae8mURmVjARnCRiJrabKY6QMFacq9eojG8UAsFr_AW98GPnR-pZJ3jR7ZQsvkOlQ6ImXp_fN88YuOVqrfawumbG-VLvYbEloPSncBSOUVVGWiuzmMrkN5zM4iPD5KLxn2dCSYC5IB3EIcNhzsT2dG2YG2BxN/s1286/Captura%20de%20pantalla%202026-01-06%20a%20las%2022.06.53.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;934&quot; data-original-width=&quot;1286&quot; height=&quot;464&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBIplNfb578-wvD0GEmwTHCzXtae8mURmVjARnCRiJrabKY6QMFacq9eojG8UAsFr_AW98GPnR-pZJ3jR7ZQsvkOlQ6ImXp_fN88YuOVqrfawumbG-VLvYbEloPSncBSOUVVGWiuzmMrkN5zM4iPD5KLxn2dCSYC5IB3EIcNhzsT2dG2YG2BxN/w640-h464/Captura%20de%20pantalla%202026-01-06%20a%20las%2022.06.53.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqR1Fcrp6bYmYBP0awqoj0G6J6-dcLYnOuDVmUktxGpWuwMkqHGrhhT2X_8hc3vo8ejY64NYF_liabC_Q1hZ_igVVaqdMI7RqTlAlLB86Nph0Z01E9nWG5Q-Pk-JBDSNXM5dGURhtZDUcDCflZueIYR_rvkbRWUrZeWzNAPb-nVJjg66mcvA9m/s1796/Captura%20de%20pantalla%202026-01-06%20a%20las%2022.07.46.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1086&quot; data-original-width=&quot;1796&quot; height=&quot;386&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqR1Fcrp6bYmYBP0awqoj0G6J6-dcLYnOuDVmUktxGpWuwMkqHGrhhT2X_8hc3vo8ejY64NYF_liabC_Q1hZ_igVVaqdMI7RqTlAlLB86Nph0Z01E9nWG5Q-Pk-JBDSNXM5dGURhtZDUcDCflZueIYR_rvkbRWUrZeWzNAPb-nVJjg66mcvA9m/w640-h386/Captura%20de%20pantalla%202026-01-06%20a%20las%2022.07.46.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Ejemplo 4&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;¿Y qué más podemos hacer para mejorar nuestro juego? Bueno, en vez de definir los mapas, los teletransportes y los NPC en &lt;i&gt;hardcode&lt;/i&gt; dentro del código, podemos aprovechar que lo tenemos ya todo definido en una única estructura de datos (MapData) para guardar toda esa lógica en un fichero externo (imaginaros un futuro donde creamos un editor de niveles) y crear funciones en nuestro código para leer dicho fichero.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Con esto en mente he creado este cuarto ejemplo (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_04.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_04.PRG&lt;/a&gt;), que a nivel funcional es idéntico al tercer ejemplo, pero que carga los mapas y los ítems a través de ficheros &quot;.dat&quot; que genero con un programa que he creado únicamente para ese fin (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN.PRG&lt;/a&gt;). ¿Por qué es necesario crear un programa para crear el fichero &quot;.dat&quot;? Bueno, podríamos crear nuestro propio tipo de fichero en texto plano, modificarlo con un editor de texto y adaptar el código de nuestro juego para interpretarlo, pero lo fácil es coger una estructura ya existente y grabarlo &quot;tal cual&quot; para recuperarlo. El problema es que cuando escribimos una estructura de memoria al disco, estamos volcando código en binario, imposible de manipular con editores de texto.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;El hecho de guardar estructuras y objetos en formato binario dentro de un fichero no es algo raro y se hace a día de hoy (de hecho, así funciona la mayoría de los famosos ficheros &quot;&lt;i&gt;save&lt;/i&gt;&quot; de los juegos comerciales). A este proceso se le conoce como serialización y desserialización de un objeto. La diferencia es que aquí, en vez de hacer un &quot;save&quot; de nuestra partida, lo hacemos sobre la configuración de los mapas, NPC y objetos.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMh-W5g7Tc9Sb8nGFKTAdIiUKQDv7mcx9xvO-x-ciZJa_Kh0YO505aSdqttlG3nIgxRwYrFGzg3t2CWTZThX772x86JkJjQqruvxM46JLil0vWXSBT1PboLrcNs-1wCl200QfT5ZZ4msOJ2lHSZ9x1cU-ZgGl-tsd-k7Q_II0PE7bnkiljVTF0/s1806/Captura%20de%20pantalla%202026-01-07%20a%20las%200.29.43.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;978&quot; data-original-width=&quot;1806&quot; height=&quot;346&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMh-W5g7Tc9Sb8nGFKTAdIiUKQDv7mcx9xvO-x-ciZJa_Kh0YO505aSdqttlG3nIgxRwYrFGzg3t2CWTZThX772x86JkJjQqruvxM46JLil0vWXSBT1PboLrcNs-1wCl200QfT5ZZ4msOJ2lHSZ9x1cU-ZgGl-tsd-k7Q_II0PE7bnkiljVTF0/w640-h346/Captura%20de%20pantalla%202026-01-07%20a%20las%200.29.43.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhca2qelcGfe2PdTqRWdBGdA5-yV1JY7f9UzbdMgozAO-BL22z2dODO5BIYGmFwtbG7i-4tbrSbKVNyPSUNk2Dt_hWfJwOjqCDd_CKdJPWiS0ExCHNTraDMFBYprx_CKouG8BK-cPhjzVJkzFjXzrHWwF4oF_3UApck5-WpeW1JvZOxAGrvkhWo/s1806/Captura%20de%20pantalla%202026-01-07%20a%20las%200.29.00.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1194&quot; data-original-width=&quot;1806&quot; height=&quot;424&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhca2qelcGfe2PdTqRWdBGdA5-yV1JY7f9UzbdMgozAO-BL22z2dODO5BIYGmFwtbG7i-4tbrSbKVNyPSUNk2Dt_hWfJwOjqCDd_CKdJPWiS0ExCHNTraDMFBYprx_CKouG8BK-cPhjzVJkzFjXzrHWwF4oF_3UApck5-WpeW1JvZOxAGrvkhWo/w640-h424/Captura%20de%20pantalla%202026-01-07%20a%20las%200.29.00.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Ejemplo 5&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;¿Y qué más podemos hacer para mejorar nuestro juego? Bueno, ¡podemos emplear &lt;i&gt;sprites&lt;/i&gt;&amp;nbsp;en vez de primitivas y añadirle animaciones a nuestro personaje.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Sobre la estrategia a subir manejando &lt;i&gt;sprites&lt;/i&gt;, hay que tener en cuenta que&amp;nbsp; DIV y DIV 2 trabajaban en modos VGA, que permiten mostrar en pantalla un máximo de 256 colores simultáneos, algo que en &lt;i&gt;frameworks&lt;/i&gt; actuales de desarrollo de videojuegos se queda muy corto. Esto significa que, antes de empezar a crear un fichero FPG y añadirle a porrón todos los &lt;i&gt;sprites&lt;/i&gt; que queramos, tenemos que pensar en cómo gestionaremos los colores de nuestra paleta.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Por ejemplo, podemos hacer que la mitad de los colores (128) sean para dibujar los escenarios, es decir, reservarlo para los &lt;i&gt;tiles&lt;/i&gt;. Una forma de optimizar al máximo esa limitación de colores, sería crear un sistema de diferentes ficheros FPG por nivel, es decir, hacer uso de un fichero FPG de &lt;i&gt;tiles&lt;/i&gt; por mapa (uno para el mapamundi y otros dos para cada ciudad), cada uno de ellos con sus propios 128 colores. No obstante, por comodidad, en este ejemplo utilizaré una única paleta de colores, pero simplemente que sepáis que es algo que podéis abordar para vuestros juegos.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Con los otros 128 colores restantes, debemos reservar uno (el de la posición 0) para el color transparente y podemos reservar otros 15 para las fuente del texto y los fondos (diálogos y menú). El resto de colores (112) los destinaríamos a 7 los personajes (1 jugador y 6 NPC), lo que nos daría un total de 16 colores por personaje. Para crear las tres paletas, podemos hacer uso de herramientas como GIMP, que nos permiten indexar un máximo de colores por imagen (Imagen&amp;gt; Modo&amp;gt; Indexado) y hacer uso de las distintas soluciones que ofrece el entorno DIV. En cuanto a los formatos, DIV y DIV2 tienen problemas para interpretar la versión actual de BMP, es incompatible con PNG y el formato JPG degrada calidad... Por lo que lo ideal es exportar los ficheros a PCX una vez ya hayas hecho en él todas las conversiones específicas (escalado e indexado).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9DI4Ya0W8Dz5CHXlK_D-8748i3LCSEGEPsByqbQ9ZAz_oK9D_KLTTIqHPBqCtrt09-2JvpgoP1r64P40VIbj_QxH7_x0zpvowGSQEroupcXE52h_p0dFH9aRC4edikGZFt1QQEVTr6Dg6XWSWZxtBt4wtyQrVx_jm4rp_rDuRZIQhGyUJTZ8m/s3584/Captura%20de%20pantalla%202026-01-10%20a%20las%2021.03.28.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2264&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9DI4Ya0W8Dz5CHXlK_D-8748i3LCSEGEPsByqbQ9ZAz_oK9D_KLTTIqHPBqCtrt09-2JvpgoP1r64P40VIbj_QxH7_x0zpvowGSQEroupcXE52h_p0dFH9aRC4edikGZFt1QQEVTr6Dg6XWSWZxtBt4wtyQrVx_jm4rp_rDuRZIQhGyUJTZ8m/w640-h404/Captura%20de%20pantalla%202026-01-10%20a%20las%2021.03.28.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;Imagen original en HD (1920x1080)&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKCEFmET8oDVX2uSUAChT8YhRVc9x0hRucQ7RUO6dhjfRYjwE3h0_brvAXOQOfyfBVostEMGSFXuMPcm0yXCOg71jEnmIo-u-Y_yrrYHGDpN4wans_3w5XJjmhGPsEl5eqKsFHt-PtLFMv-kM0QjCx9d26bLluPXUpoeI7scxZc5cosjXPzQaB/s1076/Captura%20de%20pantalla%202026-01-10%20a%20las%2021.06.43.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1076&quot; data-original-width=&quot;1068&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKCEFmET8oDVX2uSUAChT8YhRVc9x0hRucQ7RUO6dhjfRYjwE3h0_brvAXOQOfyfBVostEMGSFXuMPcm0yXCOg71jEnmIo-u-Y_yrrYHGDpN4wans_3w5XJjmhGPsEl5eqKsFHt-PtLFMv-kM0QjCx9d26bLluPXUpoeI7scxZc5cosjXPzQaB/w636-h640/Captura%20de%20pantalla%202026-01-10%20a%20las%2021.06.43.jpg&quot; width=&quot;636&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;Me gusta activar el &lt;i&gt;dithering&lt;/i&gt; (difuminado): Mezcla patrones de píxeles para sombrear.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheQJoXxLwKQTwaAovqOTHJrB-hkiNg_Qd8sPj8fg7u4MJvS_Tnbm9drdJG5Y-oQgO6Gizoyju0Wp_LCuiToLbZOMDww5oHKMEiJrPZi04JN-StQYGRYycVJNFptyppTeye8KOK69pEDuFBdbAvZ1hu-dsAuZ9FVCml8hKGXYjJxyxLPf7-G2N7/s3584/Captura%20de%20pantalla%202026-01-10%20a%20las%2021.06.56.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2264&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheQJoXxLwKQTwaAovqOTHJrB-hkiNg_Qd8sPj8fg7u4MJvS_Tnbm9drdJG5Y-oQgO6Gizoyju0Wp_LCuiToLbZOMDww5oHKMEiJrPZi04JN-StQYGRYycVJNFptyppTeye8KOK69pEDuFBdbAvZ1hu-dsAuZ9FVCml8hKGXYjJxyxLPf7-G2N7/w640-h404/Captura%20de%20pantalla%202026-01-10%20a%20las%2021.06.56.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;Imagen modificada a 114x64 y 16 colores.&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;También tenemos que pensar en cómo organizar los personajes: Quiero tener dos estados, uno quieto y otro andando. El único personaje que puede andar, ahora mismo, es nuestro personaje, pero estaría bien dejar preparada la lógica para permitir andar también a los NPC en el futuro. Además, cada estado se representa gráficamente en cuatro direcciones, dependiendo de dónde esté mirando nuestro personaje (norte/sur/oeste/este, aunque cuando programamos juegos preferimos arriba/abajo/izquierda/derecha). Además, podemos hacer que cada personaje tenga su propio fichero FPG y que los códigos id de cara estado/dirección sean los mismos para cada personaje. Esto nos permite tener un código más modular y mantenible.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Para mi solución, los personajes quietos tendrán gráficos estáticos, pero quiero que cuando anden tengan una animación de 6&amp;nbsp;&lt;i&gt;sprites&lt;/i&gt; en bucle.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyuUpPRqBdI1rOwPSlFj4b_uXOMbveaRlLFmYdhZmrM7mWE3caJFfc1bp5HiNOrvYYGIB58BInfNvdI33hGZe73TvMmthn56LAGzJQSs69fi9RB7BDDbAXupGQZnbfIcTQfs87E_WVnNHO6WO1GunSpu4UAqPU4egjXMnbEzEb8rBhr0UouVna/s2658/Captura%20de%20pantalla%202026-01-10%20a%20las%2021.30.48.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1620&quot; data-original-width=&quot;2658&quot; height=&quot;390&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyuUpPRqBdI1rOwPSlFj4b_uXOMbveaRlLFmYdhZmrM7mWE3caJFfc1bp5HiNOrvYYGIB58BInfNvdI33hGZe73TvMmthn56LAGzJQSs69fi9RB7BDDbAXupGQZnbfIcTQfs87E_WVnNHO6WO1GunSpu4UAqPU4egjXMnbEzEb8rBhr0UouVna/w640-h390/Captura%20de%20pantalla%202026-01-10%20a%20las%2021.30.48.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Con estas premisas, podemos organizar los id de los FPG de personajes de la siguiente manera:&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;1: Idle mirando arriba -&amp;gt; NPC y jugador.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;2: Idle, mirando derecha -&amp;gt; NPC y jugador.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;3: Idle, mirando abajo -&amp;gt; NPC y jugador.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: #fff2cc;&quot;&gt;4: Idle, mirando izquierda -&amp;gt; NPC y jugador.&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;5-10: Andar, mirando arriba -&amp;gt; Sólo jugador por ahora.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;11-16: Andar, mirando derecha -&amp;gt; Sólo jugador por ahora.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;17-22: Andar, mirando abajo -&amp;gt; Sólo jugador por ahora.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;background-color: #fff2cc;&quot;&gt;23-28: Andar, mirando izquierda -&amp;gt; Sólo jugador por ahora.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;¿Por qué ese orden de arriba, derecha, abajo izquierda? Por nada en especial, por seguir simplemente el sentido horario. Otra cosa a tener en cuenta es que DIV puede espejar &lt;i&gt;sprites&lt;/i&gt;, por lo que podemos realmente usar el mismo gráfico para mirar derecha/izquierda o andar derecha/izquierda (por eso he subrayado esas líneas). La decisión de espejar los gráficos o no, debería de depender únicamente del diseño de tus personajes. En mi caso prefiero tener gráficos separados de derecha/izquierda por si implemento personajes asimétricos (por ejemplo con una manga de cada color, o cojo o manco de una mano)... Si nuestro personaje es diestro y maneja una espada, difícilmente lo representaremos correctamente con gráficos espejados (dependiendo de dónde mire, sería diestro o zurdo).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Una vez aclarado esto, os presento el quinto ejemplo de hoy (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_05.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_05.PRG&lt;/a&gt;), el cual, para funcionar, requiere de diversos ficheros FPG donde almaceno todos los &lt;i&gt;sprites&lt;/i&gt; que utilizaremos (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/tree/main/FPG/DIABLO&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/tree/main/FPG/DIABLO&lt;/a&gt;) y ejecutar previamente una nueva versión del MAPGEN para generar los ficheros MapV2.dat e ItemsV2.dat (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN02.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN02.PRG&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p dir=&quot;ltr&quot; lang=&quot;es&quot;&gt;Amaño de JRPG sobre Isekai Maou programado en MS-DOS con DIV2 Games Studio. Lo que veis es todo el gameplay, se trata de un tutorial que pienso publicar la semana que viene. &lt;a href=&quot;https://t.co/y3fzaoq0As&quot;&gt;pic.twitter.com/y3fzaoq0As&lt;/a&gt;&lt;/p&gt;— Le Hamster ruso (@Hamster_ruso) &lt;a href=&quot;https://twitter.com/Hamster_ruso/status/2010502047364153483?ref_src=twsrc%5Etfw&quot;&gt;January 12, 2026&lt;/a&gt;&lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; El salto entre este ejemplo y el anterior no solo es visual, sino también estructural y técnico. Aquí detallo las diferencias más importantes:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;1. Conversión completa a &lt;i&gt;sprites&lt;/i&gt;&amp;nbsp;y utilización de ficheros FPG:&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- Los anteriores ejemplos utilizaban primitivas gráficas (draw()) para renderizar el mapa, los NPCs y el jugador.&lt;br /&gt;- JRPG_05: Todo el renderizado se realiza con sprites FPG (put() y xput()), permitiendo gráficos mucho más ricos, animaciones fluidas y efectos visuales como sombras transparentes. Si os fijáis, esto no suele la programación típica de DIV Games Studio con &lt;i&gt;sprites&lt;/i&gt;, donde por lo general hacemos procesos y cada uno tiene su propio gráfico con sus primitivas locales de x/y... Si no que utilizamos un sólo hilo para renderizarlo todo. Esto puede parecer que, en principio, aportamos una capa de complejidad a nuestro código, pero al hacer uso de estructuras donde definimos qué es qué (mapa, NPC, jugador...) realmente estamos optimizando mucho el rendimiento. Otra cosa a tener en cuenta es que, al abandonar draw en detrimento de put/xput, ya no nos hace falta almacenar id&#39;s en un array para borrarlos, puesto que el funcionamiento de estas primitivas no requiere de liberación de memoria.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOIHknhAG8xmuBLYQyMFxuzLF16vgt2PKPEO31q4KS-Zh2DE4ApRghjQvpq0__3uvP9WAO-DG5rwBXnqEj4uVH7T0FLAEqiZ7trz3WZi8PsiK1NZqx1ypG_iHi4cZUh1oGWT_e9_wrW8KFMRZfJm1HeT255VeVoRGAP0KvWFZCWJJgK-BRTJ07/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2020.58.47.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;682&quot; data-original-width=&quot;2602&quot; height=&quot;168&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOIHknhAG8xmuBLYQyMFxuzLF16vgt2PKPEO31q4KS-Zh2DE4ApRghjQvpq0__3uvP9WAO-DG5rwBXnqEj4uVH7T0FLAEqiZ7trz3WZi8PsiK1NZqx1ypG_iHi4cZUh1oGWT_e9_wrW8KFMRZfJm1HeT255VeVoRGAP0KvWFZCWJJgK-BRTJ07/w640-h168/Captura%20de%20pantalla%202026-01-12%20a%20las%2020.58.47.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYffxVRheDvyipuZkdaLVL0FL7wZUPrBC4hPdxR0vErs6XGNAo0bG2ZC3VCTCdnLdeHwLQPEgijP05sRFWtGMQSZuNBh71VFKfa84WEaShkZcc84h2B1hpReTFU7oA0iLHY3wqJi2084OsUZb5HSeP2sypK-QsY9-V3SaJi5dRTtsxWBP-3SiG/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2020.56.06.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1148&quot; data-original-width=&quot;2602&quot; height=&quot;282&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYffxVRheDvyipuZkdaLVL0FL7wZUPrBC4hPdxR0vErs6XGNAo0bG2ZC3VCTCdnLdeHwLQPEgijP05sRFWtGMQSZuNBh71VFKfa84WEaShkZcc84h2B1hpReTFU7oA0iLHY3wqJi2084OsUZb5HSeP2sypK-QsY9-V3SaJi5dRTtsxWBP-3SiG/w640-h282/Captura%20de%20pantalla%202026-01-12%20a%20las%2020.56.06.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- En las versiones anteriores los NPCs eran simples círculos de color, sin orientación ni animación.&lt;br /&gt;- En este nuevo ejemplo cada NPC tiene un&amp;nbsp;&lt;i&gt;sprite&lt;/i&gt;&amp;nbsp;para
 cada una de las 4 direcciones y el motor decide hacia dónde mira el NPC
 según la posición del jugador (priorizando la distancia horizontal o 
vertical según las distancias).&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiue-IfQ0W47GXZt2iTZjFF0keQ7GaD-Q93baRiVCjPifUB3_SvTF2vTTWYmqUJgexjzGtVRiwV0T3RoEqkATHwuDDNmjpeIabGa_y_ebNXgh0xn3uCsmTTQ8xuNJngCAlEtIEA4PwwDo-ze1LgwJ-GlyxT3PycD8qhAh-coZfbEKawxrzP2Ys/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2020.56.49.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1446&quot; data-original-width=&quot;2602&quot; height=&quot;356&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiue-IfQ0W47GXZt2iTZjFF0keQ7GaD-Q93baRiVCjPifUB3_SvTF2vTTWYmqUJgexjzGtVRiwV0T3RoEqkATHwuDDNmjpeIabGa_y_ebNXgh0xn3uCsmTTQ8xuNJngCAlEtIEA4PwwDo-ze1LgwJ-GlyxT3PycD8qhAh-coZfbEKawxrzP2Ys/w640-h356/Captura%20de%20pantalla%202026-01-12%20a%20las%2020.56.49.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- En las versiones anteriores las cajas de diálogo y el inventario eran simples rectángulos dibujados con draw().&lt;br /&gt;- En este nuevo ejemplo empleamos &lt;i&gt;sprites&lt;/i&gt; dedicados para las cajas de diálogo, el fondo 
del inventario e incluso implementamos sombras transparentes en los pies del personaje y de los NPC, logrando una presentación mucho más 
atractiva.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7gEaw-6_z5HudvXOHdCwdpEw-KhCf0xxTH_EC0OzXW9XS87h0lS_o51lNqmBHMWUuLKAhhBMiccMsvqTVNpiscoQ6AfA-EK9-ab92HnyDrw7xsgbL-jAeqRVijrDtP6Crm20-l7PwJ-eCwMpiEsn2Mbe7WnGtvAk15wmXvI4yyqLJArs-kT1W/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.02.30.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;776&quot; data-original-width=&quot;2602&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7gEaw-6_z5HudvXOHdCwdpEw-KhCf0xxTH_EC0OzXW9XS87h0lS_o51lNqmBHMWUuLKAhhBMiccMsvqTVNpiscoQ6AfA-EK9-ab92HnyDrw7xsgbL-jAeqRVijrDtP6Crm20-l7PwJ-eCwMpiEsn2Mbe7WnGtvAk15wmXvI4yyqLJArs-kT1W/w640-h190/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.02.30.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;2. Sistema de animación del jugador&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- En las versiones anteriores el jugador era un círculo estático.&lt;br /&gt;- Este nuevo ejemplo implementa un sistema de animación bastante completo basado en estados: Nuestro personaje podrá estar parado (&quot;Idle&quot;) o andando. Ambos estados cuentan a su vez con otros cuatro subestados, dependiendo de dónde esté mirando el personaje (norte/sur/este/oeste). Por otro lado, cada una de las cuatro animaciones de andar consta a su vez de 6 cuadros (&lt;i&gt;sprites&lt;/i&gt;) que se reparten de forma cíclica durante 30 &lt;i&gt;frames&lt;/i&gt; (cada 5 &lt;i&gt;frames&lt;/i&gt;, cambiamos el gráfico). El tema hacer avanzar la animación 1 vez cada 5 &lt;i&gt;frames&lt;/i&gt;&amp;nbsp;lo hago únicamente para que sea más agradable al ojo humano.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT0ATqMub0EwFhntbqg4t16lHMzSuDwZVBKTHJ0iGPr3W8Q4Wost19pEIy6AWy2lfo5FuWpq9cjC-QEKMdumzVYZL-UOeDLqcLySnhEP8clfhb6NM4puUTsSNZoNnZvCWZ-L2wDrsSymkQbHC2hlQeN0DdIwX7Fcmn-7P30mMVxCQHPA-0KR9q/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.08.15.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1558&quot; data-original-width=&quot;2602&quot; height=&quot;384&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT0ATqMub0EwFhntbqg4t16lHMzSuDwZVBKTHJ0iGPr3W8Q4Wost19pEIy6AWy2lfo5FuWpq9cjC-QEKMdumzVYZL-UOeDLqcLySnhEP8clfhb6NM4puUTsSNZoNnZvCWZ-L2wDrsSymkQbHC2hlQeN0DdIwX7Fcmn-7P30mMVxCQHPA-0KR9q/w640-h384/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.08.15.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;3. Arquitectura data-driven para los gráficos&lt;/h4&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- En las versiones anteriores los gráficos estaban “hardcodeados” y cualquier cambio requería recompilar el juego principal.&lt;br /&gt;- En esta nueva versión los nombres de los archivos FPG se cargan dinámicamente desde los datos del mapa (MapsV2.dat), permitiendo cambiar gráficos o añadir nuevos sin tocar el código fuente del motor. Aún así ahora mismo tenemos que recompilar el MAPGEN, que es donde indicamos los ficheros correspondientes, pero el día de mañana podríamos implementar un editor para el juego que nos evite este proceso.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBjMr_Xd-6cXQi2w7n3M8p25jqZ1t6LfGopfvHXc4Qttr9bGuxNY2ViXBHEcgpKyy2tMhK7SitisQZIHy07YuznKs7tE_6aGfCjF1BJaNsDzytyU058P3EUA21oJCzoGByABorpGOvZcDRmUvlJ7JpaSefGOrzwFNczapxhQWjvCW5xEqoouWn/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2020.58.47.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;682&quot; data-original-width=&quot;2602&quot; height=&quot;168&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBjMr_Xd-6cXQi2w7n3M8p25jqZ1t6LfGopfvHXc4Qttr9bGuxNY2ViXBHEcgpKyy2tMhK7SitisQZIHy07YuznKs7tE_6aGfCjF1BJaNsDzytyU058P3EUA21oJCzoGByABorpGOvZcDRmUvlJ7JpaSefGOrzwFNczapxhQWjvCW5xEqoouWn/w640-h168/Captura%20de%20pantalla%202026-01-12%20a%20las%2020.58.47.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYWX6AWhK_KXscDVwnDnntPSwoxAsKh-6hk7SyfCxdr-X4fnSTXljOc3-iKUGOLvjVB8_zMva4Q8wFi3BysNC2aFBfazjpjkYfglgSOEsmceob7q0iQUPPmyesxCWxogZ6QEmKKICL7NM8ZlfehjLgWsgUBr3ozVTLKdZ1XdYfNNbREuGZR0Sx/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.06.38.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;894&quot; data-original-width=&quot;2602&quot; height=&quot;220&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYWX6AWhK_KXscDVwnDnntPSwoxAsKh-6hk7SyfCxdr-X4fnSTXljOc3-iKUGOLvjVB8_zMva4Q8wFi3BysNC2aFBfazjpjkYfglgSOEsmceob7q0iQUPPmyesxCWxogZ6QEmKKICL7NM8ZlfehjLgWsgUBr3ozVTLKdZ1XdYfNNbREuGZR0Sx/w640-h220/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.06.38.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Ejemplo 6&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;¿Y qué más podemos hacer para mejorar nuestro juego? Bueno, por ahora, aunque hayamos mejorado mucho la arquitectura de nuestro juego, realmente sólo tenemos a un personaje que pasea y habla con personajes. Podemos ir un paso más y crear un sistema de quests. De hecho, el ejemplo de a continuación implementa un sistema de quests que se activa hablando con un NPC (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN03.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN03.PRG&lt;/a&gt; y&amp;nbsp;&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_06.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_06.PRG&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En este ejemplo, defino un sistema de quests que tienen estado (NOT_STARTED, ACTIVE y COMPLETED) y para poder explotarlo he tenido también que adaptar el sistema de diálogos, permitiendo frases condicionales en función del estado de una &lt;i&gt;quest&lt;/i&gt;&amp;nbsp;(si ha empezado, si cumplimos las condiciones para acabarla, si no las cumplimos o si la quest ha acabado). A su vez, completar una &lt;i&gt;quest&lt;/i&gt; lleva acciones y consecuencias, como restar ítems de tu inventario y recibir dinero. Por ahora, a nivel de estructuras, las &lt;i&gt;quest&lt;/i&gt; están embebidas por NPC, pero es algo que podríamos externalizar en el futuro.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4gNb909d4vkDXBz9bGoxriteeWF09kqTw0S4hsOkfXwuQfjbGwvfGdw36MP6vj5O3IVgtNBP8iQe-Lr3fUncMjT85vo9XT8K-ReDbG2LWvNeledKOgm1thcnRk_g91W8N9ooXIicieoCVVX1Hk7_PD7l1lQeH00e4P8UJu4nvKvIUgs5e2e1W/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.11.52.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;972&quot; data-original-width=&quot;2602&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4gNb909d4vkDXBz9bGoxriteeWF09kqTw0S4hsOkfXwuQfjbGwvfGdw36MP6vj5O3IVgtNBP8iQe-Lr3fUncMjT85vo9XT8K-ReDbG2LWvNeledKOgm1thcnRk_g91W8N9ooXIicieoCVVX1Hk7_PD7l1lQeH00e4P8UJu4nvKvIUgs5e2e1W/w640-h240/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.11.52.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw94NeWXHtVRYu09RZoLnGgZ7n2z51ALgEjsMwTb5oKTzacjJLEuAixRzK42FVhJ_YToJJuQauh-qQi5If-HBW5AnC3C37UFKnktfZ6CD-ONpOYXyIa7Kh9kj4266ugenmBxG-qQH0MjO1sTeaf61qS2tg4I6dFREfi0jwc3j4gLEckNI-2K6W/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.13.24.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1232&quot; data-original-width=&quot;2602&quot; height=&quot;304&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw94NeWXHtVRYu09RZoLnGgZ7n2z51ALgEjsMwTb5oKTzacjJLEuAixRzK42FVhJ_YToJJuQauh-qQi5If-HBW5AnC3C37UFKnktfZ6CD-ONpOYXyIa7Kh9kj4266ugenmBxG-qQH0MjO1sTeaf61qS2tg4I6dFREfi0jwc3j4gLEckNI-2K6W/w640-h304/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.13.24.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS3Y94axBo_i0Qa3etLy7LtOk8aYFv5VfRlVQW4Jqztg7ZK004A53i7r8iSA6xttwEWrqgPn4tp1SXowCWnEIGXkEW5llwlOqIR3BQjkwQUP7CxbWn_f9YY7wZNcHE24oSOxMdGzvrLe3XRW1f9CJ3cpYwyWrxVa7Ftrt0lzZmyfo6jfB3imwK/s1504/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.17.56.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS3Y94axBo_i0Qa3etLy7LtOk8aYFv5VfRlVQW4Jqztg7ZK004A53i7r8iSA6xttwEWrqgPn4tp1SXowCWnEIGXkEW5llwlOqIR3BQjkwQUP7CxbWn_f9YY7wZNcHE24oSOxMdGzvrLe3XRW1f9CJ3cpYwyWrxVa7Ftrt0lzZmyfo6jfB3imwK/w640-h528/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.17.56.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;De paso he tenido que modificar la pantalla de menú (la que vemos al pulsar ESC) para que podamos seleccionar si ver ítems o las &lt;i&gt;quests&lt;/i&gt;&amp;nbsp;aceptadas (por que sí, no sólo podemos rechazar una &lt;i&gt;quest&lt;/i&gt;, también podemos rechazarla).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqqWEE8ZQ2Ar9w_0kVq7EmPzAOSprXx1kAzdGthyphenhyphen68T2eIiraIIomcnyRxwoZkK0eVSj5f6Pw5a4vha6wRTsQdq8saUINdlcn20FukSral7OCpRxZ5bg87tLXGAsDRZG3kZIHEQ1TCagKvMDSfzgEjVE3oTsQQXjYkFnhCWQD3pO6qDZDhDT8z/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.15.42.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1496&quot; data-original-width=&quot;2602&quot; height=&quot;368&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqqWEE8ZQ2Ar9w_0kVq7EmPzAOSprXx1kAzdGthyphenhyphen68T2eIiraIIomcnyRxwoZkK0eVSj5f6Pw5a4vha6wRTsQdq8saUINdlcn20FukSral7OCpRxZ5bg87tLXGAsDRZG3kZIHEQ1TCagKvMDSfzgEjVE3oTsQQXjYkFnhCWQD3pO6qDZDhDT8z/w640-h368/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.15.42.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik-jGilovGX43W4JEzctWmYEr4S6Zk7nHcN8c1ohIvamBIWzSTBMJHfmv45llqCJ5P1bFNbFLiDxtjj4pYUu-BhLNa5EnBME81rqzexOUzGDzrI1LIuk3cx2chvSMGFLOfJ5wH34K38zUNq9ZPQ0ypHgcOIwFRyaAUscHaJL6vHOyuSJYOelrn/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.16.04.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1588&quot; data-original-width=&quot;2602&quot; height=&quot;390&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik-jGilovGX43W4JEzctWmYEr4S6Zk7nHcN8c1ohIvamBIWzSTBMJHfmv45llqCJ5P1bFNbFLiDxtjj4pYUu-BhLNa5EnBME81rqzexOUzGDzrI1LIuk3cx2chvSMGFLOfJ5wH34K38zUNq9ZPQ0ypHgcOIwFRyaAUscHaJL6vHOyuSJYOelrn/w640-h390/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.16.04.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpByLIiju9duRO4dYiHzoljlU7oeSyyuzXCS4Y-cxgiahrlbsrvN5sQw96s1KgbKO8GTZDvZXL-5hO16Z9wrXhyphenhyphene8DyxP9IjJ9ddHNHK_cK_48FsxGiUZu7EkqM7U1usvdruH4iaVDilF3k_lEx4DESFCdtR7Dkkv2_pYA4eo7wFP-JHzJx4Uv/s1504/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.18.10.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpByLIiju9duRO4dYiHzoljlU7oeSyyuzXCS4Y-cxgiahrlbsrvN5sQw96s1KgbKO8GTZDvZXL-5hO16Z9wrXhyphenhyphene8DyxP9IjJ9ddHNHK_cK_48FsxGiUZu7EkqM7U1usvdruH4iaVDilF3k_lEx4DESFCdtR7Dkkv2_pYA4eo7wFP-JHzJx4Uv/w640-h528/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.18.10.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgewFsojVBbzejADRDshZu5rzayjcy8ET2SD4qf8tI2MxzmgHpypBwnjD_Hj33oK48cM5OGqvC3EqDDVFAR2Nk4TjHAAjP_TDyT8B134oY6-Xi8sO-HhVpYz3X25R35EgZc2RXKWCZCPGxMybcHhRoZRdQx_XTdBGp8TROz78oF3Wx6co5ofrRZ/s1504/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.18.17.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgewFsojVBbzejADRDshZu5rzayjcy8ET2SD4qf8tI2MxzmgHpypBwnjD_Hj33oK48cM5OGqvC3EqDDVFAR2Nk4TjHAAjP_TDyT8B134oY6-Xi8sO-HhVpYz3X25R35EgZc2RXKWCZCPGxMybcHhRoZRdQx_XTdBGp8TROz78oF3Wx6co5ofrRZ/w640-h528/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.18.17.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKYEVOclG4vOUvpIvuwWBuA6409T67BFMtO3IKQXnxtiov7eZW0XpBe6bJMwIf0jJ4H_LraQogCqVylBEBWreIRXjQn-HuPNc4uxuLBp4ra9RgJrWYbesP3AELNWp3J72GVJ9QRZ8BZoD2Iu5H9-nxStjRQW87n1tIOEsIT7gpIKxk_qa0DuQE/s1504/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.18.26.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKYEVOclG4vOUvpIvuwWBuA6409T67BFMtO3IKQXnxtiov7eZW0XpBe6bJMwIf0jJ4H_LraQogCqVylBEBWreIRXjQn-HuPNc4uxuLBp4ra9RgJrWYbesP3AELNWp3J72GVJ9QRZ8BZoD2Iu5H9-nxStjRQW87n1tIOEsIT7gpIKxk_qa0DuQE/w640-h528/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.18.26.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; Y para acabar con este ejemplo, también he aplicado un &lt;i&gt;zoom&lt;/i&gt; en los diálogos (con transición) para que el juego luzca más &lt;i&gt;juicy&lt;/i&gt;. Para ello recalculamos el tamaño y la posición de los &lt;i&gt;tiles&lt;/i&gt; y personajes que hay en pantalla y los restablecemos sus dimensiones y coordenadas originales al finalizar el diálogo.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBXxfl-c1BIPaFB-HHsaBXeqtCSF5382e43UBYL_hjZV5lwDF3a6PTW5jpFeIvXo7graEX6QsTVRISc81o4GTlfsL7GdU6yj32g6WD7pK-np39BcEqrQcEGZtT7kL7Yt_AFYd5fKalkqKzLlkjAkgXOCZpKMc5NT72XBXaqaCbx-DZU_A17VpB/s2602/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.14.29.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;954&quot; data-original-width=&quot;2602&quot; height=&quot;234&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBXxfl-c1BIPaFB-HHsaBXeqtCSF5382e43UBYL_hjZV5lwDF3a6PTW5jpFeIvXo7graEX6QsTVRISc81o4GTlfsL7GdU6yj32g6WD7pK-np39BcEqrQcEGZtT7kL7Yt_AFYd5fKalkqKzLlkjAkgXOCZpKMc5NT72XBXaqaCbx-DZU_A17VpB/w640-h234/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.14.29.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDJd0QoFpHpPWucZBYvikP_wmoDIvZqdhKmEzPapbr1gfe8wVafmEBZ2_ZAt55r-tcjE6JbHQ-SwUigpk7-MqmerEndjj9vKQYQhU2lSKgRrRx_Y4Hvm3azt9j_AEaYOcy-xyadbierp2djUpm_pGkcJQmtrgqh2iXZz88TMscGO_9jIaoe-hD/s1504/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.18.51.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDJd0QoFpHpPWucZBYvikP_wmoDIvZqdhKmEzPapbr1gfe8wVafmEBZ2_ZAt55r-tcjE6JbHQ-SwUigpk7-MqmerEndjj9vKQYQhU2lSKgRrRx_Y4Hvm3azt9j_AEaYOcy-xyadbierp2djUpm_pGkcJQmtrgqh2iXZz88TMscGO_9jIaoe-hD/w640-h528/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.18.51.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg618w-4NqaGPvwo0C6O5hxKUVxxpA9hijrdz8GKH0UH9rvR8ol-YrG0xVRBqIIuhs2t1uOg_r2QmyOergHtQ9rSDKuUUOPo0OFgvEb5h184SI95Z9xf-L-_ACL0Wcn1KjxfshvHmVH4SDuh6esD069chafhXPEWlIojSRmCnbOaAac9oHr60u/s1504/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.19.00.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg618w-4NqaGPvwo0C6O5hxKUVxxpA9hijrdz8GKH0UH9rvR8ol-YrG0xVRBqIIuhs2t1uOg_r2QmyOergHtQ9rSDKuUUOPo0OFgvEb5h184SI95Z9xf-L-_ACL0Wcn1KjxfshvHmVH4SDuh6esD069chafhXPEWlIojSRmCnbOaAac9oHr60u/w640-h528/Captura%20de%20pantalla%202026-01-12%20a%20las%2021.19.00.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Ejemplo 7&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;
 &amp;nbsp; &amp;nbsp;¿Y qué más podemos hacer para mejorar nuestro juego? Bueno, todo buen JRPG de la época del MS-DOS tenía un sistema de galería de imágenes y eso es lo que he implementado en este séptimo ejemplo (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN04.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN04.PRG&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_07.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_07.PRG&lt;/a&gt;&amp;nbsp;y &lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/FPG/DIABLO/CG.FPG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/FPG/DIABLO/CG.FPG&lt;/a&gt;). Como en los anteriores ejemplos, éste trae también su versión de MAPGEN que tendréis que lanzar antes de ejecutar el JRPG_07 y además trae un fichero CG.FPG que contiene 3 imágenes que iremos desbloqueando en el juego.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgizxrggJT7Sut8sKFCIdRqxSx_h9VTamIZqrvFVSvkNVJv5tM9Wb_eFnFJEiEfBL92ALPgQpMEi7XdVWfm_SxZLNLX-4x7w2j2eZMvdDKnhK3DRizBSJrw37Rd8NKh3pKsGHmBJ9GMHScn2-qulwR6VG08ydTvNpWzrQ0UXPHcX89g2T01rspB/s1504/Captura%20de%20pantalla%202026-01-13%20a%20las%200.04.58.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgizxrggJT7Sut8sKFCIdRqxSx_h9VTamIZqrvFVSvkNVJv5tM9Wb_eFnFJEiEfBL92ALPgQpMEi7XdVWfm_SxZLNLX-4x7w2j2eZMvdDKnhK3DRizBSJrw37Rd8NKh3pKsGHmBJ9GMHScn2-qulwR6VG08ydTvNpWzrQ0UXPHcX89g2T01rspB/w640-h528/Captura%20de%20pantalla%202026-01-13%20a%20las%200.04.58.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Básicamente algunos diálogos lanzarán una imagen, que a modo de evento, se verá en pantalla completa, como si se tratara de una visual novel y su implementación no es nada complicada. Básicamente en las estructuras de diálogo, además de un string para el texto añadimos un INT para indicar un ID de imagen que corresponderá a la imagen que hay que mostrar dentro del fichero CG.FPG: Y si el valor de ese ID es cero, no se mostrará ninguna imagen de fondo.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9iES0h2QO2_Dx8OYEWuwhSgGIO6_BlrwQhpycD9on9w90aokkapjB5ghZkGDS6eBsTNoHI7s1PL3Sz8w23HGhlilTy-CFoxHzwvvk26q-q7-Z61zgQfoNGj-lo9z4ep3DnXkGigPT1nv_3znpVvEPLgA3cAkMfhxBs427b55RQvQS3WZb-6cP/s2602/Captura%20de%20pantalla%202026-01-13%20a%20las%200.13.55.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1456&quot; data-original-width=&quot;2602&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9iES0h2QO2_Dx8OYEWuwhSgGIO6_BlrwQhpycD9on9w90aokkapjB5ghZkGDS6eBsTNoHI7s1PL3Sz8w23HGhlilTy-CFoxHzwvvk26q-q7-Z61zgQfoNGj-lo9z4ep3DnXkGigPT1nv_3znpVvEPLgA3cAkMfhxBs427b55RQvQS3WZb-6cP/w640-h358/Captura%20de%20pantalla%202026-01-13%20a%20las%200.13.55.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCzFrYqWk4J-uVStnYwFv7Zbl9o01WbqfYaHWB-deqXbj9InWmtKnldhW3QRv1hoA_txNQK30g_IGTUAsXPDlgNkveOBBgtreYLeEPF7ePKI-qzS5P7n2OMihXrKrJng3bKKFdiYoJvhhUvoEnENAJ1dAJf0UhpashxMd8bRhHLvJzU37UMMYx/s2602/Captura%20de%20pantalla%202026-01-13%20a%20las%200.19.39.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;760&quot; data-original-width=&quot;2602&quot; height=&quot;186&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCzFrYqWk4J-uVStnYwFv7Zbl9o01WbqfYaHWB-deqXbj9InWmtKnldhW3QRv1hoA_txNQK30g_IGTUAsXPDlgNkveOBBgtreYLeEPF7ePKI-qzS5P7n2OMihXrKrJng3bKKFdiYoJvhhUvoEnENAJ1dAJf0UhpashxMd8bRhHLvJzU37UMMYx/w640-h186/Captura%20de%20pantalla%202026-01-13%20a%20las%200.19.39.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Además, la partida memorizará si hemos visto ya esa escena y la podremos visualizar a través del menú del juego, en una nueva sección dedicada a las CG.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg1cs0oJLo3XCrcES-Ekpt-9SkgYW9_Abpd7vP2EsP9HpUz4QI0bsrGxgFJxu1iNsMFO57fPIVLDo9rZXp2o1leSVu2fGKaTFfhKXdU61hnb8U9RHjyBV5msCNAofCT_WTpjw2Kb6TyBZspK2cCXVogPTxEQEMiW4aC2uqPsAqXRGSCnfjhKUr/s2602/Captura%20de%20pantalla%202026-01-13%20a%20las%200.21.12.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;292&quot; data-original-width=&quot;2602&quot; height=&quot;72&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg1cs0oJLo3XCrcES-Ekpt-9SkgYW9_Abpd7vP2EsP9HpUz4QI0bsrGxgFJxu1iNsMFO57fPIVLDo9rZXp2o1leSVu2fGKaTFfhKXdU61hnb8U9RHjyBV5msCNAofCT_WTpjw2Kb6TyBZspK2cCXVogPTxEQEMiW4aC2uqPsAqXRGSCnfjhKUr/w640-h72/Captura%20de%20pantalla%202026-01-13%20a%20las%200.21.12.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpnkDULT1Z5ddPTV5OcYrElrwt2CGsW5uSTIPoPpYYu1TuUhl3PtTxD7QkjvQKklQwHDZsdNxGeXRgHmT17tjfvVleXG9KWdpelq-B42t97sawgxlsal2d1_kLyGJj-p6Ohft0FnAk5dO7GcS4KxEyLIXNuNZR6Zu4n4ue19NEfRHPPe5AQUNX/s1504/Captura%20de%20pantalla%202026-01-13%20a%20las%200.05.15.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpnkDULT1Z5ddPTV5OcYrElrwt2CGsW5uSTIPoPpYYu1TuUhl3PtTxD7QkjvQKklQwHDZsdNxGeXRgHmT17tjfvVleXG9KWdpelq-B42t97sawgxlsal2d1_kLyGJj-p6Ohft0FnAk5dO7GcS4KxEyLIXNuNZR6Zu4n4ue19NEfRHPPe5AQUNX/w640-h528/Captura%20de%20pantalla%202026-01-13%20a%20las%200.05.15.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhON7KbCK42pC6Vdb5WGm5SDmck9T6BmU9fu6WB4gFKfbGwfCHYLINb-zHxosqK_aJeJswZyMHEFAytX-qz12tT9cJ4-F6vLcOodZ6GZnC4SZ5a0m2NYFN161GhKGHwi_6EEakqZoxReXUnnWKpTjrSYvfQNBjL-ySxQwx1DDw7tbqNMZf7KSc9/s1504/Captura%20de%20pantalla%202026-01-13%20a%20las%200.05.22.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhON7KbCK42pC6Vdb5WGm5SDmck9T6BmU9fu6WB4gFKfbGwfCHYLINb-zHxosqK_aJeJswZyMHEFAytX-qz12tT9cJ4-F6vLcOodZ6GZnC4SZ5a0m2NYFN161GhKGHwi_6EEakqZoxReXUnnWKpTjrSYvfQNBjL-ySxQwx1DDw7tbqNMZf7KSc9/w640-h528/Captura%20de%20pantalla%202026-01-13%20a%20las%200.05.22.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3eUysjbauzAA0SzLiy96wcs3gK9ZHRfn_z-CczKi_OhePB8MR5VIcFeokKT3mZ5EUhFx3ahjd9puAIcyVmwWwkuuHl0c9-6ulUq5c3tTIeR76P4bt4WMnr22FMfKQgx2H-cbwQRpl3hmsCQ1tb6NWVcQsLgh1KdVLQK67SAk2CoNSDwGFkq7l/s1504/Captura%20de%20pantalla%202026-01-13%20a%20las%200.05.28.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3eUysjbauzAA0SzLiy96wcs3gK9ZHRfn_z-CczKi_OhePB8MR5VIcFeokKT3mZ5EUhFx3ahjd9puAIcyVmwWwkuuHl0c9-6ulUq5c3tTIeR76P4bt4WMnr22FMfKQgx2H-cbwQRpl3hmsCQ1tb6NWVcQsLgh1KdVLQK67SAk2CoNSDwGFkq7l/w640-h528/Captura%20de%20pantalla%202026-01-13%20a%20las%200.05.28.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;Ejemplo 8&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;
 &amp;nbsp; &amp;nbsp;¿Y qué más podemos hacer para mejorar nuestro juego? Bueno, sólo nos quedan por hacer dos cosas para dar nuestro juego por acabado: Un sistema de combates por turnos y poder guardar y cargar la partida. Además de esto, el ejemplo también mejora la gestión del audio, permitiendo cambiar la canción del fondo dependiendo del mapa y cada mapa además tendrá su propia música también para los combates (si los tiene).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Para hacer funcionar este ejemplo os hará falta:&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- Bajar y ejecutar el MAPGEN05.PRG (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN05.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/MAPGEN05.PRG&lt;/a&gt;) para generar todos los ficheros &quot;.dat&quot; en formato binario.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- Descargar el MONSTERS.FPG (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/FPG/DIABLO/MONSTERS.FPG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/FPG/DIABLO/MONSTERS.FPG&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- Descargar todos los FPG previos (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/tree/main/FPG/DIABLO&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/tree/main/FPG/DIABLO&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;- Descargar y compilar el JRPG_08.PRG (&lt;a href=&quot;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_08.PRG&quot;&gt;https://github.com/LeHamsterRuso/DIV2Examples/blob/main/PRG/JRPG_08.PRG&lt;/a&gt;).&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirs19fwcAb8DcPgLQrrCsloJuWvlghOmz53fgu_DVXNzefgXcWUx60hLj4n8zojf4mahly3oRH1IIqePUKEKgrDS-mAnrZsYUCTs8_cc9aRUxFyL6fcmzhRWvYuIeDaKuxEwO2jLhayjHApJ8Crb9xwYvJlaUt2kP_TBCPFYYh5V3PmAnhvjkx/s1504/Captura%20de%20pantalla%202026-01-13%20a%20las%2022.32.59.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirs19fwcAb8DcPgLQrrCsloJuWvlghOmz53fgu_DVXNzefgXcWUx60hLj4n8zojf4mahly3oRH1IIqePUKEKgrDS-mAnrZsYUCTs8_cc9aRUxFyL6fcmzhRWvYuIeDaKuxEwO2jLhayjHApJ8Crb9xwYvJlaUt2kP_TBCPFYYh5V3PmAnhvjkx/w640-h528/Captura%20de%20pantalla%202026-01-13%20a%20las%2022.32.59.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg91iI9N3oiOttT21TnhqwIipr3yRPQgL3xjx6E4oLwOUeB2DcRGoeFI7OWCVwlvUu61qK2UNQE3kGSTx9aDoE-VBqMv9vFzdAd0dDK6_mp5D8Md4A-DYPUtGQvc3oPaMmtkupFW_7ORemJs0QkdFpu4oj7Ou0N4jMGtepPLExfGQr3N1B8oyy4/s1504/Captura%20de%20pantalla%202026-01-13%20a%20las%2022.33.16.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1240&quot; data-original-width=&quot;1504&quot; height=&quot;528&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg91iI9N3oiOttT21TnhqwIipr3yRPQgL3xjx6E4oLwOUeB2DcRGoeFI7OWCVwlvUu61qK2UNQE3kGSTx9aDoE-VBqMv9vFzdAd0dDK6_mp5D8Md4A-DYPUtGQvc3oPaMmtkupFW_7ORemJs0QkdFpu4oj7Ou0N4jMGtepPLExfGQr3N1B8oyy4/w640-h528/Captura%20de%20pantalla%202026-01-13%20a%20las%2022.33.16.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; La lógica de los combates es demasiado complicada como para entrar al detalle a nivel de código. De hecho, la rutina (&quot;battle_screen&quot;) ocupa unas 800 líneas. Pero en fin, a modo de resumen, dicha rutina comienza inicializando el estado de batalla: selecciona aleatoriamente entre 1 y 3 enemigos (en este caso, slimes), asignando sus estadísticas de salud máxima y actual desde una base de datos de monstruos.Se muestra un mensaje inicial de aparición de enemigos y se cambia la música a la canción de batalla. En esta rutina se emplean conceptos básicos de programación como la inicialización de arrays y estructuras, el uso de números aleatorios con rand() y el manejo de recursos gráficos y de audio con funciones como put() y ChangeSong(). Además, se establece un temporizador para mostrar el mensaje inicial, ilustrando el control de tiempo en bucles con estimatedSeconds (función que estima los segundos en función de los fps de la structura ScreenConfig) y FRAME.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; El núcleo de la rutina es un bucle principal que maneja los turnos alternos entre el jugador y los enemigos. Durante el turno del jugador, se presenta un menú con opciones como &quot;Atacar&quot;, &quot;Magia&quot;, &quot;Defender&quot; y &quot;Huir&quot;, usando condicionales y manejo de entrada con KEY() para navegar y seleccionar. Si se elige atacar, se activa un modo de selección de objetivo, destacando el enemigo seleccionado con cambios visuales (tamaño y transparencia). Para la magia, se muestra una lista de hechizos disponibles, permitiendo elegir uno si hay suficiente MP. Los enemigos, por su parte, atacan aleatoriamente al jugador en su turno. En esta parte se hace uso de variables de estado (como player_turn, selecting_target), bucles anidados para dibujar elementos dinámicos y cálculos de daño basados en estadísticas. También incluye animaciones de muerte para enemigos (con transparencia y escalado vía xput), enseñando sobre temporizadores y flags booleanos para controlar secuencias complejas.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;La rutina verifica continuamente las condiciones de victoria (todos los enemigos derrotados) o derrota (salud del jugador en cero), actualizando el estado del juego en consecuencia. En caso de victoria, se otorgan recompensas como oro e ítems, actualizando el inventario del jugador mediante búsquedas en arrays. Se muestra un mensaje de victoria con temporizador antes de restaurar la música normal y salir del combate. Si el jugador huye o muere, se maneja la derrota de manera similar. Finalmente, se limpian todos los textos y gráficos dibujados, restableciendo flags como in_battle para volver al mapa principal. Esta parte resalta la importancia de la gestión de estado global y el manejo de inventarios con operaciones de array (como agregar ítems).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En cuanto al sistema de guardado, veréis por el código que no hay mucho misterio, es aplicar el mismo mecanismo de escritura de los ficheros &quot;dat&quot; de los MAPGEN, pero llevado a un fichero &quot;save&quot;.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKZsJVdCdWH6oD1eVEjnxe-8JMuSudQ2TIbEHJf0HJEf4oCYxK6tU3zwZhINPXUdZeFOWy8Lvb58r6N2iO_G6PEIQaJ7pu31y6mECUVXNWKqeCUrtJk0u7zaEPh65hGDk39RDCjQuaZdW6DQ3P9Upyf2pi3DmEbTWMR93vFswgwW4rkBiIIhT6/s1574/Captura%20de%20pantalla%202026-01-13%20a%20las%2022.55.54.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1574&quot; data-original-width=&quot;1444&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKZsJVdCdWH6oD1eVEjnxe-8JMuSudQ2TIbEHJf0HJEf4oCYxK6tU3zwZhINPXUdZeFOWy8Lvb58r6N2iO_G6PEIQaJ7pu31y6mECUVXNWKqeCUrtJk0u7zaEPh65hGDk39RDCjQuaZdW6DQ3P9Upyf2pi3DmEbTWMR93vFswgwW4rkBiIIhT6/w588-h640/Captura%20de%20pantalla%202026-01-13%20a%20las%2022.55.54.jpg&quot; width=&quot;588&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Y así queda nuestro juego:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-media-max-width=&quot;560&quot;&gt;&lt;p dir=&quot;ltr&quot; lang=&quot;es&quot;&gt;Ya parece hasta que sea un juego :-) &lt;a href=&quot;https://twitter.com/hashtag/MSDOS?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#MSDOS&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/DIV2GAMESSTUDIO?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#DIV2GAMESSTUDIO&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/ISEKAIMAOU?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#ISEKAIMAOU&lt;/a&gt;. &lt;a href=&quot;https://t.co/KM3HuDNa7V&quot;&gt;https://t.co/KM3HuDNa7V&lt;/a&gt; &lt;a href=&quot;https://t.co/HTRaQSQfMg&quot;&gt;pic.twitter.com/HTRaQSQfMg&lt;/a&gt;&lt;/p&gt;— Le Hamster ruso (@Hamster_ruso) &lt;a href=&quot;https://twitter.com/Hamster_ruso/status/2011198674219462792?ref_src=twsrc%5Etfw&quot;&gt;January 13, 2026&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt; &lt;script async=&quot;&quot; charset=&quot;utf-8&quot; src=&quot;https://platform.twitter.com/widgets.js&quot;&gt;&lt;/script&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Bonus: Uso de punteros en DIV&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Esta noche he modificado el código del ejemplo JRPG_08.PRG, en el que he revisado la complejidad ciclomática de varios métodos complejos y de paso he retocado varias funciones haciendo uso de punteros. Y me gustaría mencionar esto porque en DIV Games Studio el uso de punteros no es muy evidente, en especial si venís del mundo de C.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Los punteros permiten manipular direcciones de memoria de manera eficiente, facilitando el acceso indirecto a variables y estructuras de datos.&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;En DIV, los punteros se gestionan principalmente con OFFSET para crear referencias a variables, permitiendo acceso indirecto sin copiar datos grandes, como se ve en llamadas como OFFSET(PlayerStats.hp) para pasar la dirección de la vida del jugador.&lt;/li&gt;&lt;li&gt;El operador * desreferencia estos punteros para leer o modificar el valor original, por ejemplo, *hp_offset += 10 en una función para incrementar la HP directamente, evitando retornos explícitos.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Los arrays se manejan con [] para indexar elementos fijos, como Enemies[i].alive para acceder al estado de un enemigo específico, mientras que operadores como ^ o &amp;amp; no aparecen en el código, ya que DIV no soporta punteros a arrays dinámicos ni referencias implícitas como en otros lenguajes.&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Pasar variables entre funciones en DIV se basa en OFFSET para lograr paso por referencia, esencial para modificar structs o arrays sin duplicarlos, como en FUNCTION handle_player_action(INT selected_action_offset, ...), donde selected_action_offset permite cambiar la selección de acción dentro de la función. Para paso por valor, se pasan copias directas, como INT num_enemies, pero para structs complejos como PlayerStats, usar OFFSET evita sobrecarga; Un ejemplo es actualizar estadísticas con actualizar_hp(OFFSET(jugador.hp)), donde la función hace hp_offset += cantidad, reflejando cambios globales. Esta técnica, visible en funciones como handle_interactions(OFFSET(closest_npc)), optimiza el rendimiento y mantiene la modularidad, aunque requiere cuidado con la gestión de memoria para evitar errores de desreferencia.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; El caso es que la gestión de punteros es rara de narices en DIV. Por ejemplo, podemos definir una variable &quot;INT msg_timer = 0&quot; e incluso crear un puntero que apunte a él &quot;INT *msg_timer_offset = OFFSET msg_timer&quot;, pero no podemos crear un puntero, &quot;tal cual&quot;, en la cabecera de una función. Tomemos por ejemplo la cabecera de la función&amp;nbsp;handle_turns:&lt;/p&gt;&lt;p style=&quot;margin-left: 40px; text-align: justify;&quot;&gt;FUNCTION handle_turns(INT num_enemies, &lt;span style=&quot;background-color: #fff2cc;&quot;&gt;INT player_turn_offset, INT battle_active_offset, INT message_text_id_offset, INT msg_timer_offset,&lt;span style=&quot;background-color: white;&quot;&gt; STRING battle_msg,&lt;/span&gt; INT input_timer_offset&lt;/span&gt;)&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Si nos fijamos en esa función 5 de los 7 parámetros son punteros (los que acaban en &quot;_offset&quot;), pero en la cabecera de la función los definimos como de tipo entero (INT) y no de tipo puntero a entero (INT *). ¿Por qué? Pues sencillamente porque no compila. Y esto sorprende mucho, porque la gracia de los punteros, aparte de de para gestionar memoria dinámicamente, radica en poder hacer cambios en una variable desde distintos métodos. Y bueno, battle_msg, ¡tambien es un puntero!, puesto que cuenta como array de chars pese a no existir los CHAR en DIV.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; De hecho, si os fijáis en el código, para esas variables estamos empleando el operador OFFSET en las llamadas a hundle_turns:&lt;/p&gt;&lt;p style=&quot;margin-left: 40px; text-align: left;&quot;&gt;handle_turns(num_enemies, &lt;span style=&quot;background-color: #fff2cc;&quot;&gt;OFFSET(player_turn), OFFSET(battle_active), OFFSET(message_text_id), OFFSET(msg_timer)&lt;/span&gt;, battle_msg, &lt;span style=&quot;background-color: #fff2cc;&quot;&gt;OFFSET(input_timer)&lt;/span&gt;);&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Entonces, ¿qué pasa aquí? ¿Por qué las llamadas usamos OFFSET para pasarle la dirección de memoria de las variables si en la cabecera NO esperamos un número entero? ¡Pues porque el funcionamiento de DIV es copiar por valor el número de referencia en un entero y luego acceder a su contenido con el operador &quot;*&quot;. Y esto abre las puertas al polimorfismo, si toda referencia se pasa como un INT, luego podemos manipular su contenido como queramos.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Por cierto, aquí tenéis mi ejemplo favorito: (*msg_timer_offset)--;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge3Hod6MHW8hSDHv8c6TjJCnZ4g1_4zB2BalIhHX3jj28HnHJWtp9Rep-rpwMF9RAiIktGW241ceC-q5BqkLUfrTMqZ_sxh-xNmOVbkR1FqaXj_SnfmKpL8-a4Z2kkdUpC1l_ysRu-Z4i4v5-DrASqCa2nZgj18ZvlUnQfE2TX5mwt_ojcVfJj/s1370/Captura%20de%20pantalla%202026-01-14%20a%20las%2021.25.34.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;350&quot; data-original-width=&quot;1370&quot; height=&quot;164&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge3Hod6MHW8hSDHv8c6TjJCnZ4g1_4zB2BalIhHX3jj28HnHJWtp9Rep-rpwMF9RAiIktGW241ceC-q5BqkLUfrTMqZ_sxh-xNmOVbkR1FqaXj_SnfmKpL8-a4Z2kkdUpC1l_ysRu-Z4i4v5-DrASqCa2nZgj18ZvlUnQfE2TX5mwt_ojcVfJj/w640-h164/Captura%20de%20pantalla%202026-01-14%20a%20las%2021.25.34.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Esta línea me tiene maravillado, porque es algo que funciona en C y que no me esperaba que funcionara en DIV: Esto, señoras y señores, decrementa el valor guardado en la dirección que tenemos entre paréntesis. Es simple, es hermoso y funciona.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2026/01/aprendiendo-programar-para-ms-dos-con.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/6278095497982301184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/6278095497982301184'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2026/01/aprendiendo-programar-para-ms-dos-con.html' title='¿Aprendiendo a programar para MS-DOS con DIV2 Games Studio? ¡Hagámos un JRPG! (capítulo 2)'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfgUDcpwIyJYqGouvoOEeKvsTn-igQdBKa5YQ4RpijIY7JCo9GJ1z8FroFO6BSAm4zT82zKdcfCCL16OxsziRyzH-_ddGkePch947iNfUG3CBAzcNXrdKKfkwWNcxrJKLwNyBHgq8G8rlgBY6wUOUVB5KeopT-qTOt-JsU9-wuwMX7SebOR7B_/s72-w640-h528-c/Captura%20de%20pantalla%202026-01-05%20a%20las%2019.58.39.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-7365696397239146080</id><published>2026-01-04T11:45:00.001+01:00</published><updated>2026-01-04T11:45:45.480+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="xbox"/><category scheme="http://www.blogger.com/atom/ns#" term="xbox series x"/><title type='text'>[ENG] Act Man publica un vídeo sobre las malísimas ventas de Xbox en el último black friday</title><content type='html'>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/YJEI0WLoQwY&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2026/01/eng-act-man-publica-un-video-sobre-las.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/7365696397239146080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/7365696397239146080'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2026/01/eng-act-man-publica-un-video-sobre-las.html' title='[ENG] Act Man publica un vídeo sobre las malísimas ventas de Xbox en el último black friday'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/YJEI0WLoQwY/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-5806931630618242330</id><published>2026-01-04T11:44:00.005+01:00</published><updated>2026-01-14T22:41:49.753+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="datos curiosos"/><title type='text'>[Blog] Datos curiosos y nada útiles de 2025</title><content type='html'>&lt;p&gt;&amp;nbsp; &amp;nbsp; Cumpliendo con el mismo tipo de entrada que hice en &lt;a href=&quot;https://www.elgeneralfailure.com/2024/12/datos-curiosos-y-nada-utiles-de-2024.html&quot;&gt;2024&lt;/a&gt;, &lt;a href=&quot;https://www.elgeneralfailure.com/2024/01/datos-curiosos-y-nada-utiles-de-2023.html&quot;&gt;2023&lt;/a&gt;&amp;nbsp;y en&amp;nbsp;&lt;a href=&quot;https://www.elgeneralfailure.com/2023/01/datos-curiosos-y-nada-utiles-de-2022.html&quot;&gt;2022&lt;/a&gt;, quisiera compartiros una serie de estadísticas nada útiles para hacer balance de este 2024:&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh00SQoDvismBA5fm2Mh8pXkmWR6K9ScCm__yw2ZfxR-BaY7-gYFG-_NNbcD7HfUH2AdQzoVWmdxMuGojnsMP6NCOTmaBVcevddGKh07ZngVDxU94N4lzC8rycXzP6REXMZrkmKjALNYuNUItTggtLWovMU2jPjx8eZCojiMgs0Yw7ZmTcVA1tw/s980/Captura%20de%20pantalla%202026-01-04%20103039.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;315&quot; data-original-width=&quot;980&quot; height=&quot;206&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh00SQoDvismBA5fm2Mh8pXkmWR6K9ScCm__yw2ZfxR-BaY7-gYFG-_NNbcD7HfUH2AdQzoVWmdxMuGojnsMP6NCOTmaBVcevddGKh07ZngVDxU94N4lzC8rycXzP6REXMZrkmKjALNYuNUItTggtLWovMU2jPjx8eZCojiMgs0Yw7ZmTcVA1tw/w640-h206/Captura%20de%20pantalla%202026-01-04%20103039.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Este
 año este blog ha recibido más de 389.000 visitas, 2.050 de ellas han 
llegado aquí usando ipods.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;La
 palabra clave más usada este año en Google para llegar hasta aquí ha 
sido &quot;firefox dinasty&quot;. Este año hemos tenido el honor además de recibir 243 personas referidas de algún sitio del MIT.EDU y 106 de GNU.ORG.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Según las cookies de las personas que han accedido al blog (y las han aceptado), el público medio son varones (74%), está en una franja de edad entre los 18-24 años (36,54%) y es de habla inglesa (&lt;span _ngcontent-ng-c3133474689=&quot;&quot; class=&quot;percent-of-total ng-star-inserted&quot;&gt;47,52%&lt;/span&gt;).&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Acceso por franja de edad:&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;18-24: 36,54%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;45-54: 21,79%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;25-34: 14,10%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;35-44: 10,26%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;55-64:&amp;nbsp;10,26%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;+64: 7,05%.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Acceso por franja de idioma:&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Inglés: 47,52%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Español (en todas sus variantes): 32,59%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Chino: 16,07%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Catalán: 0,75%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Portugués: 0,53%.&lt;/li&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Francés y Alemán: 0,44%.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;En cuanto al contenido:&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Con 1.090 vistas, la entrada escrita en 2025 que más visitas ha recibido ha sido &quot;&lt;a href=&quot;https://www.elgeneralfailure.com/2025/07/firefox-dynasty-el-genial-port-del.html&quot;&gt;Firefox Dynasty: El genial port del Firefox actual para Macs obsoletos (Mac OS X 10.8 o superior)&lt;/a&gt;&quot;.&lt;/li&gt;&lt;li&gt;Con 1.970 visitas, la entrada más vista del año ha sido &quot;&lt;a href=&quot;https://www.elgeneralfailure.com/2012/10/instalando-jelly-bean-cyanogenmod-10-en.html&quot;&gt;Instalando Jelly Bean (CyanogenMod 10) en Folio 100&lt;/a&gt;&quot;. La escribí en 2012 y lleva acumuladas más de 27,4K vistas.&lt;/li&gt;&lt;li&gt;Desde que se creó el blog, la entrada con más visitas (41,5K), sigue siendo &quot;&lt;a href=&quot;https://www.elgeneralfailure.com/2012/11/programando-en-android-tu-propia.html&quot;&gt;Programando en Android: Tu propia calculadora con App Inventor&lt;/a&gt;&quot;.&lt;/li&gt;&lt;li&gt;La guía de juegos más consultada este año, con más de 1.270 visitas, ha sido la &quot;&lt;a href=&quot;https://www.elgeneralfailure.com/p/localizacion-de-objetos-de-sword-art.html&quot;&gt;Localización de objetos de misión de Sword Art Online: Alicization Lycoris&lt;/a&gt;&quot;. De hecho, este año ha recibido más del doble de lecturas que respecto al resto de mis guías.&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;En cuanto a los videojuegos:&amp;nbsp;&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;El primer juego que he comprado este año ha sido el Breath of Fire III de PSP y el último el Dot Hack://G.U. Last Recode de PS4.&lt;/li&gt;&lt;li&gt;Entre regalos y adquisiciones, este año añadí 123 juegos a mi colección.&lt;/li&gt;&lt;li&gt;Este año me marqué como objetivo mejorar mi colección de PS3, pero al final sólo he comprado dos juegos para esta plataforma. Eso sí, son dos Ateliers:&amp;nbsp;Ayesha y&amp;nbsp;Meruru.&amp;nbsp;&lt;/li&gt;&lt;li&gt;En este 2025 sólo un vendedor se negó en Vinted a venderme un juego que le compré y el motivo fue que seleccionaba un punto de recogida en vez de mi dirección real. Lo que me molestó del vendedor es que no comunicaba, se dedicaba a cancelar la venta y a publicar el anuncio una y otra vez, sin decir nada. Tuve que mandarle un par de privados para que me explicara que pasaba.&lt;/li&gt;&lt;li&gt;El Final Fantasy VII de PC (en caja grande) y la versión española del Oni de Mac siguen siendo mi Rosebud.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;En cuanto a mangas y ánimes:&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Este año me han encantado la segunda temporada de Solo Leveling, la segunda temporada de Dan Da Dan y la tercera de Re:Zero y de Firefoce. Si tuviera que quedarme con una, creo que elegiría Re:Zero como mi preferida.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp117yn9x3WpXPdAHa4JPfYaGHgKPTMXLGdDopWfTnsyKcg7x8dimHMKYcML5wxTlH6RODhb8Opi1VD48F3B9-rL9rvlW9ihXcHWizl1jkUPAicSFvp8rFpA3X4SZDI7D3pkXwqSliZsqVvP3jwAYRSS7BTM-vA_f8XgNvNmY23v-k4JX7BpI6/s2560/0c22bdae64b7c1b411977eda1e069bfda04f078dd07402b8577a479eb2ab7fac-571644144.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1920&quot; data-original-width=&quot;2560&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp117yn9x3WpXPdAHa4JPfYaGHgKPTMXLGdDopWfTnsyKcg7x8dimHMKYcML5wxTlH6RODhb8Opi1VD48F3B9-rL9rvlW9ihXcHWizl1jkUPAicSFvp8rFpA3X4SZDI7D3pkXwqSliZsqVvP3jwAYRSS7BTM-vA_f8XgNvNmY23v-k4JX7BpI6/w640-h480/0c22bdae64b7c1b411977eda1e069bfda04f078dd07402b8577a479eb2ab7fac-571644144.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;La gran decepción del año ha sido, para mí, Ubel Blatt. El anime presenta un altísimo nivel de censura en comparación con el manga, además el desarrollo de los personajes y la narración de los eventos y de los sucesos no está a la altura. En pocas palabras, pese a ser palomitera, su anime ha salido rana.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi35z51HaD-PiG2jN6soU9wVMR6h1EQC3EwC_175hZOVyrYI9FcQO2YmflrQJobcS_t8wexji6R49EvG3cvegjtEYaN-RYAZkohyJprwLlT2DpvmdL19nlxg27S7ju5mLA5N-5TRlaPihUdmIOr4UAhm6S72_2y7JugWBVD33SuYMnkCFPUmZhk/s2048/anime-ubel-blatt-nouveau-trailer-1604512574.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1152&quot; data-original-width=&quot;2048&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi35z51HaD-PiG2jN6soU9wVMR6h1EQC3EwC_175hZOVyrYI9FcQO2YmflrQJobcS_t8wexji6R49EvG3cvegjtEYaN-RYAZkohyJprwLlT2DpvmdL19nlxg27S7ju5mLA5N-5TRlaPihUdmIOr4UAhm6S72_2y7JugWBVD33SuYMnkCFPUmZhk/w640-h360/anime-ubel-blatt-nouveau-trailer-1604512574.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;En cuanto a los animes que no han sido novedad pero que me ha encantado ver este año y que recomiendo encarnizadamente: JoJo&#39;s Bizarre Adventure. Es probablemente el mejor anime que he visto nunca.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7MEp9CbiWjLaJhZ9oBvcfeH-U_53LlkELK-sBsHsmd5_WJxO5GZD65CHkM2zeCo5cNh8xIFmnYXkBR7dIXuQ1qljFViQJFxu2HnubG7AM06kccp_ctfHsCngQE2s3TalXU2qM_CM5h8GYB4UVjTsqg0LMB1ljtkvj0MQPcd_qodiCtxFBxhBI/s1920/wp2200981.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7MEp9CbiWjLaJhZ9oBvcfeH-U_53LlkELK-sBsHsmd5_WJxO5GZD65CHkM2zeCo5cNh8xIFmnYXkBR7dIXuQ1qljFViQJFxu2HnubG7AM06kccp_ctfHsCngQE2s3TalXU2qM_CM5h8GYB4UVjTsqg0LMB1ljtkvj0MQPcd_qodiCtxFBxhBI/w640-h360/wp2200981.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;En cuanto a mangas, mis preferidos en 2025 siguen siendo Backstabbed in a Backwater Dungeon (qué pena que en España no haya llegado ni el anime ni el manga), In/Spectre (Stranger Case en Francia), Diario de Guerra: Saga of Tanya The Evil (Yōjo Senki) y Gate,(Gēto jieitai kanochi nite, kaku tatakaeri). Me sorprende que en España las editoriales se quejen de que el mercado está sobreexplotado, cuando la mayoría de mis series preferidas no salen aquí y tengo que comprarlas de importación en Francia o Reino Unido.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU4VxFMrZFZlQktYzAmvR2h8GgkJm_Lb2WANXWABbC9SzPDMiC1wnj5kl2PXeJbXaVgW4gPacbpmjSPKdMM9VbkD8bGpfXQ5gWb7-3e8CxdcB_JxsOKd7hYcJ59v0HzbWczQU_aCczYzSlWRAvTTAk4Rf8C1Bv2CNJvJCk5hbMbbfPfnujGaD2/s1000/929982fcc4424061b20179e9b95e9a95.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1000&quot; data-original-width=&quot;713&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU4VxFMrZFZlQktYzAmvR2h8GgkJm_Lb2WANXWABbC9SzPDMiC1wnj5kl2PXeJbXaVgW4gPacbpmjSPKdMM9VbkD8bGpfXQ5gWb7-3e8CxdcB_JxsOKd7hYcJ59v0HzbWczQU_aCczYzSlWRAvTTAk4Rf8C1Bv2CNJvJCk5hbMbbfPfnujGaD2/w456-h640/929982fcc4424061b20179e9b95e9a95.jpg&quot; width=&quot;456&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;En cuanto a novedades de 2025, la única que me ha llamado la atención y que considero que merece destacar es &quot;Blade &amp;amp; Bastard&quot;, de Ediciones Babylon.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjICV9lVL0RDNtrlBjfjgkOi6on3JW1Galy5bnqL8qV0KH0succqsOzIDMVOlXtogXvwSWugi61CQnyEBw4TYQ6M_Vo6xCRYIH7YnuojQCzn9cB1tOSrqFJQGtUtQvKFOK-hq-vfzdYzS8bvo_3h-xT_m6MLv6qT6cIWxSVMSZJTzRHSeEXlG0G/s1000/9a11ad157e35484fba827a1f58aa285b.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1000&quot; data-original-width=&quot;674&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjICV9lVL0RDNtrlBjfjgkOi6on3JW1Galy5bnqL8qV0KH0succqsOzIDMVOlXtogXvwSWugi61CQnyEBw4TYQ6M_Vo6xCRYIH7YnuojQCzn9cB1tOSrqFJQGtUtQvKFOK-hq-vfzdYzS8bvo_3h-xT_m6MLv6qT6cIWxSVMSZJTzRHSeEXlG0G/w432-h640/9a11ad157e35484fba827a1f58aa285b.jpg&quot; width=&quot;432&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;Por cierto, la gran decepción en cuanto en manga para mí ha sido la calidad de impresión de la mayoría de editoras españolas. Tenemos uno de los precios más altos de toda Europa (aquí rara vez valen menos de 9€ el tomo) y absolútamente todas han tenido problemas de moiré en bastantes tiradas (con tirón de orejas especial a Devir por su desastre con las primeras tiradas de Los Diarios de la Boticaria y a Ivrea por toda la publicación de Nagatoro).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY0Z0AhmEDWj0b1TFKU1U8ULKf8j2-FNBaacX88daqKUSIJWkKEV4OOOWqbUyIbZ8HqtQ9DDWQoEcVZv54fbavM855VPPtaPdmDWSdUMQTnCakWNKi8E4q3eMUfFpbPjXAT9f7hypw37VcPc3r_zm0cVh_f5Ve6cEABgts-66kZQ1eqT3sXH9X/s1023/90CBF37C-7AF4-40CE-9EB7-C61B1A3FF459.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1023&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY0Z0AhmEDWj0b1TFKU1U8ULKf8j2-FNBaacX88daqKUSIJWkKEV4OOOWqbUyIbZ8HqtQ9DDWQoEcVZv54fbavM855VPPtaPdmDWSdUMQTnCakWNKi8E4q3eMUfFpbPjXAT9f7hypw37VcPc3r_zm0cVh_f5Ve6cEABgts-66kZQ1eqT3sXH9X/w640-h480/90CBF37C-7AF4-40CE-9EB7-C61B1A3FF459.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Ivrea: - &quot;Dame 9€&quot;.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Lector: - &quot;Pero si toda la tirada está defectuosa&quot;.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Ivrea: - &quot;Dámelos&quot;.&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;En cuanto modelado 3D:&lt;/p&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;El modelo que este año más he disfrutado haciendo es nueva versión de Tanya Degurechaff que hice imitando la presentación del tomo 11: &lt;a href=&quot;https://sketchfab.com/3d-models/tanya-degurechaff-from-saga-of-tanya-the-evil-fb725e63784d4839928aa8ea6fe28e56&quot;&gt;https://sketchfab.com/3d-models/tanya-degurechaff-from-saga-of-tanya-the-evil-fb725e63784d4839928aa8ea6fe28e56&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYRKSb-S2Ca0Cc5YMI7yMfLSXEGZu4hPqGrkmGj2lACbwzZdlrUGwfaAxPcl0GzU_BNwfoJCVKiSjFHq-g9xm1kKf-eALyL63h7Xm4Z5l0ry5a35qjQ6sYwfVjDq3gY_LZyX-vv7_flRBFLKp3uRMczkWpgCcnvXYg2SQmTh1sQbUVibAseR1f/s1350/Captura%20de%20pantalla%202026-01-04%20114058.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;748&quot; data-original-width=&quot;1350&quot; height=&quot;354&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYRKSb-S2Ca0Cc5YMI7yMfLSXEGZu4hPqGrkmGj2lACbwzZdlrUGwfaAxPcl0GzU_BNwfoJCVKiSjFHq-g9xm1kKf-eALyL63h7Xm4Z5l0ry5a35qjQ6sYwfVjDq3gY_LZyX-vv7_flRBFLKp3uRMczkWpgCcnvXYg2SQmTh1sQbUVibAseR1f/w640-h354/Captura%20de%20pantalla%202026-01-04%20114058.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Mi revisión de Ankha de 2021, con más de 23,1K vistas, sigue siendo mi modelo con más éxito en sketchfab &lt;a href=&quot;https://sketchfab.com/3d-models/ankha-zone-version-37819f223f26467e8b3247e83b507805&quot;&gt;https://sketchfab.com/3d-models/ankha-zone-version-37819f223f26467e8b3247e83b507805&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAmDs2FQnJEP4g2P9crTYoU5796lQpoDEMIo1XMlpqgMOLoFTYBvw6jgUt0WlqVhB3uo6KBgGw50AzqI02u5f-1wKvxVL2xJPGms7lHKKPj6BmoU37r6KF6mMFBi4Ab-dUsA241hFAOotHAhDiycdXlQwjpstapB-KfJeuatHXRqGyYpAr4SOW/s1356/Captura%20de%20pantalla%202026-01-04%20114151.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;757&quot; data-original-width=&quot;1356&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAmDs2FQnJEP4g2P9crTYoU5796lQpoDEMIo1XMlpqgMOLoFTYBvw6jgUt0WlqVhB3uo6KBgGw50AzqI02u5f-1wKvxVL2xJPGms7lHKKPj6BmoU37r6KF6mMFBi4Ab-dUsA241hFAOotHAhDiycdXlQwjpstapB-KfJeuatHXRqGyYpAr4SOW/w640-h358/Captura%20de%20pantalla%202026-01-04%20114151.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Y para finalizar, Expedition 33 ganándolo todo ha sido el momentazo del año:&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/2Agysxewf8Q&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2026/01/blog-datos-curiosos-y-nada-utiles-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/5806931630618242330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/5806931630618242330'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2026/01/blog-datos-curiosos-y-nada-utiles-de.html' title='[Blog] Datos curiosos y nada útiles de 2025'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh00SQoDvismBA5fm2Mh8pXkmWR6K9ScCm__yw2ZfxR-BaY7-gYFG-_NNbcD7HfUH2AdQzoVWmdxMuGojnsMP6NCOTmaBVcevddGKh07ZngVDxU94N4lzC8rycXzP6REXMZrkmKjALNYuNUItTggtLWovMU2jPjx8eZCojiMgs0Yw7ZmTcVA1tw/s72-w640-h206-c/Captura%20de%20pantalla%202026-01-04%20103039.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-2216840595616776443</id><published>2025-12-16T00:29:00.005+01:00</published><updated>2025-12-21T20:33:30.086+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="anime"/><category scheme="http://www.blogger.com/atom/ns#" term="Críticas de anime"/><category scheme="http://www.blogger.com/atom/ns#" term="Thw Dawn of The Witch"/><title type='text'>[Anime] La edición física de The Dawn of the Witch</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Hoy he recibido en mi domicilio la edición europea de &quot;The Dawn of the Witch&quot; (título original: &quot;Mahōtsukai Reimeiki&quot; 魔法使い黎明期, que se traduce literalmente como &quot;El amanecer del mago&quot;).&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Esta serie, estrenada en 2022 a través de plataformas de streaming como Crunchyroll, constituye una secuela de &quot;El Mágico Libro de Zero&quot;.&amp;nbsp; Cabe destacar que esta secuela se centra en un nuevo elenco de personajes, cinco años después de los acontecimientos de la serie original, situándose realmente entre un &lt;i&gt;spinoff&lt;/i&gt; y una secuela en el sentido tradicional.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Esta edición física, lanzada en julio de 2023, se distribuyó exclusivamente en el Reino Unido, Francia y Alemania. Incluye doblajes en francés, inglés y alemán, así como la opción de disfrutarla en VOSE (versión original japonesa con subtítulos en los idiomas mencionados). Lamentablemente no se realizó ninguna distribución para Portugal, España o Italia, haciendo que esta sea la única versión que podamos conseguir para toda Europa.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En cuanto al empaquetado, lo primero que nos llama la atención es la sobrecubierta de cartón, escrita en varios idiomas, la cual envuelve al estuche de plástico típico de todos los bu-ray... todo a su vez envuelto en un precinto genérico, sin sello, así que si lo encontráis en una tienda de segunda mano, andaros con ojo (si os lo ofrecen como &quot;nuevo&quot; y &quot;nunca abierto&quot;, difícilmente puede demostrarse que sea cierto). El precinto, a su vez, viene bastante ajustado, por lo que es tremendamente sencillo encontrarse con una unidad con las esquinas de la sobrecubierta de cartón dañadas. Este tipo de sobrecubiertas de cartón era característico de Funimation, empresa adquirida por Sony y posteriormente fusionada con Crunchyroll.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsYnyietcqkMwHRRQouHn6gCGD0gpVEjO1UJUJQQvCwWz8dAlu9XSdmmZJ5Cvi0T1qD_TYtZkxfCM2ib3XeEH9hfcGxeg9wQFcBlwAiZWdOP4FqWwA5JafUtrPmZbENjYby6NdJ6PzlPsBzIxfSBy_ioZNBmhA8JIdoFS5GigUHhSDDLtMF7wx/s4032/IMG_9086.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsYnyietcqkMwHRRQouHn6gCGD0gpVEjO1UJUJQQvCwWz8dAlu9XSdmmZJ5Cvi0T1qD_TYtZkxfCM2ib3XeEH9hfcGxeg9wQFcBlwAiZWdOP4FqWwA5JafUtrPmZbENjYby6NdJ6PzlPsBzIxfSBy_ioZNBmhA8JIdoFS5GigUHhSDDLtMF7wx/w300-h400/IMG_9086.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOqGgErpFXhtAJoE9PSlimby9OLtLUD2I_MmTju1K8lxbsI6k4PtXTUN_OARfiJKde4oEfc5v0vB7GmEySTQ7Da3M1QDWzAuchvOdeNh5gRKnbQWgfsiDQQG6p9P2rH49fv5N91TB9Rq6jJD0-qrarr4fEnZHQ9niuD_6HWlDN7Q3kuA6nUIfm/s4032/IMG_9087.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOqGgErpFXhtAJoE9PSlimby9OLtLUD2I_MmTju1K8lxbsI6k4PtXTUN_OARfiJKde4oEfc5v0vB7GmEySTQ7Da3M1QDWzAuchvOdeNh5gRKnbQWgfsiDQQG6p9P2rH49fv5N91TB9Rq6jJD0-qrarr4fEnZHQ9niuD_6HWlDN7Q3kuA6nUIfm/w300-h400/IMG_9087.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En cuanto al lomo, destaca la presencia de Loux Krystas. Sin embargo, si la presencia de una bruja loli de más de 300 años de edad no resulta de tu agrado, se puede girar la caja 180 grados y reemplazar a nuestra amada profesora por el emo de Saybil.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxYsmteiTrYWwAPP82oNr6IqyBjS_RS7nWBtIRVuccoS_XT0orarCYP6IlDOe_IorRrOvtkJWgxSkSFHYh-mRLE7ZU9zNE7h6VGIh9z_v9xLgOIRb2CI6DVSyhmL85ODaVivY3gqfd4xLbQ6OIe3Z58E8B7YZHLMweHEQnpeAKda7nv6kcKCzG/s4032/IMG_9094.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxYsmteiTrYWwAPP82oNr6IqyBjS_RS7nWBtIRVuccoS_XT0orarCYP6IlDOe_IorRrOvtkJWgxSkSFHYh-mRLE7ZU9zNE7h6VGIh9z_v9xLgOIRb2CI6DVSyhmL85ODaVivY3gqfd4xLbQ6OIe3Z58E8B7YZHLMweHEQnpeAKda7nv6kcKCzG/w300-h400/IMG_9094.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRnejNQVmCmomj_m5shDu0MPoULONCEXCsvF_Z2YGSpyd_u3wz4JYqKFQTzSznirGPn0ymXNi9YzrSORKYTXHTpsGbpeWpUSN0Q7MLhTAo6KI1OBGkADr9qg2rTfBkIyxHOASs2oF4gWB1qcUZ-y0vOU9inAzh2XGnVRD9NXfDM6yMMzeNngMk/s4032/IMG_9095.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRnejNQVmCmomj_m5shDu0MPoULONCEXCsvF_Z2YGSpyd_u3wz4JYqKFQTzSznirGPn0ymXNi9YzrSORKYTXHTpsGbpeWpUSN0Q7MLhTAo6KI1OBGkADr9qg2rTfBkIyxHOASs2oF4gWB1qcUZ-y0vOU9inAzh2XGnVRD9NXfDM6yMMzeNngMk/w300-h400/IMG_9095.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Tras retirar la sobrecubierta de cartón, nos encontramos con un estuche de plástico convencional. Cabe destacar que la portada presenta un diseño reversible, exhibiendo por un extremo una versión en francés e inglés, y por el otro, la misma portada, pero en alemán. Este tipo de detalles me encantan. Cabe destacar que el código de barras varía en la portada alemana: Siendo 3700091033433 para el Reino Unido y Francia, y 7630017531858 para Alemania.&amp;nbsp; Observando la caja de cartón, se aprecia un recorte que permite visualizar el EAN, lo que sugiere que en Alemania se distribuye la misma versión del producto, pero con la portada de papel invertida (para mostrar el EAN alemán).&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTp0UpF7WiilDLE5P3EeUVUZhQlIEggxv_p6-Wj5TCOSBd4Z7gCl4PpC4AekB_HT-hU0gTBYnIEjI-47dJvK1DMCipgBpkO_8rq54je5h7q6nHLaR6zx6GaGFTbyxFGN9qvXPZpg4uRjqSGRqfjpi-BZ3GUPU1OLLGdgUnKSG-4tLoEAfg1srh/w640-h480/IMG_9088.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeK9RqCI22vd_Yi-ggEkPKzL1wQ9dwoCf89DbPzG3AlIzwJ6ONlwwOiY0STWQpygo_Ein1nHY5GOIa2HAUF2Io0OMyUNvxZlHvk4NQBkXQzIogvR7QiaCdW-OfVKHTJJ31RbQwuReiwEtMHptovF2sIA0jdoBTQlOd7z4vfyjnfX3ttNb-issE/s4032/IMG_9090.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeK9RqCI22vd_Yi-ggEkPKzL1wQ9dwoCf89DbPzG3AlIzwJ6ONlwwOiY0STWQpygo_Ein1nHY5GOIa2HAUF2Io0OMyUNvxZlHvk4NQBkXQzIogvR7QiaCdW-OfVKHTJJ31RbQwuReiwEtMHptovF2sIA0jdoBTQlOd7z4vfyjnfX3ttNb-issE/w640-h480/IMG_9090.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; En cuanto a los discos, si bien no son los más bonitos del mercado, presentan un acabado visualmente atractivo.&amp;nbsp; Cabe destacar que, además de la ingente presencia de círculos mágicos, los sellos de control de edad (el &quot;15&quot; y el&amp;nbsp; &quot;FSK ab 16&quot;) parecen estar superpuestos en distintas capas del disco, creando un efecto relieve que no había visto antes en otros blu-rays.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3p0ZTxDdM2bhNbYKZzjlh7-sza31JAp8CjJOy2-jun2nDjrkZeDxmmVS-36QRnfBb33QFZlf2f8nALRN_yQJCEXJcq7XGSpeu4xm0Va5vfsuXSlhjSx94I9ihvmfIW_zYorPvStw6Bu9iOCXZDnhra6wGi4T1Nc6_Io_CNi6JXJcsQqRo9Bje/s4032/IMG_9089.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3p0ZTxDdM2bhNbYKZzjlh7-sza31JAp8CjJOy2-jun2nDjrkZeDxmmVS-36QRnfBb33QFZlf2f8nALRN_yQJCEXJcq7XGSpeu4xm0Va5vfsuXSlhjSx94I9ihvmfIW_zYorPvStw6Bu9iOCXZDnhra6wGi4T1Nc6_Io_CNi6JXJcsQqRo9Bje/w640-h480/IMG_9089.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Es importante mencionar que los discos son de región A y B, lo que 
sugiere que Crunchyroll los utiliza &quot;tal cual&quot; también para el mercado 
estadounidense.&amp;nbsp; De hecho, al buscar en varias webs con el código de barras de la 
distribución americana (704400107832) y con el de la versión australiana
 (704400702617), se observa que ambas versiones también incluyen los doblajes en 
inglés, francés y alemán.&amp;nbsp; Por lo tanto, para esta serie, parece que 
puedes comprarla sin miedo en Estados Unidos, Europa o Australia, ya que
 a priori traen exactamente los mismos discos.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;En cuanto al anime, The Dawn of the Witch narra la historia de Saybil, un estudiante de magia amnésico y sin talento, que es enviado a una peligrosa misión de tres años de entrenamiento en las hostiles tierras del sur. Este viaje, ordenado por la directora de la academia y realizado en compañía de una bruja misteriosa y otros inadaptados, lo sumerge en el corazón del conflicto latente entre la Iglesia y las brujas, quinientos años después de que terminara la guerra.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;La trama se centra en el crecimiento personal de Saybil y sus compañeros mientras viajan por un mundo dividido por la intolerancia y los prejuicios. A medida que enfrentan desafíos mágicos y morales, la historia desvela gradualmente los secretos del pasado de Saybil y el verdadero propósito de su viaje, que busca la reconciliación y la comprensión en una era donde la paz es frágil.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3D34rcdndkJGVIKRmz0rkqRm3q68yd7CqM_vxUJmzqFLn4eyaEOqZZ3XQrW7PmXq-u1C7YqjMjHvcKy-DMoH5X95IxS9Y5BYmsUCXFN60JIspjqlCfRDGdrlO-FbXmoLAxplPR38JN5pmh2hBhI_XK3DYAiXvmBUGYBPd-BSVj-TZGRwFdetF/s1920/vlcsnap-2025-12-15-20h25m47s640.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3D34rcdndkJGVIKRmz0rkqRm3q68yd7CqM_vxUJmzqFLn4eyaEOqZZ3XQrW7PmXq-u1C7YqjMjHvcKy-DMoH5X95IxS9Y5BYmsUCXFN60JIspjqlCfRDGdrlO-FbXmoLAxplPR38JN5pmh2hBhI_XK3DYAiXvmBUGYBPd-BSVj-TZGRwFdetF/w640-h360/vlcsnap-2025-12-15-20h25m47s640.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg2mUew-495rqkAfVg8N9dmG9JUyGUcV6UZmKmcIXZkQIjeX1VaIBlNo016VhmUeY2aQ1_C8UMNg6kV6iqi60qDV5RMFC_EimJryce16CDKnh56IDMYmjJqqxDyjOmzE-whq8t7mABycjP4VhkoCvOSAKIp9y1ATHyBcis24xw84rdMW4WgWlL/s1920/vlcsnap-2025-12-15-20h20m56s762.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg2mUew-495rqkAfVg8N9dmG9JUyGUcV6UZmKmcIXZkQIjeX1VaIBlNo016VhmUeY2aQ1_C8UMNg6kV6iqi60qDV5RMFC_EimJryce16CDKnh56IDMYmjJqqxDyjOmzE-whq8t7mABycjP4VhkoCvOSAKIp9y1ATHyBcis24xw84rdMW4WgWlL/w640-h360/vlcsnap-2025-12-15-20h20m56s762.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQK5_EUOJEBrTQja14WcJg5NvhyphenhyphenpVSUzZFZYIVuSeqtLQrTxn05HfNu1xiS39ubhosal0kHV7jHK4h7QzUfkvFyskN221ZnSYy5d6YIpsDufvuhBSZ7HIzEK8OBECTvqRbJFJVFAC5i671Oh7HL5zymZ6mol1wOA3ndKNHrBi4I43imbTuagBA/s1920/vlcsnap-2025-12-15-20h20m51s773.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQK5_EUOJEBrTQja14WcJg5NvhyphenhyphenpVSUzZFZYIVuSeqtLQrTxn05HfNu1xiS39ubhosal0kHV7jHK4h7QzUfkvFyskN221ZnSYy5d6YIpsDufvuhBSZ7HIzEK8OBECTvqRbJFJVFAC5i671Oh7HL5zymZ6mol1wOA3ndKNHrBi4I43imbTuagBA/w640-h360/vlcsnap-2025-12-15-20h20m51s773.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE0MgJMmc-4VBpft3vtWHHeTaF6RFR0ZWymPu96TSiC1jEs9d8-1PWUlIt36s54voyZOl2OeiFW6f9wdt6Q9f1NSnKVEYMWhVzU4FiCj0IpCLJUKNVHz740xYlpZCHQef2WI1ulcAMeLiTDjDwUgE6XEK-PCYogUiLdL1FhZjf2UAMGZj5OYjg/s1920/vlcsnap-2025-12-15-19h51m47s354.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE0MgJMmc-4VBpft3vtWHHeTaF6RFR0ZWymPu96TSiC1jEs9d8-1PWUlIt36s54voyZOl2OeiFW6f9wdt6Q9f1NSnKVEYMWhVzU4FiCj0IpCLJUKNVHz740xYlpZCHQef2WI1ulcAMeLiTDjDwUgE6XEK-PCYogUiLdL1FhZjf2UAMGZj5OYjg/w640-h360/vlcsnap-2025-12-15-19h51m47s354.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Como ya ha mencionado anteriormente, nos encontramos ante una secuela de &quot;El Mágico Libro de Zero&quot;. Sin embargo, no es estrictamente necesario haber visionado la serie original para disfrutar plenamente de esta nueva entrega.&amp;nbsp; Si bien, en todo caso, se recomienda la visualización previa de la serie original, dado que varios personajes relevantes de la primera serie hacen acto de presencia en esta secuela. Pero esto no es imperativo, puesto que, pese a ser técnicamente una continuación, realmente ambas series se centran en protagonistas y épocas distintas.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Por cierto, si os pica el gusanillo, que sepáis que esta serie se encuentra actualmente disponible para su visualización en streaming a través de la plataforma Crunchyroll. Cabe destacar que &quot;El Mágico Libro de Zero&quot;, en cambio, se encuentra disponible exclusivamente en Jonu Play, donde se ofrece con doblaje al castellano y que, a través de su tienda en línea, puedes comprarla en Blu-ray (&lt;a href=&quot;https://www.jonushop.es/EL-M%C3%81GICO-LIBRO-DE-ZERO-ESTANDARD-EDITION-BD-p564019189&quot;&gt;enlace&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/12/anime-la-edicion-fisica-de-dawn-of.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/2216840595616776443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/2216840595616776443'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/12/anime-la-edicion-fisica-de-dawn-of.html' title='[Anime] La edición física de The Dawn of the Witch'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsYnyietcqkMwHRRQouHn6gCGD0gpVEjO1UJUJQQvCwWz8dAlu9XSdmmZJ5Cvi0T1qD_TYtZkxfCM2ib3XeEH9hfcGxeg9wQFcBlwAiZWdOP4FqWwA5JafUtrPmZbENjYby6NdJ6PzlPsBzIxfSBy_ioZNBmhA8JIdoFS5GigUHhSDDLtMF7wx/s72-w300-h400-c/IMG_9086.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-5960034889137595510</id><published>2025-12-14T22:03:00.007+01:00</published><updated>2025-12-15T20:44:40.951+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="atelier"/><category scheme="http://www.blogger.com/atom/ns#" term="atelier ryza"/><title type='text'>La edición física del Atelier Ryza Secret Trilogy DX de PS4</title><content type='html'>&lt;div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdALK9v460UyJFh21arTU8cl_EA5PfLiU6jRDpsc_Rfv0vnuddeWzeFnNA6Zv-nRDoMa_375O8RLL95xDqesbOIkYgM0dqHBLF1heFuMeM1UafSEvwGNvTah7iARZ2kUQ4j-XUn_poJE9_7agI_RjIgjWi0VPjmLpTHz2E1hQYFt1mZerJ9439/s2048/001.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1536&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdALK9v460UyJFh21arTU8cl_EA5PfLiU6jRDpsc_Rfv0vnuddeWzeFnNA6Zv-nRDoMa_375O8RLL95xDqesbOIkYgM0dqHBLF1heFuMeM1UafSEvwGNvTah7iARZ2kUQ4j-XUn_poJE9_7agI_RjIgjWi0VPjmLpTHz2E1hQYFt1mZerJ9439/w300-h400/001.jpg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA8nRI0NtCZBIglSxcpf1FlKaDgOmbknbGJcUIXnwFsRiEasNGXWcvuiJ_1epALsaj5Q0kb4fnpjpXRKbhwucYpMmGVge3zEh2_eSB8zvPMhqfuB80lk0BMo35RLpuLYHT28AkuY3xYlDakQL7GzsLaWHinRZ229w8LfR5xv0X8ZxTxHaN_7mX/s2048/002.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1536&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA8nRI0NtCZBIglSxcpf1FlKaDgOmbknbGJcUIXnwFsRiEasNGXWcvuiJ_1epALsaj5Q0kb4fnpjpXRKbhwucYpMmGVge3zEh2_eSB8zvPMhqfuB80lk0BMo35RLpuLYHT28AkuY3xYlDakQL7GzsLaWHinRZ229w8LfR5xv0X8ZxTxHaN_7mX/w300-h400/002.jpg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Esta semana he recibido la &quot;Premium Box&quot; del Atelier Ryza Secret Trilogy DX para PlayStation 4, que incluye una versión revisada de los tres juegos de Atelier Ryza junto con todos sus contenidos descargables. Entre las mejoras se encuentran varios episodios adicionales que permiten jugar con Agatha, Romy, Empel y Lila en el primer título, Empel y Lila en la secuela, y Clifford, Serri y Kilo en el tercer juego. Asimismo, se han incorporado nuevos indicadores en pantalla, un modo de &quot;Combate personalizado&quot; que permite seleccionar combinaciones de monstruos y niveles para ajustar la dificultad, un sistema de síntesis renovado para una mayor visualización e intuición y nuevas monturas para facilitar la exploración en Ryza 2 y Ryza 3. Adicionalmente, la versión para PlayStation 5, disponible de forma gratuita mediante la instalación desde la versión de PlayStation 4 utilizando una cuenta japonesa como &lt;i&gt;proxy&lt;/i&gt;, permite disfrutar de los tres títulos a una resolución de 4K y una velocidad de fotogramas de 60fps.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; La razón principal por la cual adquirí esta versión, en lugar de la de PlayStation 5, fue para poder ejecutar la versión nativa de los discos en mi PlayStation 4 e instalar la actualización a PlayStation 5 en mi PlayStation 5.&amp;nbsp; Cabe destacar que, al insertar un juego de PlayStation 4 &quot;actualizable&quot; en una PlayStation 5, el sistema operativo generalmente notifica al usuario y recomienda la instalación de la actualización. Sin embargo, éste no es el caso en las PlayStation 5 europeas, ya que únicamente se ofrece la instalación de la versión de PlayStation 4. Para instalar la actualización es necesario utilizar una cuenta japonesa, la cual se puede crear fácilmente en aproximadamente diez minutos (apenas nos pedirá que aceptemos una serie de eulas, un nuevo email sin registrar y un código de postal japonés valido, sin necesidad de cambiar el idioma de la consola al japonés). Una vez instalada la actualización, se puede volver a la cuenta habitual y jugar a la versión de PlayStation 5 sin ningún inconveniente.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Si esta edición te resulta interesante, te sugiero considerar los siguientes aspectos:&lt;ol&gt;&lt;li&gt;Los archivos de guardado de las versiones originales y de estas versiones DX son incompatibles, por lo que será necesario recomenzar los tres juegos desde cero.&lt;/li&gt;&lt;li&gt;El primer Atelier Ryza no contaba con ninguna actualización para PlayStation 5, pero esta versión sí la incluye.&amp;nbsp; Rejugar al primer juego en su versión de PlayStation 5 es altamente recomendable, ya que la mejora visual es considerable.&amp;nbsp; De hecho, hace unos años adquirí la versión de PlayStation 4 del primer Ryza a pesar de poseer la versión para Nintendo Switch con el fin de disfrutar de una experiencia gráfica superior. El salto visual de PlayStation 4 a PlayStation 5 de esta primera versión me resulta más evidente que el de Nintendo Switch a PlayStation 4.&lt;/li&gt;&lt;li&gt;Al igual que las versiones originales de los Atelier Ryza, estas versiones &quot;revisadas&quot; también incluyen los textos en inglés. No están traducidas al castellano y sólo uno, el Atelier Ryza 2, cuenta con la traducción al francés. En pocas palabras, toca disfrutarlos sí o sí en inglés.&lt;/li&gt;&lt;li&gt;A diferencia de las versiones de PlayStation 5 y Nintendo Switch (que cuentan con una versión taiwanesa con carátulas en inglés), el Atelier Ryza Secret Trilogy DX de PlayStation 4 en formato físico solo está disponible en Japón.&lt;/li&gt;&lt;/ol&gt;&amp;nbsp; &amp;nbsp; En cuanto al contenido físico, esta caja es de gran tamaño (31,5 cm de alto, 23,5 cm de ancho y 4,5 cm de profundidad) e incluye una &lt;i&gt;spinecard&lt;/i&gt; que ocupa aproximadamente un tercio del área.&amp;nbsp; En la fotografía de a continuación, se muestra junto a la versión taiwanesa de esta trilogía para Nintendo Switch y junto a un juego de PlayStation 4, y como se puede apreciar, la &lt;i&gt;spinecard&lt;/i&gt; es casi tan grande como el juego de PlayStation 4.&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnHbIbQ7YlzrhIQ47qv061fn5oRvm6n4w9pkhvVXgTDXWw86cz4k98hYKWLS1xzm2yH0rd7L25OQo7cJAXwPvYRBlGKMw9dn9MslWuOjxLRDmwDZQ9kUkMb5VJFVl7HyxDVSipAkpjhUnxs3Mm7sKE0HAxdijwxB-PsiFKvW6rdIl5Hmfv_Fs1/s2048/003.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1980&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnHbIbQ7YlzrhIQ47qv061fn5oRvm6n4w9pkhvVXgTDXWw86cz4k98hYKWLS1xzm2yH0rd7L25OQo7cJAXwPvYRBlGKMw9dn9MslWuOjxLRDmwDZQ9kUkMb5VJFVl7HyxDVSipAkpjhUnxs3Mm7sKE0HAxdijwxB-PsiFKvW6rdIl5Hmfv_Fs1/w618-h640/003.jpg&quot; width=&quot;618&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; El embalaje del producto se presenta con un precinto genérico que carece de cualquier sello de autenticidad, lo cual representa un riesgo potencial para las reventas por internet.&amp;nbsp; Cabe destacar que mi unidad presentaba un ligero desperfecto en la parte inferior, aunque la caja puede abrirse con facilidad y es poco probable que se produzcan daños significativos por abrirlos mucho. Esto contrasta con la edición taiwanesa (en mi caso de la consola Switch), donde los juegos se encuentran embutidos, requiriendo una presión considerable para su extracción (tienes que meter los dedos dentro y sacarlos a la fuerza).&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Al abrir el embalaje, se observa en primer lugar una franela de gran tamaño, promocionada como &quot;póster de tela&quot;, acompañada de un código de descarga un ASRM de Ryza (miedo me da descargar eso), un libro ilustrado de pistas y un disco físico que contiene la banda sonora de los tres juegos.&amp;nbsp; Todos los elementos se encuentran cuidadosamente empaquetados.&amp;nbsp; Adicionalmente, la calidad de impresión de la franela es notablemente alta y dan ganas de usarla, por ejemplo, para cubrir el teclado del ordenador.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyAa2aQFQIDCLnAovn6b4jG5_OF6LqhmW-NWFtINpEwCnpuItu7NkKPNLUuDU5apwD4ngyv9CustOrYkMyrak0npsquZH8eH32F9TA3hNaKqoNZ5B08VMZjV0oZsQHzo57L-G_7fLxHcVByaXtWPWyEHfERvmZ1S_JL_cgKXFrLPc2sbPL6ewR/s2048/004.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1536&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyAa2aQFQIDCLnAovn6b4jG5_OF6LqhmW-NWFtINpEwCnpuItu7NkKPNLUuDU5apwD4ngyv9CustOrYkMyrak0npsquZH8eH32F9TA3hNaKqoNZ5B08VMZjV0oZsQHzo57L-G_7fLxHcVByaXtWPWyEHfERvmZ1S_JL_cgKXFrLPc2sbPL6ewR/w480-h640/004.jpg&quot; width=&quot;480&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDp6IQ4lNpGGXAw3ghU-KbDA-_pptcWqQOz06pmcBOnqhCyGUDD5x_JJgetgZawp7UnYmMlXfrKAy9_gCUekXzWMpTeh0sQ9QYPiSZ2i-j1Xr3N8-S0o4vMpjEL3BI_aCk52Dw6h93qLPM9L2SLe_22lmt45F5UtP_3MxSVre_IuHiAqiM266B/w480-h640/IMG_9055.jpeg&quot; width=&quot;480&quot; /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZUZ44A6QZ4rLvaPVl73HAx8-HsIxQgdxCvfLbjaIPzpMUoVf98Gu2wUFpYQLpdRHiUTvW1PXihG2fwxkrqkYhhKrci9FqM-MircGCxlemqDgKBbZqFegRte4-OR2CzGHY3h6RU3NrayRrk3nXQ2rWztHPGK1TU_xyKsnVIUwZ47WhDkNYOJ0s/s2048/005.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2048&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZUZ44A6QZ4rLvaPVl73HAx8-HsIxQgdxCvfLbjaIPzpMUoVf98Gu2wUFpYQLpdRHiUTvW1PXihG2fwxkrqkYhhKrci9FqM-MircGCxlemqDgKBbZqFegRte4-OR2CzGHY3h6RU3NrayRrk3nXQ2rWztHPGK1TU_xyKsnVIUwZ47WhDkNYOJ0s/w640-h480/005.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1536&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIW5h0Gy1z_xa2IJBXC97TIA6A1T2SylcSDWYQ41Rxitwq8iSpumCsZKj6KBf0BQOk9fEhQrSWOnFXvUNZ85E84cjUAbeOuhaiUj7wnLb89L91-XF9DEl_1V_yvF-4OOV45WHEIcNac4K8NAULKDSkOxQtuaJJGpD6vkNV2RNPJAHJzZ7Ry2kA/w480-h640/006.jpg&quot; width=&quot;480&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6jgsY2VU5y1ZiinVuYfm7wWr-yOwvHp2tMu-RKnGWtqXz6_gSNEiGRBmkmOImYA4Z1QwhymfU3DoYM5vrCRgWF1XSqZzedxQKBDnnjm3qeVrdbCLlISzc45diUjSiVJpbRpQfTV8H2pK7m1XWe4j4opqljD-wBlcB1YMC8xKp8mAqAsJ38JC1/s4032/IMG_9058.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6jgsY2VU5y1ZiinVuYfm7wWr-yOwvHp2tMu-RKnGWtqXz6_gSNEiGRBmkmOImYA4Z1QwhymfU3DoYM5vrCRgWF1XSqZzedxQKBDnnjm3qeVrdbCLlISzc45diUjSiVJpbRpQfTV8H2pK7m1XWe4j4opqljD-wBlcB1YMC8xKp8mAqAsJ38JC1/w640-h480/IMG_9058.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxvICM_1E9h2BjidZKCeIIVk3_9UfpL5Bux6COkhpjbd6u9cM56ioCSXbj23jTrjOKJTtDct3J1UQjd-q9JGkqpR6lv5noJNM_RfN0Q-kH93CS16qqj6bdMChdH0rWEXyy5vN19OVHuZy6QdJjO90SXJFCp4M5Eo5WsN30R0QQXJ7wFxQ-2vlj/s2048/007.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2048&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxvICM_1E9h2BjidZKCeIIVk3_9UfpL5Bux6COkhpjbd6u9cM56ioCSXbj23jTrjOKJTtDct3J1UQjd-q9JGkqpR6lv5noJNM_RfN0Q-kH93CS16qqj6bdMChdH0rWEXyy5vN19OVHuZy6QdJjO90SXJFCp4M5Eo5WsN30R0QQXJ7wFxQ-2vlj/w640-h480/007.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2jDEx10Yn229vfYP4g3lDE-mH0VX8F4d7BDPWsHkpjRXGfZjZs1QfKiB1Z2QU_5ipoCLJ3NhPtly3M9JDy0_kecipAYUXqShVSwlHsiqlCtZXy74NA0qntV5lGJDxQC-PdUiZ7S9F-10Zobw5c2Qni6mrbiY75-2cmXQPvNJPPc3qKcVlecYe/s4032/IMG_9060.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2jDEx10Yn229vfYP4g3lDE-mH0VX8F4d7BDPWsHkpjRXGfZjZs1QfKiB1Z2QU_5ipoCLJ3NhPtly3M9JDy0_kecipAYUXqShVSwlHsiqlCtZXy74NA0qntV5lGJDxQC-PdUiZ7S9F-10Zobw5c2Qni6mrbiY75-2cmXQPvNJPPc3qKcVlecYe/w640-h480/IMG_9060.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkJRrUEkSXukHGXEryl9gso45Mm78-NyO70iANJ1dxnLgLYRff87Bcz-P2rf91LGDnESlO2ywKPmj965bKqGJ9icQVzeHz219aXt3YweB8fvx63BVDExpN0zLcTQHP1MAZPByflyvjO5zOAL0AeR9etHeRU2mC_DeCIRKRkx2vmWnDD5BkmrrL/s1920/ps4-premium-box_1920x1566.webp&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1566&quot; data-original-width=&quot;1920&quot; height=&quot;522&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkJRrUEkSXukHGXEryl9gso45Mm78-NyO70iANJ1dxnLgLYRff87Bcz-P2rf91LGDnESlO2ywKPmj965bKqGJ9icQVzeHz219aXt3YweB8fvx63BVDExpN0zLcTQHP1MAZPByflyvjO5zOAL0AeR9etHeRU2mC_DeCIRKRkx2vmWnDD5BkmrrL/w640-h522/ps4-premium-box_1920x1566.webp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; El empaquetado es de alta calidad y la cantidad de material proporcionado es considerable, lo que sin duda satisfará a los aficionados a la saga. Sin embargo, se observa una notable omisión en el diseño de las carátulas, que carecen de ilustraciones interiores, a diferencia de lo que ocurría con los Ryza 2 y 3 originales.&amp;nbsp; Esta ausencia representa el único aspecto que impide que esta reedición alcance la perfección.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtYYE9IcuGN7kFNuUFHQ0ip5BTiOXLlXwQmXd9tKpVrHH-1cmL5E6SmBYuPGozRKyZoSIFNUWA04O3FxwXsf2Np4f9z5vK5wZCTYHZ8DHp_cRnFQDEzdwphzN1wqvqpVyQZwwoIu3p0921XNSyh53b845fvVXdpk_IKe0hAT7Bsdgx35s61otu/s2048/010.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1536&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtYYE9IcuGN7kFNuUFHQ0ip5BTiOXLlXwQmXd9tKpVrHH-1cmL5E6SmBYuPGozRKyZoSIFNUWA04O3FxwXsf2Np4f9z5vK5wZCTYHZ8DHp_cRnFQDEzdwphzN1wqvqpVyQZwwoIu3p0921XNSyh53b845fvVXdpk_IKe0hAT7Bsdgx35s61otu/w300-h400/010.jpg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBPODg6YuC7KzbuggqJvE1MEsAZ0L_kBNr7ppS-FpGs8JULVUALmI_zqKSWkcaRhfUmWlUSXXqtXmzzrPxSHr_-BXcuchfD3zb_CP4M1J42oa41D9HXji7PaSNYUmmyWujfpIjkmy4m0eE6x2OfTSgCGHOfgxYKlbgHHzW7siy50jiT_aHNq91/s2048/011.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1536&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBPODg6YuC7KzbuggqJvE1MEsAZ0L_kBNr7ppS-FpGs8JULVUALmI_zqKSWkcaRhfUmWlUSXXqtXmzzrPxSHr_-BXcuchfD3zb_CP4M1J42oa41D9HXji7PaSNYUmmyWujfpIjkmy4m0eE6x2OfTSgCGHOfgxYKlbgHHzW7siy50jiT_aHNq91/w300-h400/011.jpg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;En cuanto a las portadas de estas versiones DX, si bien son visualmente atractivas, resulta notable que presenten una paleta cromática más desaturada (menos vibrante) en comparación con las versiones originales. En términos simples, se utilizan colores más &quot;lavados&quot; y menos cálidos.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHo3bRQYOakAwGdczMAu77Xc0l3NiIeKLO05zY7ItZNnnFQ1Sc2PYv35SW9m9RRT0NR85TdkLaT4CCMi2vdVGJH0u9rpHCLctaYjylB0jAIDaQsgcc-uPAd334q2GwNIyD3wolm-356Er13TG8cqWG0ApMXFtGSbzacfFEi0Cz_TcjwQdU53Im/s2048/008.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2048&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHo3bRQYOakAwGdczMAu77Xc0l3NiIeKLO05zY7ItZNnnFQ1Sc2PYv35SW9m9RRT0NR85TdkLaT4CCMi2vdVGJH0u9rpHCLctaYjylB0jAIDaQsgcc-uPAd334q2GwNIyD3wolm-356Er13TG8cqWG0ApMXFtGSbzacfFEi0Cz_TcjwQdU53Im/w640-h480/008.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirVmizYycvENpJA3c1s00Ux8R4Pb8fESO-P5MvQHFvb7zlJbibWAVWvFUWP-lJn1TTX-WmU2N5gWh5_Sx0dxHcs87yqXLz3sU3dHqDIh9q3ZP9XseuNfrI8XwSoeGeMar8axrvJzKQvkDrtI5LEsrJxKjZY1h1K_EkOMOOXVlOwbxo_uKcmNYC/s2048/009.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2048&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirVmizYycvENpJA3c1s00Ux8R4Pb8fESO-P5MvQHFvb7zlJbibWAVWvFUWP-lJn1TTX-WmU2N5gWh5_Sx0dxHcs87yqXLz3sU3dHqDIh9q3ZP9XseuNfrI8XwSoeGeMar8axrvJzKQvkDrtI5LEsrJxKjZY1h1K_EkOMOOXVlOwbxo_uKcmNYC/w640-h480/009.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; El precio de este pack en Japón asciende a aproximadamente 18.200 yenes, equivalentes a día de hoy a unos 102 euros.&amp;nbsp; A este importe se deben añadir unos 27 euros adicionales por concepto de transporte y aduanas. Por lo tanto, el coste total de adquisición y envío de esta versión a España es de aproximadamente 129 euros. Que conste que esto no lo comento por fardar, si no para que andéis con ojo con los especuladores que hay por internet.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Nombre japonés: ライザのアトリエ ～秘密トリロジー～ DX プレミアムボックス.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Fecha de lanzamiento: 13/11/2025.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Código de barras: 4988615211119.&lt;/div&gt;&lt;/div&gt;&amp;nbsp;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/12/la-edicion-fisica-del-atelier-ryza.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/5960034889137595510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/5960034889137595510'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/12/la-edicion-fisica-del-atelier-ryza.html' title='La edición física del Atelier Ryza Secret Trilogy DX de PS4'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdALK9v460UyJFh21arTU8cl_EA5PfLiU6jRDpsc_Rfv0vnuddeWzeFnNA6Zv-nRDoMa_375O8RLL95xDqesbOIkYgM0dqHBLF1heFuMeM1UafSEvwGNvTah7iARZ2kUQ4j-XUn_poJE9_7agI_RjIgjWi0VPjmLpTHz2E1hQYFt1mZerJ9439/s72-w300-h400-c/001.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-3426767811613159616</id><published>2025-12-08T17:38:00.004+01:00</published><updated>2025-12-08T17:41:24.899+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="devir"/><category scheme="http://www.blogger.com/atom/ns#" term="manga"/><category scheme="http://www.blogger.com/atom/ns#" term="tanya"/><category scheme="http://www.blogger.com/atom/ns#" term="tanya degurechaff"/><title type='text'>El manga &quot;Diario de Guerra: Saga of Tanya The Evil&quot; vuelve a España</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkq8nIvApZ7pyCaUXIUB17iAlLi42kc8Y2ivtN4FFzFQDRBIDhstReH-lV4AIK1pGsl2ui1aH3hSKRCxCm-P4GhdtRDSxQMHrFG5L_gcvxP4Rokm1tPGc0UJV_VvcMUrxIRCkW65SMu-KKyWsOcSgrc5leCUMyjPG79vAFrwf5WRJAKbVqYjiO/s1440/G7qHHwjXUAET2g5.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1440&quot; data-original-width=&quot;1080&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkq8nIvApZ7pyCaUXIUB17iAlLi42kc8Y2ivtN4FFzFQDRBIDhstReH-lV4AIK1pGsl2ui1aH3hSKRCxCm-P4GhdtRDSxQMHrFG5L_gcvxP4Rokm1tPGc0UJV_VvcMUrxIRCkW65SMu-KKyWsOcSgrc5leCUMyjPG79vAFrwf5WRJAKbVqYjiO/w480-h640/G7qHHwjXUAET2g5.jpg&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Hace varios meses, la división editorial de manga de Devir anunció su expansión en el mercado español, destacando la adquisición de la licencia de &quot;Los Diarios de la Boticaria&quot;.&amp;nbsp; Esta decisión ha suscitado críticas debido a deficiencias en los controles de calidad, tales como la presencia de patrones de moiré en las impresiones (&lt;a href=&quot;https://x.com/NosMANGAn_ES/status/1991855201985417299&quot;&gt;enlace&lt;/a&gt;) y la omisión de un globo en el tomo 9 (&lt;a href=&quot;https://x.com/DevirManga_SP/status/1995780678357541122&quot;&gt;enlace&lt;/a&gt;).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En el marco del Salón del Manga de Barcelona, Devir ha revelado la adquisición de nuevas licencias, entre las que se encuentra &quot;Diario de Guerra: Saga of Tanya The Evil&quot;, anteriormente distribuida por la difunta ECC. Por ahora Devir ha confirmado la reanudación de la serie a partir del número 21, sin especificar si se procederá a la reimpresión de los tomos anteriores. Esta posibilidad sería especialmente relevante, dado que tomos como el 4 presentan una alta demanda y son imposibles de encontrar incluso de segunda mano.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1998060902780981728&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;script async=&quot;&quot; charset=&quot;utf-8&quot; src=&quot;https://platform.twitter.com/widgets.js&quot;&gt;&lt;/script&gt;
</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/12/el-manga-diario-de-guerra-saga-of-tanya.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/3426767811613159616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/3426767811613159616'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/12/el-manga-diario-de-guerra-saga-of-tanya.html' title='El manga &quot;Diario de Guerra: Saga of Tanya The Evil&quot; vuelve a España'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkq8nIvApZ7pyCaUXIUB17iAlLi42kc8Y2ivtN4FFzFQDRBIDhstReH-lV4AIK1pGsl2ui1aH3hSKRCxCm-P4GhdtRDSxQMHrFG5L_gcvxP4Rokm1tPGc0UJV_VvcMUrxIRCkW65SMu-KKyWsOcSgrc5leCUMyjPG79vAFrwf5WRJAKbVqYjiO/s72-w480-h640-c/G7qHHwjXUAET2g5.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-7292048453612069115</id><published>2025-12-06T11:28:00.001+01:00</published><updated>2025-12-06T16:17:13.994+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dreamcast"/><category scheme="http://www.blogger.com/atom/ns#" term="lylatwars"/><category scheme="http://www.blogger.com/atom/ns#" term="n64"/><category scheme="http://www.blogger.com/atom/ns#" term="starfox"/><category scheme="http://www.blogger.com/atom/ns#" term="Videojuegos"/><title type='text'>Decompilan y portan Lylat Wars (Star Fox 64) a Sega Dreamcast</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;El canal de Youtube &quot;The Sega Guru&quot; acaba de subir un video donde muestra un port plénamente funcional del Lylat Wars (conocido fuera de Europa como Star Fox 64) funcionando en una Sega Dreamcast. El port en cuestión ha sido elaborado por el usuario jnmartin84 de GitHub (&lt;a href=&quot;https://github.com/jnmartin84/sf64-dc?tab=readme-ov-file&quot;&gt;enlace&lt;/a&gt;) y se trata de una versión modificada del proyecto &quot;sf64&quot;, que a su vez es un proyecto que decompila la rom americana de Nintendo 64 (&lt;a href=&quot;https://github.com/sonicdcer/sf64&quot;&gt;enlace&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/njYPiAJXfqY&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/12/decompilan-y-portean-lylat-wars-star.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/7292048453612069115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/7292048453612069115'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/12/decompilan-y-portean-lylat-wars-star.html' title='Decompilan y portan Lylat Wars (Star Fox 64) a Sega Dreamcast'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/njYPiAJXfqY/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-6383825361445006833</id><published>2025-11-30T21:27:00.012+01:00</published><updated>2025-12-02T10:24:39.532+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="devblog"/><category scheme="http://www.blogger.com/atom/ns#" term="proyecto isekai"/><title type='text'>[Dev-Blog] [Proyecto Isekai] [#15] Segundo sprint</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEoyp-of3nogw-FGmOfFpaFVwvhFLchbqlbQK6iJE3LF-R2gpBs2amc9hQBVprUEcRJte_aVCZNIdeAaaq_cmT7A43u0Bb9ZYN5ti3pYDakztydnUHO7IgCbpF7_HEsep04DvdkqaoATs_NZo7pINnrWcV7qNuHx5hZG4-ge_LsE38jdiQXNpX/s3358/Captura%20de%20pantalla%202025-11-30%20a%20las%2021.30.10.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1960&quot; data-original-width=&quot;3358&quot; height=&quot;374&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEoyp-of3nogw-FGmOfFpaFVwvhFLchbqlbQK6iJE3LF-R2gpBs2amc9hQBVprUEcRJte_aVCZNIdeAaaq_cmT7A43u0Bb9ZYN5ti3pYDakztydnUHO7IgCbpF7_HEsep04DvdkqaoATs_NZo7pINnrWcV7qNuHx5hZG4-ge_LsE38jdiQXNpX/w640-h374/Captura%20de%20pantalla%202025-11-30%20a%20las%2021.30.10.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Han transcurrido treinta días desde la última actualización que compartí con respecto al proyecto &quot;Isekai&quot; y me complace presentarles los avances realizados desde entonces. Como mencioné en la entrada anterior (&lt;a href=&quot;https://www.elgeneralfailure.com/2025/11/dev-blog-proyecto-isekai-14.html&quot;&gt;https://www.elgeneralfailure.com/2025/11/dev-blog-proyecto-isekai-14.html&lt;/a&gt;), tomé la decisión de reiniciar el proyecto desde cero tras jugar al &lt;i&gt;Seven Pirates H&lt;/i&gt; de &lt;i&gt;Nintendo Switch.&lt;/i&gt;&amp;nbsp; La simplicidad y efectividad dicho juego me inspiraron a desarrollar un prototipo utilizando &lt;i&gt;Godot&lt;/i&gt;.&amp;nbsp; Y tras un mes este prototipo permitía ya tener a un personaje que se podía desplazar por un entorno tridimensional, escalar muros, volar, gestionar un sistema de grupo, acceder al interior de viviendas, hablar con NPC e incluso interactuar con un mecanismo básico de tiendas.&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A principios de noviembre comencé con la implementación de la pantalla de &quot;Pulsa Start&quot;.&amp;nbsp; Para ello posicioné a Greta, la protagonista del juego, en una celda (actualmente obtenida de Sketchfab, aunque la intención es que finalmente se utilice un escenario modelado por mi: &lt;a href=&quot;https://sketchfab.com/3d-models/dp3-hw9-prison-room-9d2f42db20814a02a87ad4cc5e031698&quot;&gt;https://sketchfab.com/3d-models/dp3-hw9-prison-room-9d2f42db20814a02a87ad4cc5e031698&lt;/a&gt;) y le incorporé diversos detalles.&amp;nbsp; Por ejemplo, en el menú de opciones, el usuario tiene la posibilidad de activar o desactivar funcionalidades como el &quot;modo gore&quot; (para la visualización de sangre) o el &quot;modo adulto&quot; (que afecta a las físicas de rebote de busto o a la necesidad de realizar trámites administrativos, tales como el pago del IRPF, el IVA, multas o la tasa de autónomos).&amp;nbsp; Sí, el &quot;modo adulto&quot; busca ser una parodia del modo adulto. Cada vez que se activa o desactiva una de estas opciones, además de generar un mensaje emergente de advertencia, la textura de Greta se modifica en tiempo real, por ejemplo, permitiendo visualizarla magullada y ensangrentada al activar el &quot;modo gore&quot;.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Como se mencionó en entradas anteriores, Greta, la protagonista, es una viajera espacial que sufre un accidente en un planeta habitado por una civilización medieval y,&amp;nbsp; por circunstancias fortuitas, se convierte en prisionera.&amp;nbsp; Con el fin de enfatizar la naturaleza fantástica de la aventura, en la que el jugador se enfrentará con figuras políticas, monarcas e incluso deidades, generé una canción haciendo uso Suno que hiciera énfasis en dichos puntos.&amp;nbsp; Además, implementé que se visualizara la letra de la canción a modo de karaoke, permitiendo a los jugadores seguir la interpretación vocal.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1985129267601244481&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Como siempre, deseo recordar que el uso de arte generativo se limita a fines de placeholding.&amp;nbsp; Una vez que se haya determinado la viabilidad del proyecto, procederé a la contratación de artistas profesionales.&amp;nbsp; No deseo la presencia de contenido generado por IA en el producto final. Otro detalle que no he mencionado, pero que se aprecia en el tweet, es que en dicha pantalla podemos mover el ratón para girar la cámara, además de que la iluminación tiene cierto efecto de inestabilidad para simular ser una antorcha.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp;Durante los días siguientes, me dediqué a la modularización de los personajes, con el objetivo de que todos utilicen el mismo esqueleto y las mismas animaciones, permitiendo, al mismo tiempo, la modificación de sus proporciones.&amp;nbsp; En este proceso, también desarrollé un editor de personajes.&amp;nbsp; En su estado actual, este editor ofrece funcionalidades limitadas, como la posibilidad de cambiar el aspecto del personaje, la cabeza, las proporciones del esqueleto y la textura del cuerpo, aunque no su vestimenta.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1987285253946269815&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp;Asimismo, también desarrollé un sistema cíclico de día y noche, que incorpora la generación procedural de elementos celestes como el sol, las nubes, la luna y las estrellas.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1987998253548527644&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1989853759409725815&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp;Y también trabajé en minuciosos detalles, tales como la implementación de la mecánica de que los personajes mantengan contacto visual al encontrarse en proximidad:&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1989118594530042004&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp;Asimismo, también implementé un sistema de simulación de físicas de rebote para el busto y una nueva interfaz de configuración gráfica, que permite la activación o desactivación de opciones como el SSR, SSO y SDFGI. Para el tema de las físicas de rebote, cabe destacar que normalmente los juegos hacen uso de plugins de spring-bones para simular su movimiento, pero decidí pasar de ellos e implementar mi propio sistema de spring-bones desde cero (con código en C# puro y duro).&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1990160211974459745&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1990927947742798095&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; De hecho, jugar con las configuraciones gráficas me generó un punto de inflexión significativo, ya que la incapacidad de mi ordenador para ejecutar el juego en Ultra me impulsó a empezar a trabajar en optimizaciones. Y entre las primeras acciones implementadas incluí la aplicación de distintos niveles de detalle para los modelos, comúnmente conocidos como &quot;LOD&quot;.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1991621588442313201&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Al concluir el mes, llevé a cabo dos mejoras significativas. En primer lugar, tras observar un atardecer un día durante mi trayecto de regreso a casa, me decidí a retocar la iluminación ambiental y el sistema de nubes con el objetivo de lograr una mayor realismo visual. Vamos, que hice las nubes aún más bonitas. En segundo lugar, realicé la adaptación de los controles para permitir la compatibilidad con mandos de consola. Si bien esta tarea pueda parecer trivial, representa un desafío considerable lograr una integración fluida y natural entre el teclado y el gamepad.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1993079397222613447&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Y estos son los avances que puedo presentar hasta el momento. ¿Y ahora qué? Pues he mostrado el juego a varios compañeros de trabajo, quienes me han señalado que el juego presenta un nivel elevado de sexualización, principalmente debido a las proporciones de los personajes y a la ausencia de un sistema de vestimenta funcional. En consecuencia, he decidido priorizar el desarrollo del sistema de vestimenta en el próximo sprint, así como la implementación de personajes masculinos. Estas tareas ya estaban contempladas en mi planificación, pero su priorización es crucial para evitar que se formen percepciones erróneas sobre la visión final del juego. Adicionalmente, si el tiempo lo permite, me propongo iniciar la implementación del sistema de misiones, el sistema de diálogos y el sistema de combate por turnos.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; En cuanto a las estadísticas del proyecto, tras dos meses de desarrollo, se han alcanzado las siguientes cifras: 38.331 líneas de código, 675 pruebas unitarias automatizadas y cero issues remontados por SonarQube.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;script async=&quot;&quot; charset=&quot;utf-8&quot; src=&quot;https://platform.twitter.com/widgets.js&quot;&gt;&lt;/script&gt;
</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/11/dev-blog-proyecto-isekai-15-segundo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/6383825361445006833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/6383825361445006833'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/11/dev-blog-proyecto-isekai-15-segundo.html' title='[Dev-Blog] [Proyecto Isekai] [#15] Segundo sprint'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEoyp-of3nogw-FGmOfFpaFVwvhFLchbqlbQK6iJE3LF-R2gpBs2amc9hQBVprUEcRJte_aVCZNIdeAaaq_cmT7A43u0Bb9ZYN5ti3pYDakztydnUHO7IgCbpF7_HEsep04DvdkqaoATs_NZo7pINnrWcV7qNuHx5hZG4-ge_LsE38jdiQXNpX/s72-w640-h374-c/Captura%20de%20pantalla%202025-11-30%20a%20las%2021.30.10.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-4311170276361379569</id><published>2025-11-23T14:23:00.004+01:00</published><updated>2025-12-06T16:17:27.743+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="n64"/><category scheme="http://www.blogger.com/atom/ns#" term="psx"/><category scheme="http://www.blogger.com/atom/ns#" term="Super Mario 64"/><title type='text'>Decompilan y portan Super Mario 64 a PS1</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Video Game Esoterica ha publicado un video que muestra un port del Super Mario 64 funcionando en la primera PlayStation. Este port ha sido desarrollado por el usuario brasileño Malucard y presenta numerosos errores gráficos, problemas con la cámara y fallos en los controles, como la imposibilidad de agarrar a Bowser por la cola cuando nos enfrentamos a él.&amp;nbsp; A pesar de estos inconvenientes, el hecho de que el juego se ejecute y se pueda observar a Mario en movimiento constituye un logro significativo.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Cabe destacar que Malucard no ha desarrollado este port desde cero, sino que se basa en un fork del proyecto de GitHub &quot;Super Mario 64 Port&quot;, reconocido por haber adaptado el juego a sistemas operativos contemporáneos como Windows y Linux.&amp;nbsp; Y éste último, a su vez, deriva del proyecto de GitHub &quot;SM64&quot;, que contiene una versión decompilada del Super Mario 64 original.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/6f92hKbz5Eo&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/11/decompilan-y-portean-super-mario-64-ps1.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4311170276361379569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4311170276361379569'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/11/decompilan-y-portean-super-mario-64-ps1.html' title='Decompilan y portan Super Mario 64 a PS1'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/6f92hKbz5Eo/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-4869302836478183894</id><published>2025-11-18T19:00:00.026+01:00</published><updated>2025-11-18T19:00:00.139+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="analogue"/><category scheme="http://www.blogger.com/atom/ns#" term="analogue3d"/><category scheme="http://www.blogger.com/atom/ns#" term="n64"/><category scheme="http://www.blogger.com/atom/ns#" term="Videojuegos"/><title type='text'>[ENG] Rerez, Modern Vintage Gamer, My Life in Gaming y MetalJesusRocks analizan la Analogue 3D, la consola de Analogue que emula N64 por FPGA</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Desde las 18:00 horas de hoy, todos los creadores de contenido de habla inglesa especializados en videojuegos retro han empezado a publicar sus reseñas de la Analogue 3D, la consola de Analogue que emula la Nintendo 64 mediante FPGA.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/Bx3NLt_kBto&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/4rUF8vkL6_U&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/wyIDr_PDIbI&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/UkFXhFJT8Aw&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/11/eng-rerez-modern-vintage-gamer-my-life.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4869302836478183894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4869302836478183894'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/11/eng-rerez-modern-vintage-gamer-my-life.html' title='[ENG] Rerez, Modern Vintage Gamer, My Life in Gaming y MetalJesusRocks analizan la Analogue 3D, la consola de Analogue que emula N64 por FPGA'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Bx3NLt_kBto/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-2855569458063434788</id><published>2025-11-04T20:00:00.090+01:00</published><updated>2025-11-25T09:36:34.763+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pc"/><category scheme="http://www.blogger.com/atom/ns#" term="xbox"/><title type='text'>[ENG] Microsoft bloquea el uso compartido familiar no oficial en PC Game Pass, impidiendo el acceso a saves en la nube para usuarios secundarios</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Inside Games ha publicado un video en el que se afirma que Xbox ha desactivado la funcionalidad de uso compartido en familia de PC Game Pass, impidiendo el acceso a los datos de las partidas guardadas en la nube para las cuentas que no suscriben el servicio.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Cabe destacar que, si bien hasta la fecha el uso compartido de Xbox PC Game Pass ha sido posible de manera no oficial dentro del núcleo familiar (permitiendo a múltiples usuarios acceder al servicio en un único ordenador con una sola suscripción mediante workarounds como iniciar sesión en la Microsoft Store con la cuenta suscriptora y en la app de Xbox con cuentas secundarias), Microsoft nunca ha reconocido oficialmente esta funcionalidad para PC, limitándola a consolas a través de la opción &quot;Xbox Principal&quot;.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Según indica Inside Games, los cambios no anunciados en el PC Game Pass han causado problemas en la sincronización en la nube para usuarios secundarios que no son los suscriptores principales, incluyendo fallos en el acceso a servicios en línea y guardados en la nube. Esta situación puede impedir la descarga o sincronización adecuada de partidas guardadas, lo que conlleva, en casos como reinstalar un juego, la creación de un nuevo archivo de partida local considerado como &quot;más reciente&quot; que el almacenado en la nube, resultando en la pérdida de los &quot;saves&quot; más avanzados.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/bqhTIw9Uopw&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/11/eng-microsoft-bloquea-el-uso-compartido.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/2855569458063434788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/2855569458063434788'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/11/eng-microsoft-bloquea-el-uso-compartido.html' title='[ENG] Microsoft bloquea el uso compartido familiar no oficial en PC Game Pass, impidiendo el acceso a saves en la nube para usuarios secundarios'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/bqhTIw9Uopw/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-5606765014002480172</id><published>2025-11-02T13:54:00.008+01:00</published><updated>2025-11-02T14:22:34.394+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="devblog"/><category scheme="http://www.blogger.com/atom/ns#" term="proyecto isekai"/><title type='text'>[Dev-Blog] [Proyecto Isekai] [#14] Transformación del proyecto</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Han transcurrido casi un año desde mi última comunicación sobre este proyecto y me complace presentarles los avances realizados durante el último mes.&amp;nbsp; En primer lugar, debo informarles que el proyecto ha experimentado un reinicio, priorizando el desarrollo de la versión para PC. ¿Implica esto el abandono de mi intención de desarrollar un juego para Game Boy?&amp;nbsp; Pues digamos que la posibilidad de llevar a cabo este proyecto aún no ha sido descartada, pero, en este momento, considero prioritario concentrar mis esfuerzos en el desarrollo de la versión para PC.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Para proporcionar un contexto adecuado, el proyecto se encontraba estancado durante un período prolongado y, a finales de septiembre, durante una semana de vacaciones, decidí volver a jugar al Seven Pirates H para Nintendo Switch.&amp;nbsp; Si bien ese juego es bastante mediocre, posee mecánicas de juego simples y efectivas que me interesaba implementar: un jugador en un mapa tridimensional que puede desplazarse, saltar, interactuar con enemigos para iniciar combates, abrir cofres y utilizar a Otton, una foca rosa de aspecto peculiar, para escalar paredes o cruzar estanques. Consideré que desarrollar un motor que simulara estas mecánicas en Godot no presentaría una dificultad significativa, y con esta premisa, procedí a su implementación. La elección de Godot se debe a que, en el marco del programa de voluntariado de mi empresa, estoy colaborando en el desarrollo de un juego para una ONG. Dadas las restricciones de licencias en motores como Unity o Unreal, Godot se presenta como el entorno de desarrollo integrado (IDE) más seguro desde el punto de vista de evitar sorpresas a nivel monetario (sólo faltaría que hiciera un juego gratis y acabara siendo despedido), lo que me ha permitido adquirir una sólida familiaridad con su uso.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Mi objetivo inicial consistía en adquirir assets rápidamente, desarrollar una habitación de pruebas donde probar las mecánicas y evaluar el alcance potencial del proyecto.&amp;nbsp; Prefiero no utilizar assets de terceros ni recurrir a soluciones de inteligencia artificial como Meshy AI. Sin embargo, he hecho uso de ellos con la idea de que sean &lt;i&gt;placeholders&lt;/i&gt; para la fase de prototipado y, una vez que el motor del juego se encuentre funcional, procederé a la creación de mis propios assets.&amp;nbsp; Para contextualizar, la creación de un personaje atractivo en Blender suele llevarme unas dos semanas (&lt;a href=&quot;https://sketchfab.com/3d-models/nazuna-from-backstabbed-in-a-backwater-dungeon-855b836348714abaa321d4638f2358db&quot;&gt;aquí un ejemplo&lt;/a&gt;&amp;nbsp;y &lt;a href=&quot;https://sketchfab.com/3d-models/tanya-degurechaff-from-saga-of-tanya-the-evil-fb725e63784d4839928aa8ea6fe28e56&quot;&gt;aquí otro&lt;/a&gt;), mientras que con Meshy AI puedo tener un personaje funcional, con esqueleto, texturas y animaciones, en aproximadamente una hora, aunque con un número excesivo de vértices y las animaciones parezcan ortopédicas.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Para ela sala de pruebas empleé el mapa &quot;Sealos Island Town - Map Remake&quot; de Uradamus y como personaje le pasé a Meshy AI una figura de Good Smile Company de Rimuru vestida de conejita (&lt;a href=&quot;https://www.amazon.es/FREEing-Reincarnated-Rimuru-Figure-Version/dp/B0B5ZXGWR7&quot;&gt;enlace&lt;/a&gt;). Con esos dos recursos y varios scripts simples de Godot, ese mismo día logré que Rimuru se desplazara por el escenario e implementé un sistema básico de colisiones con muros.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;sketchfab-embed-wrapper&quot;&gt; &lt;iframe allow=&quot;autoplay; fullscreen; xr-spatial-tracking&quot; allowfullscreen=&quot;&quot; execution-while-not-rendered=&quot;&quot; execution-while-out-of-viewport=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; mozallowfullscreen=&quot;true&quot; src=&quot;https://sketchfab.com/models/f785aeb50aa745b9a475c3895333d7b9/embed&quot; title=&quot;Sealos Island Town - Map Remake&quot; web-share=&quot;&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;842&quot; xr-spatial-tracking=&quot;&quot;&gt; &lt;/iframe&gt; &lt;p style=&quot;color: #4a4a4a; font-size: 13px; font-weight: normal; margin: 5px;&quot;&gt; &lt;a href=&quot;https://sketchfab.com/3d-models/sealos-island-town-map-remake-f785aeb50aa745b9a475c3895333d7b9?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=f785aeb50aa745b9a475c3895333d7b9&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt; Sealos Island Town - Map Remake &lt;/a&gt; by &lt;a href=&quot;https://sketchfab.com/uradamus?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=f785aeb50aa745b9a475c3895333d7b9&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt; Uradamus &lt;/a&gt; on &lt;a href=&quot;https://sketchfab.com?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=f785aeb50aa745b9a475c3895333d7b9&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt;Sketchfab&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3ckgV3MbJ-XsZ1oUjoePG5-xbdMuQ8P4s_IjduauYHPf52AWnLsiAIqlqqzorGqx0b8RlG_EHJtsx0Z7NK6iYRxqKGKb1QPud7JjWYaeIuVBOPZgAoklZczAXyVZBOfLgLulf5W2ej_ziV27rYZKRHVPUvWrL8CJ0YT4UOG-rLG0HTe7Fa82J/s2288/Captura%20de%20pantalla%202025-11-02%20a%20las%2011.36.16.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3ckgV3MbJ-XsZ1oUjoePG5-xbdMuQ8P4s_IjduauYHPf52AWnLsiAIqlqqzorGqx0b8RlG_EHJtsx0Z7NK6iYRxqKGKb1QPud7JjWYaeIuVBOPZgAoklZczAXyVZBOfLgLulf5W2ej_ziV27rYZKRHVPUvWrL8CJ0YT4UOG-rLG0HTe7Fa82J/s2288/Captura%20de%20pantalla%202025-11-02%20a%20las%2011.36.16.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMUqca99S2-lkKRsoMzVHCMgho_eucahUyLJd3VgpBK3vjE_uIF9kh4Fxdo11LGXgVpbleIpybSu84nw2PbjIrr85ZyPkggzdFocfnUhj93Ps_BNn7rv1xexOBvXfk9jOvMKMLpbU_MHQ3DX1syBKImKWVrPijCKdRpx3AAZgqpK2pZUrwDiee/s3080/Captura%20de%20pantalla%202025-11-02%20a%20las%2011.33.01.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1642&quot; data-original-width=&quot;3080&quot; height=&quot;342&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMUqca99S2-lkKRsoMzVHCMgho_eucahUyLJd3VgpBK3vjE_uIF9kh4Fxdo11LGXgVpbleIpybSu84nw2PbjIrr85ZyPkggzdFocfnUhj93Ps_BNn7rv1xexOBvXfk9jOvMKMLpbU_MHQ3DX1syBKImKWVrPijCKdRpx3AAZgqpK2pZUrwDiee/w640-h342/Captura%20de%20pantalla%202025-11-02%20a%20las%2011.33.01.jpg&quot; width=&quot;640&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1950&quot; data-original-width=&quot;2288&quot; height=&quot;546&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3ckgV3MbJ-XsZ1oUjoePG5-xbdMuQ8P4s_IjduauYHPf52AWnLsiAIqlqqzorGqx0b8RlG_EHJtsx0Z7NK6iYRxqKGKb1QPud7JjWYaeIuVBOPZgAoklZczAXyVZBOfLgLulf5W2ej_ziV27rYZKRHVPUvWrL8CJ0YT4UOG-rLG0HTe7Fa82J/w640-h546/Captura%20de%20pantalla%202025-11-02%20a%20las%2011.36.16.jpg&quot; width=&quot;640&quot; /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Tras tres días más de desarrollo implementé un sistema básico de diálogos. Si bien la implementación de un sistema básico de este tipo puede completarse en una hora, incorporé mecánicas avanzadas, tales como que ambos personajes roten mostrando la animación de &quot;andar&quot; para mirarse a la cara antes de iniciar el diálogo y cuando éste inicia, la cámara cambia a una perspectiva en primera persona con el fin de proporcionar cierto nivel de inmersión. Mi idea es que, en el juego final, la cámara de los diálogos sea similar a juegos de Bethesda como Oblivion, Fallout o Starfield. En este momento ya pasaba de intentar imitar al Seven Pirates y me dedicaba más bien a implementar mecánicas que me divirtieran.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKbQmSr4MeDSqUvksJas6Svm29GXuQ0LzHFKwdQPN83N7VknRmStWEoiI3EvYvGtiw2oIh5BBANOo75RqeIhZ3RmezyccL6CLsyYFIQZNBEe0S_ffk4YrG6HoO3FEdhCLt0Uc1IY2DFD8P3qW_0u6hzB-mUqac8NdiFGrW5MTGIl95PbqBOKec/s3360/G2gcfo9XoAAvOvO.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2036&quot; data-original-width=&quot;3360&quot; height=&quot;388&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKbQmSr4MeDSqUvksJas6Svm29GXuQ0LzHFKwdQPN83N7VknRmStWEoiI3EvYvGtiw2oIh5BBANOo75RqeIhZ3RmezyccL6CLsyYFIQZNBEe0S_ffk4YrG6HoO3FEdhCLt0Uc1IY2DFD8P3qW_0u6hzB-mUqac8NdiFGrW5MTGIl95PbqBOKec/w640-h388/G2gcfo9XoAAvOvO.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtFGlKa9lLzhF0LcfPJdLqradCb8m_QiRKzmD_jCEU1vaiy-0kK5TnyOGqATYZpq3bof8sNH6FQKnNP8Yp5ggWEgBIaMgrT5nNW41-1xD673RKv-r8VrUCck27EHdo9wseiMpMFwyLGY7W1_TuEVF1MvNjTrXpb1PSdjOoDNDkepP8DKadTige/s3360/G2gcfo8XAAAkAKu.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2036&quot; data-original-width=&quot;3360&quot; height=&quot;388&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtFGlKa9lLzhF0LcfPJdLqradCb8m_QiRKzmD_jCEU1vaiy-0kK5TnyOGqATYZpq3bof8sNH6FQKnNP8Yp5ggWEgBIaMgrT5nNW41-1xD673RKv-r8VrUCck27EHdo9wseiMpMFwyLGY7W1_TuEVF1MvNjTrXpb1PSdjOoDNDkepP8DKadTige/w640-h388/G2gcfo8XAAAkAKu.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhslkBw_dBk0bUpru1v22f9PXjTiUvpoQ1SE2EkoTZ8ftsNYPTOD80ECisMnvr5tQB9V5k_b4dVQsg2YpIRKSPED5wZ2J83BoBAA0SQacsFKRusRLegPGNu9jK06eLeprU2P9sKoHRamSlo_fOvYp1Gs7fl2xA906q5EpEKZTx9cY0lt5c3cGKi/s2864/G2frEN8XcAAcNcU.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1928&quot; data-original-width=&quot;2864&quot; height=&quot;430&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhslkBw_dBk0bUpru1v22f9PXjTiUvpoQ1SE2EkoTZ8ftsNYPTOD80ECisMnvr5tQB9V5k_b4dVQsg2YpIRKSPED5wZ2J83BoBAA0SQacsFKRusRLegPGNu9jK06eLeprU2P9sKoHRamSlo_fOvYp1Gs7fl2xA906q5EpEKZTx9cY0lt5c3cGKi/w640-h430/G2frEN8XcAAcNcU.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Una semana más tarde ya tenía Rimuru corriéndose, aganchándose, saltando, escalando y le implementé también una barra de energía, similar a la de Breath of The Wild y Genshin Impact y varios elementos del HUD que aparecen y se desvanecen dependiendo del estado del personaje. También, para que la animación de correr se sintiera mejor, le aplico una deformación del POV para que se vea más estilo &quot;ojo de pez&quot;, a la vez que le pego ciertos tambaleo de cámara para simular los trotes.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1976433129398407209&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Por cierto, recurrí a Blender para hacer el círculo que mide la energía:&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyshUJjRV1yah1y3rHEL1YGC-Pf14EAfBkpLx7VWkIcV_VyXYA_nOrJ5vabdFaDE_-fum5DO72XGp_zAK4hCz3jBaJM39lkKcsaoCMD-3a0dhOsOEOTzNMrIQqqt5QD2HH6iqC03sS_qAdwRrdec0U452twVZDJna1kk1qME5K7NMSMXBmrZO2/s3360/G220OXbXYAAfRtE.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2100&quot; data-original-width=&quot;3360&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyshUJjRV1yah1y3rHEL1YGC-Pf14EAfBkpLx7VWkIcV_VyXYA_nOrJ5vabdFaDE_-fum5DO72XGp_zAK4hCz3jBaJM39lkKcsaoCMD-3a0dhOsOEOTzNMrIQqqt5QD2HH6iqC03sS_qAdwRrdec0U452twVZDJna1kk1qME5K7NMSMXBmrZO2/w640-h400/G220OXbXYAAfRtE.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2100&quot; data-original-width=&quot;3360&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi51PmvCpO5zutPYStNk9WFyCFwWHKegpvswmOIlGdPoBM8n18cz6tTQ_aAaCzmqX2Cd6OtPQyqE1JkZJXngNR7hPt6hu3IOQULkbwFGpcxBbTejV8pL9BoMMzMcnOTi2983S13t7IHxe7mC7SvXbkyY1bWGfD4kdywePL3fSn5Nw4OXz-AcdtB/w640-h400/G22zrJSWAAAnnoM.jpg&quot; width=&quot;640&quot; /&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaoi3ShB4v_XPSjkdWGyl5BB6tkCjNduLTqwDSwVyvqXiRRPaiHoJ3nseibOGKlMq5iZUZVxf9rEVh64dcSlT2-D9_Goq5AoLwPO2asU4_mTxL0LJ6AtcKWyFEL3bSQ0qvG94lzo_q56bLhrO8rYI8956Z33kPIMf8UoMcP13QM4SZDBrAtYzz/s3360/G22zrJaXcAAMQLm.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2100&quot; data-original-width=&quot;3360&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaoi3ShB4v_XPSjkdWGyl5BB6tkCjNduLTqwDSwVyvqXiRRPaiHoJ3nseibOGKlMq5iZUZVxf9rEVh64dcSlT2-D9_Goq5AoLwPO2asU4_mTxL0LJ6AtcKWyFEL3bSQ0qvG94lzo_q56bLhrO8rYI8956Z33kPIMf8UoMcP13QM4SZDBrAtYzz/w640-h400/G22zrJaXcAAMQLm.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Valga la pena destacar que el sistema de escalada me produjo una cantidad muy grande de errores que requirieron varios días de meticulosa corrección.&amp;nbsp; Si bien el concepto teórico parecía sencillo (proyectar un rayo delante del personaje y escalar el objeto si se detectaba un collider), la implementación práctica resultó en un comportamiento poco natural.&amp;nbsp; En particular, el personaje podía tener más de medio cuerpo flotando al desplazarse lateralmente o la subida a la cima no quedaba nada natural.&amp;nbsp; Además, la cámara mostraba un comportamiento errático al interactuar con las normales de las superficies adyacentes, y se producían inconsistencias en los estados del personaje una vez alcanzada la cima (programaba dar un paso, pero como no se tocaba suelo mi motor interpretaba un salto).&amp;nbsp; Para solucionar estos problemas, implementé un sistema de cuatro rayos: uno en la cabeza, otro en los pies y dos adicionales en cada brazo, con el fin de definir con precisión los límites de la escalada.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQL9yM2np543OUPfQB_lnaCRwRT9WwTBNn9cNg9HZkM4-dKl7qLCVaddcaTvoT7r8pkcT7eCRppniuJKk5whjvqlbCesG1dcXxFu82sfa9W9ojQfdtGnk3A7BJJjypU4_ILkniekL8oh18xUomAaPaB3vcvIprzNMh3V_zxGiksyY2PfgJMhj3/s3360/G3AwIBzXYAA3nfl.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2100&quot; data-original-width=&quot;3360&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQL9yM2np543OUPfQB_lnaCRwRT9WwTBNn9cNg9HZkM4-dKl7qLCVaddcaTvoT7r8pkcT7eCRppniuJKk5whjvqlbCesG1dcXxFu82sfa9W9ojQfdtGnk3A7BJJjypU4_ILkniekL8oh18xUomAaPaB3vcvIprzNMh3V_zxGiksyY2PfgJMhj3/w640-h400/G3AwIBzXYAA3nfl.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; A los doce días de desarrollo implementé una librería DLL en .NET con el fin de separar la capa de mecánicas de JRPG de los scripts de Godot.&amp;nbsp; Esta implementación permite la recuperación de datos del personaje mediante un fichero JSON.&amp;nbsp; Adicionalmente, también desarrollé un sistema de pausa con un menú que recuerda al de títulos como Final Fantasy VII y VIII.&amp;nbsp; Asimismo, concebí el concepto de &quot;Puerta de los Mundos&quot;, un sistema de gachas en el que conseguiríamos personajes para nuestra party, aunque aún no ha sido implementado.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb2hhryl_hyphenhyphenvwvJc4lWO9HCWhWKMhH5BRkHwOraR3jCRas3YKMP62WWimer1csIl4Eq6lGCF0Q-mMoH5xPWtlKrcx1lhFBJOLAkPaAvJ44vcqPGDPsGaul7e9D0aIB-5pRXbrxHXentAPK5EOPhjE7-65osyyvLw4RvzgrKqT-Byi_4hC41nRH/s3584/G3FX7TbXEAAqHNi.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2262&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb2hhryl_hyphenhyphenvwvJc4lWO9HCWhWKMhH5BRkHwOraR3jCRas3YKMP62WWimer1csIl4Eq6lGCF0Q-mMoH5xPWtlKrcx1lhFBJOLAkPaAvJ44vcqPGDPsGaul7e9D0aIB-5pRXbrxHXentAPK5EOPhjE7-65osyyvLw4RvzgrKqT-Byi_4hC41nRH/w640-h404/G3FX7TbXEAAqHNi.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Al día siguiente decidí implementar un sistema de vuelo. Mi intención es que determinados personajes tengan la capacidad de escalar, mientras que otros puedan volar, otros curar, etc. Esta estrategia tiene como objetivo incentivar al jugador a utilizar todo su elenco de personajes para lograr la exploración completa del mundo al 100%. Este sistema no me costó mucho de implementar, debido a que meses antes estuve programando un prototipo de un juego basado en el universo de Tanya Degurechaff (&lt;a href=&quot;https://x.com/Hamster_ruso/status/1967761141884653592/video/1&quot;&gt;enlace&lt;/a&gt;).&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1977784767446651033&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Un día más tarde implementé un sistema para cambiar de personaje en tiempo real. Los primeros intentos me dieron problemas debido a que cargaba los modelos y sus texturas al vuelo, produciendo parones de uno o dos segundos cada vez que cambiaba de personaje. Lo solucioné creando un diccionario donde cargaba todos los modelos jugables al iniciar la partida.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1978183414483177814&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjefe__vkZ2f1hFuJio5pm6X_idlBLaoqn5AGzY4HUT5OH0kT5AesV2Pob5roxFZbdFdwc3utt1hggbRVmp4tUeRHkw6c_bg8oO-3tSJ7eaQma2FoPpViIYfRgjm9IXGq7MC7c6bC794-bJdlrTz1Gg8dhi2lMU3JUW6KcudM9kSJ-gmcUTgoHx/s1516/G3PsFjsW0AAZEox.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;124&quot; data-original-width=&quot;1516&quot; height=&quot;52&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjefe__vkZ2f1hFuJio5pm6X_idlBLaoqn5AGzY4HUT5OH0kT5AesV2Pob5roxFZbdFdwc3utt1hggbRVmp4tUeRHkw6c_bg8oO-3tSJ7eaQma2FoPpViIYfRgjm9IXGq7MC7c6bC794-bJdlrTz1Gg8dhi2lMU3JUW6KcudM9kSJ-gmcUTgoHx/w640-h52/G3PsFjsW0AAZEox.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDWwpvZrHg7aPNwoaxyNpxNhs8y1OtFLQQMB99yxPwpfJeAc-Ldp9skS31vA-ChBV-Mfr0_hqOfaVZ7bckjNx0QdiQM6EOshO11zLje0AWshTu-NmfDRjd6H2NRx4mKeJT8mXyPFaV6MdeASJtPzepcsqPJ6JRCu20BzVihJa7uB09CbJb0QiX/s1516/G3PsFjTWYAA9JwN.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1170&quot; data-original-width=&quot;1516&quot; height=&quot;494&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDWwpvZrHg7aPNwoaxyNpxNhs8y1OtFLQQMB99yxPwpfJeAc-Ldp9skS31vA-ChBV-Mfr0_hqOfaVZ7bckjNx0QdiQM6EOshO11zLje0AWshTu-NmfDRjd6H2NRx4mKeJT8mXyPFaV6MdeASJtPzepcsqPJ6JRCu20BzVihJa7uB09CbJb0QiX/w640-h494/G3PsFjTWYAA9JwN.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib8OBBRFrzE6M11iwE-fWV1nKoiCYOdkxn_Y51nXAPZ95zF8Ft_Ks6IAjDvQtcvFWvwnIxzgaWWoF7I0m72CMao1aQdUYV4YTjI7IPGGCMgC62NloTM0ucOqjPGtgetPe6lF-KUsqp-cCcyJLSGAZ-lxDALyr08zlTqrnY-1HpWo2WtE5EjpHS/s1516/G3PsFjYXYAAvQUR.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;826&quot; data-original-width=&quot;1516&quot; height=&quot;348&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib8OBBRFrzE6M11iwE-fWV1nKoiCYOdkxn_Y51nXAPZ95zF8Ft_Ks6IAjDvQtcvFWvwnIxzgaWWoF7I0m72CMao1aQdUYV4YTjI7IPGGCMgC62NloTM0ucOqjPGtgetPe6lF-KUsqp-cCcyJLSGAZ-lxDALyr08zlTqrnY-1HpWo2WtE5EjpHS/w640-h348/G3PsFjYXYAAvQUR.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Con el fin de introducir dinamismo a esa mecánica, implementé el sistema de gachas dos días después y lo estuve puliendo durante esa semana.&amp;nbsp; Este sistema requiere que el jugador recoja una serie de esferas denominadas &quot;Esferas de Singularidad&quot; que estarán distribuidas estratégicamente por todo el mundo del juego. La obtención de estas esferas permite al jugador adquirir un personaje aleatorio. Esta mecánica está diseñada para fomentar la exploración, ya que recompensa al jugador con un nuevo personaje por su esfuerzo en explorar áreas de difícil acceso, en lugar de simplemente proporcionarle un ítem coleccionable sin utilidad práctica. Esta implementación también requirió una revisión de la arquitectura del diccionario de modelos de personajes, realizando la carga en segundo plano de los modelos &quot;nuevos&quot; una vez que son obtenidos a través del sistema de gachas.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1979816942723834034&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Dos días después, me puse manos a la obra con el funcionamiento de los interiores. Mi objetivo es crear una sensación de mundo abierto, aunque no lo sea realmente (la magia de la programación, ¿verdad?).&amp;nbsp; No quiero teletransportes mágicos ni tiempos de carga al entrar en casas, tiendas o mazmorras. Para conseguirlo, hice que las puertas se abran solas automáticamente y que, al entrar en un lugar cerrado, el exterior se vuelva transparente. Para lograr este efecto, desmonté una casa en diferentes partes dentro de Blender, separando la cubierta exterior de las plantas y jugando con las normales de los muros para aprovechar el backface culling. Además, ajustando el alpha de los materiales, le di un efecto de desvanecimiento progresivo a la fachada exterior.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1980402922031837630&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1980405422906597629&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Los siguientes los dediqué crear y a pulir la pantalla de organización de grupo, pudiendo seleccionar el orden de los personajes de la party, indicar cuales están ella y cuales no e incluso cómo estarán organizados en el combate (sorpresa, mi idea es implementar un sistema por turnos similar al de Breath of Fire II).&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1981121848311234583&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En el día 24 de desarrollo me apetecía hacer algo diferente e implementé una pelota y sus físicas. Además también programé a los NPC para que te devuelvan el balón si detectan que lo tienen cerca. No aporta nada al juego, pero me pareció divertido de programar.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1981486824980943091&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; También aproveché al día siguiente para revisar toda la arquitectura del proyecto, separándolo en tres capas: Una DLL con la lógica general de un JRPG, una segunda DLL con la lógica extendida para este proyecto, sendos proyectos de test unitarios para ambos e intentar que todo lo que esté en los scripts de Godot sean meros glue code (código mínimo para conectar con los distintos componentes). Por ahora no he conseguido minimizar el código lógico de los scripts para que sean 100% glue code, pero ya tengo una base. El prototipo ya iba pillando forma y me apetecía tener un mínimo de organización antes de empezar a picar aún más líneas de código.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHfz7yleQfkSoZJvCppme8RzmHEdWRmd-lG6qnRNaj949a6gKOoKhr4lDZGHEt1Xd6K-Z_UlnroAZCjb6YT_itkK14gXDl8oMa_NRk1S85gwTmu9QfV9-NbUwy-Jw6hgwqRyHf9PylLf4WPjjxLtCuda7EfQs7Ne8_k2JlnfmYjHTRudzkKseo/s1182/G4Iml5-XUAEhmVW.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1160&quot; data-original-width=&quot;1182&quot; height=&quot;628&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHfz7yleQfkSoZJvCppme8RzmHEdWRmd-lG6qnRNaj949a6gKOoKhr4lDZGHEt1Xd6K-Z_UlnroAZCjb6YT_itkK14gXDl8oMa_NRk1S85gwTmu9QfV9-NbUwy-Jw6hgwqRyHf9PylLf4WPjjxLtCuda7EfQs7Ne8_k2JlnfmYjHTRudzkKseo/w640-h628/G4Iml5-XUAEhmVW.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjMXoR8AfyorGbjmIhv5XteHsickZ_YZzGdb5I5uHn9uwx8iR-O0amkgUnv93FmrjSd0siin8enmPs5vItEAqsn38_2j6u1JO5jrf1QLVDuVzN0shWmlayXJH-YzQ-SFW47f7Pcdh-Es5tAIxSRXh50QyX4n93UDYVyvdq1-otaMT-vsaL1nYn/s1770/G4IojqQXcAEW5Gh.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1770&quot; data-original-width=&quot;634&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjMXoR8AfyorGbjmIhv5XteHsickZ_YZzGdb5I5uHn9uwx8iR-O0amkgUnv93FmrjSd0siin8enmPs5vItEAqsn38_2j6u1JO5jrf1QLVDuVzN0shWmlayXJH-YzQ-SFW47f7Pcdh-Es5tAIxSRXh50QyX4n93UDYVyvdq1-otaMT-vsaL1nYn/w230-h640/G4IojqQXcAEW5Gh.jpg&quot; width=&quot;230&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBJVJ6x_TuZvAIDSmfyXka0Q_9bVHP41-yks0Ph8gGTexWknhzzpQ2U8hA18OFBzd1Ge-tWp71Olu8SiWVXtdSxpFvi3znah0uaS3AcR0KeUJ-J3nCETgy7EoeQQJ45Mt7kh8iyHCKaiXPtcpNHuzjkcfiO5zHJlODh6xXWckSY4gUWj05OE1Q/s1480/G4IpaEBXoAAXXfM.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;700&quot; data-original-width=&quot;1480&quot; height=&quot;302&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBJVJ6x_TuZvAIDSmfyXka0Q_9bVHP41-yks0Ph8gGTexWknhzzpQ2U8hA18OFBzd1Ge-tWp71Olu8SiWVXtdSxpFvi3znah0uaS3AcR0KeUJ-J3nCETgy7EoeQQJ45Mt7kh8iyHCKaiXPtcpNHuzjkcfiO5zHJlODh6xXWckSY4gUWj05OE1Q/w640-h302/G4IpaEBXoAAXXfM.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; En el día 27 implementé las pantallas de gestión de objetos, de magias (habilidades) y&amp;nbsp; de estado de los personajes:&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1982609661640769896&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp;Y para acabar con los avances del primer mes de prototipado, también implementé un sistema básico de tiendas, con los que comprar y vender ítems.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;
  &lt;a href=&quot;https://twitter.com/usuario/status/1982940839715487976&quot;&gt;&lt;/a&gt;
&lt;/blockquote&gt;
&lt;script async=&quot;&quot; charset=&quot;utf-8&quot; src=&quot;https://platform.twitter.com/widgets.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Por cierto, aunque en esta entrada veáis personajes de anime famosos, ninguno de ellos estará en la versión final del juego. Se tratan de modelos creados rápidamente para testear las mecánicas del prototipo.&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/11/dev-blog-proyecto-isekai-14.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/5606765014002480172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/5606765014002480172'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/11/dev-blog-proyecto-isekai-14.html' title='[Dev-Blog] [Proyecto Isekai] [#14] Transformación del proyecto'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMUqca99S2-lkKRsoMzVHCMgho_eucahUyLJd3VgpBK3vjE_uIF9kh4Fxdo11LGXgVpbleIpybSu84nw2PbjIrr85ZyPkggzdFocfnUhj93Ps_BNn7rv1xexOBvXfk9jOvMKMLpbU_MHQ3DX1syBKImKWVrPijCKdRpx3AAZgqpK2pZUrwDiee/s72-w640-h342-c/Captura%20de%20pantalla%202025-11-02%20a%20las%2011.33.01.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-5404300781340151871</id><published>2025-10-21T19:00:00.015+02:00</published><updated>2025-10-21T19:00:00.114+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tales of"/><category scheme="http://www.blogger.com/atom/ns#" term="Tales of Xillia"/><category scheme="http://www.blogger.com/atom/ns#" term="xbox"/><category scheme="http://www.blogger.com/atom/ns#" term="xbox series x"/><title type='text'>A pesar de las cancelaciones de preventas, Bandai Namco lista una versión física de Tales Of Xillia Remastered de Xbox Series X para España y Suecia</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; De forma inesperada, sin previo aviso, ni comunicación oficial y a tan solo diez días del lanzamiento de Tales of Xillia Remastered, la página web europea de Bandai Namco ha actualizado la información relativa a dicho juego.&amp;nbsp; En la sección de preventa de dicho título se ha incorporado la disponibilidad de una edición física (&quot;standard&quot;) para las plataformas PlayStation 5, Xbox Series X y Nintendo Switch, así como la de una edición digital (&quot;Deluxe&quot;) para las plataformas PlayStation 5, Xbox Series, Nintendo Switch y PC (Steam).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2rk6ly4i1iw3Rioi21CQ4HlQEqbcHMn9_07N4vQ2UHiki4aYYo5tZ2fhD5lk83cOmXeXla9diIxJCVPcnGh0GYOn1EKysfNmLHYQDGFDNJZJbnWXhPEqroYZ5kxKzPaC6IuPaWDFevCibW_cXEia733V_dsOWCw5c36igTInsUAZ8UFYOGuCO/s3360/G3xhNapWUAAfP1V.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1960&quot; data-original-width=&quot;3360&quot; height=&quot;374&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2rk6ly4i1iw3Rioi21CQ4HlQEqbcHMn9_07N4vQ2UHiki4aYYo5tZ2fhD5lk83cOmXeXla9diIxJCVPcnGh0GYOn1EKysfNmLHYQDGFDNJZJbnWXhPEqroYZ5kxKzPaC6IuPaWDFevCibW_cXEia733V_dsOWCw5c36igTInsUAZ8UFYOGuCO/w640-h374/G3xhNapWUAAfP1V.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En dicha sección se indica que la versión física de la consola Xbox Series X debería estar disponible para reserva en Amazon (aunque el artículo ha sido retirado del sitio web y marcado como &quot;no disponible&quot;), Fnac (que ha procedido a la cancelación de todas las preventas del juego, reembolsando a los clientes y bloqueando la posibilidad de compra), Game (que ha modificado el título de las preventas de Xbox Series X, añadiendo la palabra &quot;Cancel&quot; al principio del título, sin proceder a su cancelación), MediaMarkt (que también ha bloqueado las preventas) y XtraLife (que ha marcado el producto como descatalogado, a pesar de que aún no se ha puesto a la venta). Además, para añadir más misterio a la situación, la versión física de Xbox Series X no sale listada si cambiamos el país a Francia, Reino Unido, Alemania o Italia. De hecho, aparece sólo listada para España y Suecia.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW3XOa1axmt97byTo8hwbDqjGWPO-qMWd8l0MfARpaMyHYug8gvndAP9MW4qMd4bBCRxtRBhBUFPuvXWOE6hZETP9IJMB2J8KXq1Cejp8ZqyoOK2V3Ic4dPwsXxHvjNF0SOUI7LysBEGfO1XBCtHKQMccJOWv6vbnRx7AaTxrB3zJ4uy5s0moD/s3358/G3xhTPGXMAATDj_.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1870&quot; data-original-width=&quot;3358&quot; height=&quot;356&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW3XOa1axmt97byTo8hwbDqjGWPO-qMWd8l0MfARpaMyHYug8gvndAP9MW4qMd4bBCRxtRBhBUFPuvXWOE6hZETP9IJMB2J8KXq1Cejp8ZqyoOK2V3Ic4dPwsXxHvjNF0SOUI7LysBEGfO1XBCtHKQMccJOWv6vbnRx7AaTxrB3zJ4uy5s0moD/w640-h356/G3xhTPGXMAATDj_.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMDhRxu_49L8UQcmMH7cL4w2QM1LKGxzzPFrwykNXnnQGGLRIMY2tSXV_bKRiQ1ph01JrxkfaQXa9lpTjSjXDrMDrWSWs2JodHaStHO52NO3FO7Us1CFvn12UjJzrjNIjKDJLZRVSZgtdts3jOAqTE1LhGlXkU1OorXj72zeHNI8wEK1ON3s7V/s1910/G1mdz1NXUAAmgCl.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1070&quot; data-original-width=&quot;1910&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMDhRxu_49L8UQcmMH7cL4w2QM1LKGxzzPFrwykNXnnQGGLRIMY2tSXV_bKRiQ1ph01JrxkfaQXa9lpTjSjXDrMDrWSWs2JodHaStHO52NO3FO7Us1CFvn12UjJzrjNIjKDJLZRVSZgtdts3jOAqTE1LhGlXkU1OorXj72zeHNI8wEK1ON3s7V/w640-h358/G1mdz1NXUAAmgCl.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Fnac canceló todas las preventas del juego de Xbox Serires X y devolvió el dinero a los compradores.&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcw_4n-YWoWtvsK8PffMZiHwXkbBdqWHzGhOBmHR2KiFa1Sj4KQOXPcV-RR9aLLm04TKSRyPQ3HZDkfeDAJ1TQg6sTjKLUhzKj2eoufqTy123pPucdh40Frhyphenhyphen0AIkAGSTpMWqQrH9vMAI7SsPbBcXf2uRjNUaUky4eIIPhH9iL6nUUKL4abohY/s1110/Game.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;692&quot; data-original-width=&quot;1110&quot; height=&quot;398&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcw_4n-YWoWtvsK8PffMZiHwXkbBdqWHzGhOBmHR2KiFa1Sj4KQOXPcV-RR9aLLm04TKSRyPQ3HZDkfeDAJ1TQg6sTjKLUhzKj2eoufqTy123pPucdh40Frhyphenhyphen0AIkAGSTpMWqQrH9vMAI7SsPbBcXf2uRjNUaUky4eIIPhH9iL6nUUKL4abohY/w640-h398/Game.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;Game no ha cancelado las preventas, pero ha añadido el texto &quot;CANCEL&quot; delante de la versión de Series X.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJmb9MCNlEOaeDyx50O5-7-0pCz2KUHrB2cGLmzdf62VyXJudfG93lLwKm2qqdNGscp5KgAxskwgsS9zm6zCAvZs7aSzJB7rRFwJ7haAVjaQXGFpgbmDEgDeIMgmQlzyCnWc3V5N3DFUJT9SYcrlYT12cGTyTfPtU-s2J2Emj8pUGOpSqYihTR/s3000/XtraLife.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1482&quot; data-original-width=&quot;3000&quot; height=&quot;316&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJmb9MCNlEOaeDyx50O5-7-0pCz2KUHrB2cGLmzdf62VyXJudfG93lLwKm2qqdNGscp5KgAxskwgsS9zm6zCAvZs7aSzJB7rRFwJ7haAVjaQXGFpgbmDEgDeIMgmQlzyCnWc3V5N3DFUJT9SYcrlYT12cGTyTfPtU-s2J2Emj8pUGOpSqYihTR/w640-h316/XtraLife.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;XtraLife marca el producto como &quot;descatalogado&quot; y sólo deja reservar un código de descarga.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Desde luego, la preventa de la versión para Xbox Series X del videojuego Tales of Xillia se perfila como una de las más problemáticas en las últimas décadas.&amp;nbsp; Es inaceptable que, a tan solo diez días de su lanzamiento, los consumidores de Xbox Series X se encuentren en la incertidumbre de no saber si recibirán el producto, si se les cancelará la reserva o si su versión física se transmutará en una tarjeta con código de descarga. Y, para más inri, la ausencia de comunicaciones por parte de Bandai Namco en sus redes sociales sólo contribuye a intensificar la especulación y la incertidumbre.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Todo esto solo aumenta la mala reputación de Bandai Namco, conocida por sus EULAS extremadamente abusivas que obligan a aceptar para poder jugar (si las rechazas, intenta explicarle la devolución al vendedor y por qué se tiene que comer con patatas un juego desprecintado). Entre las condiciones abusivas que exigen se encuentra revocación unilateral de licencia (pueden básicamente quitarte el juego, porque sí), obligarte a destruir el disco físico del juego, exigirte indemnizaciones, actualizar la licencia con nuevas condiciones, suspenderte el acceso a contenido virtual (como ítems, monedas in-game o partidas guardadas), robarte un gameplay o dibujo y publicarlo como suyo (te obligan a aceptar la renuncia de derechos morales) y para más inri sus licencias tienen cláusulas de post-terminación (debes de seguir aceptando lo acordado incluso si ellos te quitan la licencia de uso o si matan el juego).&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/10/a-pesar-de-las-cancelaciones-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/5404300781340151871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/5404300781340151871'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/10/a-pesar-de-las-cancelaciones-de.html' title='A pesar de las cancelaciones de preventas, Bandai Namco lista una versión física de Tales Of Xillia Remastered de Xbox Series X para España y Suecia'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2rk6ly4i1iw3Rioi21CQ4HlQEqbcHMn9_07N4vQ2UHiki4aYYo5tZ2fhD5lk83cOmXeXla9diIxJCVPcnGh0GYOn1EKysfNmLHYQDGFDNJZJbnWXhPEqroYZ5kxKzPaC6IuPaWDFevCibW_cXEia733V_dsOWCw5c36igTInsUAZ8UFYOGuCO/s72-w640-h374-c/G3xhNapWUAAfP1V.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-7224260784243614644</id><published>2025-10-09T18:32:00.006+02:00</published><updated>2025-10-09T18:32:41.242+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Videojuegos"/><category scheme="http://www.blogger.com/atom/ns#" term="xbox"/><category scheme="http://www.blogger.com/atom/ns#" term="xbox series x"/><title type='text'>Enrique (Eurogamer) enumera, una a una, todas las mentiras de Microsoft sobre Xbox</title><content type='html'>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/TKNXifFInVg&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/10/enrique-eurogamer-enumera-una-una-todas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/7224260784243614644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/7224260784243614644'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/10/enrique-eurogamer-enumera-una-una-todas.html' title='Enrique (Eurogamer) enumera, una a una, todas las mentiras de Microsoft sobre Xbox'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/TKNXifFInVg/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-7383655202461423730</id><published>2025-09-27T11:42:00.013+02:00</published><updated>2025-12-04T11:02:58.255+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="vida útil de juegos"/><category scheme="http://www.blogger.com/atom/ns#" term="Videojuegos"/><title type='text'>¿Cuánto duran los discos de nuestras consolas (y por qué aún funcionan muchos de hace décadas)?</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh65oiqChhb10TnLLR6SgBe76dAAXyC7MJqr77AoF9ZH89kp8S83madCcasu83N63PTdJbwSTrjI17uzdg48Rup7zt22X24rs0jdUVwsHkl57bk409iTCQFE49be-seA-cXkJhzUltV94JAloFklpQoaiVK0yFmimFkXsskV8uw6kRpn-l_noiU/s4032/IMG_2917.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh65oiqChhb10TnLLR6SgBe76dAAXyC7MJqr77AoF9ZH89kp8S83madCcasu83N63PTdJbwSTrjI17uzdg48Rup7zt22X24rs0jdUVwsHkl57bk409iTCQFE49be-seA-cXkJhzUltV94JAloFklpQoaiVK0yFmimFkXsskV8uw6kRpn-l_noiU/w480-h640/IMG_2917.jpeg&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En una entrada reciente analizamos la vida útil de los cartuchos de Nintendo Switch (&lt;a href=&quot;https://www.elgeneralfailure.com/2025/09/los-cartuchos-de-switch-no-son-eternos.html&quot;&gt;enlace&lt;/a&gt;), estimando que, a falta de confirmación oficial, podrían tener una duración aproximada de 20 años (en condiciones normales). En esta ocasión nos centraremos en la durabilidad de los juegos basados en discos. ¿Es necesaria esta entrada? La entrada sobre Switch surgió a raíz de la publicación de diversos shorts y TikToks que desinformaban. Esta entrada es una continuación que considero necesaria, ya que durante años se ha publicado en prensa seria una serie de artículos con información inexacta sobre la durabilidad de los discos ópticos. Algunos afirman que estos se deterioran en un plazo relativamente corto (20 años), lo cual es exagerado. Si bien la putrefacción de los discos es un fenómeno real, la afirmación carece de precisión. Por lo tanto, al igual que en el caso de los cartuchos de Switch, en esta entrada abordaremos y desmentiremos ciertos mitos.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Br76b3Dn75u8vYmate_MQiZk9rJE7M5pM5UpyUsbpGRJyKzxru5mhIsQBCR-0WmNQjtH8WZpp-mo5wydZErA9SYqa8s1oZSWBeaYxk1z2t4ZMCBxF-gMFFND-U-qMcd0eC9xMyWho3SW3SEAP83P9BUfhU3cps1o7jFa9kLVyDdd-NE7RvZm/s1920/Neptunia_%20Sisters%20VS%20Sisters-2024_05_30-21-46-53.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Br76b3Dn75u8vYmate_MQiZk9rJE7M5pM5UpyUsbpGRJyKzxru5mhIsQBCR-0WmNQjtH8WZpp-mo5wydZErA9SYqa8s1oZSWBeaYxk1z2t4ZMCBxF-gMFFND-U-qMcd0eC9xMyWho3SW3SEAP83P9BUfhU3cps1o7jFa9kLVyDdd-NE7RvZm/w640-h360/Neptunia_%20Sisters%20VS%20Sisters-2024_05_30-21-46-53.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;Mi reacción al ver al enésimo TikToker desinformando.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Cuando uno habla de discos, lo primero que piensa es: &quot;si los cuido, me duran para siempre&quot;. Error. El plástico, el metal y la óptica no son inmortales. Pero tampoco son papel higiénico: En condiciones decentes, un disco puede vivir más que el propio lector de la consola e incluso que el propietario del juego (tú). Vamos por partes.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;La vida promedia según generación (tened en cuenta que son estimaciones):&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;PS1, Saturn y algunos juegos de PS2 (CD-ROM): Entre 20 y 50 años. Larga durabilidad, pero muy fáciles de rayar. Tienen una única capa metálica (la capa de datos) reflectante muy cerca de la superficie superior. Eso significa que cualquier rayón en la parte de la etiqueta puede exponer o dañar directamente los datos.&lt;/li&gt;&lt;li&gt;Dreamcast (GD-ROM): Entre 20 y 50 años. En cuanto a tecnología son similares a los CD-ROM, pero admiten más capacidad.&lt;/li&gt;&lt;li&gt;Xbox original / PS2 / Xbox 360 (DVD-ROM): De 30 a 50 años. Más capacidad, pero misma fragilidad física que un CD-ROM: Un rayón puede ser la muerte instantánea. Los DVD salieron 15 años más tarde que los primeros CD-ROM, por lo que benefician de procesos de prensado más refinados, materiales de mayor pureza y adhesivos más estables. Se añadieron recubrimientos protectores mejores que los 
CD-ROM/GD-ROM, reduciendo el riesgo de microarañazos y contaminación.&lt;/li&gt;&lt;li&gt;PS3, PS4, Xbox One (Blu-ray): En teoría 40 a 100 años, especialmente porque la capa protectora empleada para este medio es mucho más resistente a rayones y suciedad.&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; ¿Por qué esos lapsos tan enormes de 20/50 años o 40/100 años? Pues sencillamente porque cómo cuides tu disco influye mucho. No es lo mismo tener tus discos apilados en una tarrina que guardarlos en sus cajas, lejos de la luz y en ambientes secos.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Si consideramos el caso que en teoría tiene una vida útil menor (20/50 años), podemos observar que estos superan en durabilidad a los cartuchos de Switch. Mientras que los cartuchos de las consolas actuales (Switch, Evercade, etc...) se basan en memorias flash de tipo NAND, susceptibles a fugas de electrones en sus células electrónicas (los &quot;ceros y unos&quot; que forman los bits, para simplificar), los discos se graban con un patrón de surcos sobre una superficie. La interpretación del valor 0 o 1 de un bit se determina según la altura de la pista. Estos surcos físicos no presentan fugas con el tiempo (a diferencia de las memorias flash de tipo NAND) y, además, están protegidos con distintas capas puestas únicamente para ese fin, su protección, lo que prolonga su vida útil muy significativamente. No obstante, si se produce un rayón físico, la capa de datos puede verse dañada, impidiendo que los lectores de disco detecten correctamente los bytes de los archivos afectados y, en consecuencia, haciendo que el juego resulte ilegible para la consola.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Ahora bien, ¿cuantos años durarán tus juegos? Pues todo depende en gran medida de las condiciones de almacenamiento. Dejar los discos expuestos a la superficie los hace más susceptibles a la humedad y al deterioro, mientras que almacenarlos apilados en una tarrina puede propiciar la aparición de rayones. La mejor opción para preservar su estado óptimo es guardarlos en sus cajas originales y lejos de la luz solar directa. Los rayos UV degradan la capa protectora de policarbonato y, en el caso de los discos regrabables, también afectan al tinte de la capa de datos. Si están dentro de sus cajas y éstas están expuestas a la luz solar, en principio el disco no recibe los rayos UV, pero la cubierta de la caja puede sufrir de sunfade (efecto por el cual una portada pierde viveza, contraste y saturación, quedando con un aspecto &quot;lavado&quot; o apagado), por lo que el disco no sufriría daños, pero su caja tendría una portada (o lomo) venida a menos. Si se almacenan los juegos en sus cajas y en un lugar sin exposición directa a la luz solar, su estado de conservación es bastante bueno. Para mejorar aún más su preservación, se podrían almacenar en ambientes oscuros y considerar el uso de bolsas de plástico para aislarlos aún más de la humedad, siempre que el ambiente no sea extremadamente cálido.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Cabe destacar que la calidad de los materiales empleados en la fabricación de los discos influye notablemente en su durabilidad. En comparación con un disco pirata grabado en 1999, los originales presentan una resistencia considerablemente mayor: Mientras que el pirata puede fallar en apenas una década, el original es un tanque que puede conservarse en óptimas condiciones durante un periodo mucho más largo. Esto se debe a que los discos grabables que quemamos nosotros mismos suelen estar compuestos por materiales de baja calidad, propensos a la oxidación y a la proliferación de hongos con mayor facilidad, lo que acelera su deterioro (se pudren más rápido). A su vez, es lógico pensar que la durabilidad de un disco grabable (quemado por nosotros mismos) también depende de la calidad de los materiales del propio disco: En general, los discos grabables de marca blanca y de bajo coste suelen ser los primeros en deteriorarse.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Sin embargo, es importante distinguir entre la vida útil promedio de un soporte óptico (CD-ROM, DVD de doble capa, Blu-ray...) y su uso real. Existe una realidad bastante incómoda: ciertos lectores de consola son más propensos que otros a rayar los discos durante la lectura. Un caso famoso fue el de algunas versiones de Xbox 360, donde se documentaron casos de consolas que llegaban a rayar los discos de forma muy notoria (&lt;a href=&quot;https://www.informationweek.com/software-services/microsoft-concedes-scratch-problems-on-halo-3-discs&quot;&gt;enlace 1&lt;/a&gt;, &lt;a href=&quot;https://www.informationweek.com/it-leadership/microsoft-faces-class-action-suit-over-xbox-360&quot;&gt;enlace 2&lt;/a&gt;). De hecho, el conocido &lt;i&gt;youtuber&lt;/i&gt; Austin Evans publicó recientemente un vídeo en el que adquiría una Xbox 360 de segunda mano que le dañó dos discos (&lt;a href=&quot;https://youtu.be/SqsYL9M12hc?si=6sKe74RicPflP8o0&amp;amp;t=978&quot;&gt;enlace&lt;/a&gt;, minuto 16:18). Microsoft, consciente del problema, ofreció en la década de los 2000 un programa de sustitución de discos rayados (&lt;a href=&quot;https://web.archive.org/web/20090122153024/http://xbox.com/es-ES/support/discreplacement/discreplacement-termsandconditions.htm&quot;&gt;enlace&lt;/a&gt;). Otros lectores problemáticos se encontraron en determinados modelos de PS2 Slim (cuya acumulación de polvo podía rayar los discos durante la lectura) y en las Xbox originales con lector Thomson. Si utilizas habitualmente discos originales para jugar en tus consolas retro, te recomiendo que te informes sobre el lector de tu consola para determinar si se trata de un modelo más propenso a dañarlos.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; ¿Y qué pasa si el lector deja de leerme los discos de la consola? ¿Se pueden sustituir?&amp;nbsp;Pues, en caso de que el lector de discos de la consola falle, su sustitución 
es posible, aunque la dificultad varía según el modelo. En consolas como PS1, PS2, Sega Saturn o Dreamcast, la sustitución 
del lector no presenta mayores inconvenientes: Desmontar, reemplazar y rearmar. Sin embargo, en consolas 
más modernas como Xbox clásica, Xbox 360, PlayStation 3, PlayStation 4 y
 modelos posteriores, el lector está vinculado al sistema DRM de la 
consola, lo que complica su sustitución. Es decir, para esos modelos el lector está vinculado a su consola original, lo cual, para quienes no estén familiarizados con el hacking en consolas, implica la necesidad de recurrir a un servicio técnico. En resumen, a mayor modernidad 
de la consola, más complejo resulta el proceso de sustitución del 
lector.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; ¿Y si hablamos del mantenimiento de discos? Youtube y TikTok están llenos de shorts donde enseñan a revivir discos usando pasta de dientes o lápiz labial.&amp;nbsp;En relación con el mantenimiento de discos, estos dos métodos pueden parecer efectivos a corto plazo, pero que a largo plazo resultan 
perjudiciales para el disco. La pasta de dientes puede ocultar 
rayones superficiales temporalmente, pero&amp;nbsp;al ser un 
abrasivo leve puede dejar residuos y microabrasiones que deterioran el 
disco con el tiempo. Por otro lado, el lápiz labial, al ser una grasa 
con pigmento, puede cubrir rayones por refracción, pero se derrite con 
el calor del lector y ensucia la lente (lo cual es una mala idea). Si tienes que recurrir a estas técnicas para jugar a tu juego, mi consejo es que te plantees hacer un &lt;i&gt;backup&lt;/i&gt; del disco y jugar desde él (que no explicaré cómo hacerlo por razones obvias), pulirlo o bien buscarte un reemplazo de segunda mano. Y esto lo digo porque, con los discos difíciles de leer, el lector intenta leer la pista varias veces, recalibrando el láser y moviendo el motor, lo cual produce un desgaste constante. Piensa que tu lector es un componente mecánico, susceptible de fallar con el número de usos, y que cuanto menos trabaje, menos desgaste sufrirá con el tiempo.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Y para finalizar la entrada nos queda por abordar un último punto y es el elefante en la habitación: El pulido de discos. Y menciono esto porque, además de estar en relación con el párrafo anterior, he observado en Youtube vídeos de tiendas en línea que han adquirido pulidores de discos para mejorar la apariencia estética de los juegos que comercializan (&lt;a href=&quot;https://www.youtube.com/shorts/f9toHKmSibc&quot;&gt;enlace&lt;/a&gt;). Por lo tanto, si adquieres un juego de segunda mano donde el disco está perfecto estado, sospecha (en especial si el estado del disco no es acorde con el de su caja). Pero, ¿qué pasa aquí? Pues el problema está en que esto no debe de hacerse únicamente por fines estéticos, ya que consiste en reducir el grosor de la capa de policarbonato (la capa protectora) eliminando los rayones que interfieren con la correcta lectura de la capa de datos. Esto mejora la legibilidad del disco; sin embargo, a largo plazo, este proceso incrementa la exposición del disco a la humedad y al deterioro interno. En otras palabras, el pulido puede prolongar la vida útil del disco en situaciones críticas, pero reduce su esperanza de vida general y lo hace más susceptible a futuros rayones (debido a que cada pulido adelgaza la capa protectora de policarbonato). Es importante destacar que el pulido de un disco no debería realizarse generalmente con fines estéticos, sino para solucionar problemas de lectura. Si su disco es ilegible en la actualidad, acortar su vida útil mediante el pulido para poder seguir utilizándolo se considera un mal menor.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvThWenPJe5AqPUxSqXVSSaClbA7iCLymIQi-EalWRFm0F0P8b_a5xXRkPCslbWdpRVw4q24urvISdqqDhCOJ5L9lzSNJ5g_iN0KkVQ17IdYc3BZ902_YXY_TofS75rR4XapyRX4TfMwal1FrDU09ixZj3wxwVsxezSutJ3ShyphenhyphenzSOCJoUmXmZK/s4032/IMG_3087.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvThWenPJe5AqPUxSqXVSSaClbA7iCLymIQi-EalWRFm0F0P8b_a5xXRkPCslbWdpRVw4q24urvISdqqDhCOJ5L9lzSNJ5g_iN0KkVQ17IdYc3BZ902_YXY_TofS75rR4XapyRX4TfMwal1FrDU09ixZj3wxwVsxezSutJ3ShyphenhyphenzSOCJoUmXmZK/w640-h480/IMG_3087.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/09/cuanto-duran-los-discos-de-nuestras.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/7383655202461423730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/7383655202461423730'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/09/cuanto-duran-los-discos-de-nuestras.html' title='¿Cuánto duran los discos de nuestras consolas (y por qué aún funcionan muchos de hace décadas)?'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh65oiqChhb10TnLLR6SgBe76dAAXyC7MJqr77AoF9ZH89kp8S83madCcasu83N63PTdJbwSTrjI17uzdg48Rup7zt22X24rs0jdUVwsHkl57bk409iTCQFE49be-seA-cXkJhzUltV94JAloFklpQoaiVK0yFmimFkXsskV8uw6kRpn-l_noiU/s72-w480-h640-c/IMG_2917.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-8622460162506288313</id><published>2025-09-25T23:46:00.016+02:00</published><updated>2025-12-04T10:57:11.133+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Nintendo NX"/><category scheme="http://www.blogger.com/atom/ns#" term="vida útil de juegos"/><category scheme="http://www.blogger.com/atom/ns#" term="Videojuegos"/><title type='text'>Los cartuchos de Switch no son eternos (y jugarlos no los revive)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcPfXkMQ9wX2UW5scZ7fWyH9O-FQ91jfhgU6nfMqOQVc_UgJaFt26EW-55qP1fFcVh9nhYmcfZani6KItZpiMpR9WbiBRWU7omfzTKZyJVq6o8erIaqNcM-VTEXY_4oP2nTmLZk-EXtOc0Ib4aSlO2-qBP799V_ueVY-W2kr3HMDTa5C0AcGsq/s3186/IMG_8676.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;3186&quot; height=&quot;608&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcPfXkMQ9wX2UW5scZ7fWyH9O-FQ91jfhgU6nfMqOQVc_UgJaFt26EW-55qP1fFcVh9nhYmcfZani6KItZpiMpR9WbiBRWU7omfzTKZyJVq6o8erIaqNcM-VTEXY_4oP2nTmLZk-EXtOc0Ib4aSlO2-qBP799V_ueVY-W2kr3HMDTa5C0AcGsq/w640-h608/IMG_8676.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Por si no lo sabíais, los cartuchos de Switch tienen fecha de caducidad, aunque no esté escrita en ninguna parte (y esto a lo mejor se tendría que legislar). Y no es un problema exclusivo de esta consola: Lo mismo ocurre con los cartuchos de Nintendo DS, 3DS e incluso con los cartuchos de PS Vita y Evercade. La tecnología que usan estos dispositivos, basada en memoria flash NAND, tiene una vida útil limitada y, aunque duren décadas, no son eternos.&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Últimamente me he topado con varios vídeos y tiktoks que aseguran que, para evitar que estos cartuchos mueran, basta con meterlos en la consola de vez en cuando y jugarlos. Su teoría es que la consola los &quot;mantiene vivos&quot;, puesto que ésta reescribe en las celdas de la memoria del cartucho. Spoiler: Eso es un disparate. La Switch no reescribe los cartuchos, ni los rejuvenece mágicamente. Esa idea es un mito. Los cartuchos de Switch son de sólo lectura: Salvo sorpresa, la consola no los reescribe y, por ende, no se regeneran.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; La verdad es más sencilla (y menos mágica): No es cuestión de usar un cartucho o no, sino de que esta tecnología no fue diseñada para durar siglos. Los cartuchos de Switch, como cualquier dispositivo basado en memoria flash NAND, tienen una vida útil estimada. Y lo más importante: Estos cartuchos están pensados para jugarse, no para quedarse eternamente precintados en una estantería.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Entrando en detalle, los datos en un cartucho moderno se guardan en celdas electrónicas que mantienen atrapados electrones. Estos electrones son los unos y los ceros que componen los bytes y, por ende, su contenido. Con el tiempo, esos electrones se escapan (fuga eléctrica), y los datos acaban corrompiéndose (al no saber interpretarse si una celda X representa un cero o un uno, los ficheros se leen mal). Puedes verlo como las ruedas de tu bici: Aunque no uses tu bici, sus ruedas se desinflan con el tiempo. Usar tu bici no hace que las ruedas se reinflen, pero puedes pillar un bombín y reinflarlas.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; De hecho, me gusta la metáfora de las ruedas de la bici, puesto que si usas un cartucho éste también muere. Una de las causas de la 
fuga de electrones es la alteración por lectura (Read Disturbance), 
donde una lectura intensiva de celdas en un mismo bloque puede afectar 
las celdas adyacentes y causar errores temporales que se deben corregir 
con técnicas de ECC (el controlador de memoria flash para la realización
 de corrección de errores).&amp;nbsp;De hecho, cuando los &lt;i&gt;influencers&lt;/i&gt; hablan de &quot;refresh&quot; de un cartucho, realmente no es que haya una función en la consola que te refresque las células de electrones de la memoria, si no que símplemente se hace una llamada al ECC del chip del controlador del cartucho y éste actuará únicamente si detecta una corrupción: No es como una vacuna que previene la enfermedad (refrescar una célula para que no pierda su valor de 1 o 0), es más bien una operación que se realiza una vez el paciente ya está afectado (si no sabe leer el valor, intenta interpretar si había un 0 o un 1 y lo machaca).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Se calcula que la vida útil de un cartucho de Nintendo Switch ronda los 20 años. Puede ser más, puede ser menos: No hay una duración oficial por parte de Nintendo y su vida depende de la calidad del chip, del almacenamiento, del uso, del calor, la humedad... Pero, en todo caso, no son eternos. El reloj empieza a correr desde el día que el cartucho sale de fábrica, lo uses o no.&lt;br /&gt;&lt;br /&gt;Y ya hay ejemplos cercanos:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Cartuchos de Nintendo DS que hoy no arrancan, sin motivo aparente (&lt;a href=&quot;https://www.gameindustry.com/editorials/save-state/save-states-corrupted-cartridges-a-psa-for-nintendo-3ds-enthusiasts/&quot;&gt;enlace&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Wii U muertas porque su memoria interna se degradó sola, sin tocarse (&lt;a href=&quot;https://mynintendonews.com/2023/03/07/many-users-reporting-bricked-wii-u-consoles-after-not-playing-them-for-years/&quot;&gt;enlace&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En su día, bastantes títulos de 8 y 16 bits (Zelda, Secret of Mana, Fifa 96, etc...) usaban una pila de botón soldada a la placa para guardar la partida. Realmente la pila no &quot;guardaba&quot;, si no que más bien alimentaba de forma constante la memoria volátil (SRAM) donde se guardaban las variables. Treinta años después, esas pilas están agotadas. Los cartuchos siguen funcionando, pero ya no guardan. Repararlos requiere cierto mantenimiento: Abrir el cartucho, desoldar la batería agotada y reemplazarla por otra. No es un proceso complicado, pero puede dar miedo a cualquiera que no haya usado nunca un lápiz soldador. Ahora bien, esos juegos viejos se &quot;escribían&quot; con silicio en memorias ROM, las cuales sí que son casi eternas y rara vez se estropean.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; ¿Por qué he sacado el tema de las baterías? Pues porque el hecho de que un cartucho dure unos veinte años no debería verse como una tragedia. Dos décadas dan tiempo de sobra para jugar, rejugar, compartir y atesorar esos títulos. Lo que no tiene sentido es tratarlos como fósiles intocables, como si su función fuese estar en una urna de metacrilato. Los cartuchos se hicieron para jugar. Y como todo dispositivo electrónico, un día dejarán de hacerlo. La mejor forma de honrarlos no es guardarlos como reliquias, sino jugarlos mientras viven. Existen coleccionistas que guardan juegos precintados de Switch como inversión, pero la realidad es que un juego precintado también tiene fecha de caducidad. El plástico seguirá intacto, pero sus datos, dentro del cartucho, acabarán muriendo.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; ¿Significa esto que en el futuro dejarán de existir cartuchos de Switch jugables? No necesariamente, existe algo bastante fantasioso que podemos probar. Al igual que existen empresas de criogénesis que se ofrecen a congelar tu cuerpo para descongelarte en un futuro donde se encuentre una cura para tu problema, podemos realizar un &lt;i&gt;backup&lt;/i&gt; de nuestros cartuchos (que no diré cómo hacerlo por motivos obvios), con la esperanza de que algún día exista un método para reescribirlos y restaurar los datos de nuestros cartuchos &quot;rotos&quot;. De momento es más un deseo teórico que una realidad práctica (estos cartuchos están compuestos por una flash NAND cifrada + pequeñas secciones de EEPROM para control/seguridad). Pero, de conseguirse, aunque la memoria flash envejezca y los datos se degraden, nuestro &quot;cartucho descriogénizado&quot; seguiría vivo, como si nada hubiera pasado. Ojo, no os estoy invitando a compartir vuestros juegos por internet, si no a haceros una copia de seguridad privada para restaurar en el futuro el producto original (lo cual, a día de hoy, no se puede hacer).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; ¿Y la alternativa digital? Aquí la cosa tampoco es mucho mejor. Confiar en la eShop es como poner tu esperanza de vida en manos de una aseguradora: Depende únicamente de la bondad de Nintendo mantener sus servidores vivos durante décadas. A eso hay que sumarle que tanto la Switch como su sucesora tienen un espacio de disco ridículo (32 GB y 256 GB, respectivamente), que obliga a tirar de tarjetas SD. Así que sí, la idea de los backups como criogenización digital puede sonar soñador, pero la alternativa oficial tampoco ofrece garantías reales de preservación a largo plazo: Vivimos en un mundo donde se te cobra hasta por rechazar cookies, donde se te obliga a borrar tu cuenta si rechazas las modificaciones de una EULA (no ese broma, pasa en Xbox) y donde tampoco sería descabellado imaginar, aunque suene amarillista, un futuro distópico en el que Nintendo nos haga volver a pasar por caja, aunque sea con un &quot;precio simbólico&quot;,&amp;nbsp; para seguir accediendo a juegos que ya compramos, con la excusa de mantener vivos los servidores.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Seguramente habrá ahora mismo gente que esté pensando en la piratería como solución a estos males.&amp;nbsp; No obstante, la piratería tampoco es la solución: Cada cartucho lleva una firma digital y Nintendo ya tiene mecanismos para detectar consolas o dispositivos que usan copias no autorizadas o firmware modificado, lo que acarrea el riesgo añadido de poder quedar vetado de sus servicios online. Además, regrabar o clonar cartuchos oficiales con backups de dudosa procedencia conlleva riesgos legales y prácticos que varían según la legislación de casa país. Por eso, hacer un backup privado de tus propias compras es una aproximación mucho más razonable desde el punto de vista de preservación.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: red;&quot;&gt;Actualización&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;: Para la consola Nintendo 3DS existe una herramienta no oficial y experimental (&lt;a href=&quot;https://github.com/skawo/GodMode9-with-Cartridge-Fixer)&quot;&gt;https://github.com/skawo/GodMode9-with-Cartridge-Fixer)&lt;/a&gt; que verifica la integridad de los datos en un cartucho e intenta repararlos, en caso de corrupción, mediante el mecanismo de corrección de errores integrado en el chip NAND flash del cartucho (ECC), de forma similar a lo que hacen los ordenadores con sus discos duros. Esto genera esperanzas de que, en el futuro, surja una solución equivalente para cartuchos de Nintendo Switch. Sin embargo, la verificación solo detecta los errores y en caso de haberlos la reparación es reactiva y limitada: El ECC corrige un número limitado de bits por sector, ya sea cuando se supera el umbral de errores o cuando se detectan bloques defectuosos permanentes. Si, tras 20-500 reintentos fallidos, el hash permanece sin cambios, el ECC marca los chunks como irrecuperables. De hecho, según reportes en el foro de GBATemp, la tasa de éxito de esta herramienta con cartuchos &quot;corruptos&quot; es parcial (~50% de éxito).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Como se detalla el repositorio de GitHub de la herramienta, la Nintendo 3DS ya ejecuta esta verificación automáticamente cada 10.000 lecturas, al insertar el cartucho y al apagar el sistema y es probable que la idea de que los juegos &quot;permanecen vivos&quot; con uso frecuente provenga de esto, ya que el uso regular activa más verificaciones y &lt;i&gt;refreshes&lt;/i&gt;. No obstante, esta función es solo reactiva (actúa una vez detectada la corrupción, solo para 3DS), con resultados variables: puede requerir múltiples intentos (incluso más de 8 por cartucho), no garantiza éxito en casos graves y no previene daños irreversibles por envejecimiento del NAND.&amp;nbsp;En pocas palabras: El famoso &quot;&lt;i&gt;refresh&lt;/i&gt;&quot; intenta arreglar datos ya 
corruptos, cuando lo bonito sería que machara los &quot;1&quot; por &quot;1&quot; y
 los &quot;0&quot; por &quot;0&quot;, bit a bit, para evitar así la fuga de electrones antes de que se produzca una corrupción.&amp;nbsp;Por lo tanto, jugar diariamente durante años no asegura que el cartucho permanezca intacto indefinidamente. Ahora bien, más vale tener esto que nada. No obstante, lo único que podría &quot;salvar&quot; un cartucho es llegar a crear una herramienta que &quot;formatee&quot; su contenido cargando nuestros backups en él (y por ahora no existe).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Entonces, resumiendo en plan sencillo de entender: El control que hace la 3DS cada 10.000 lecturas sirve para mirar si algún sector del cartucho se ha estropeado. Si solo hay unos pocos bits cambiados, la consola los corrige sola; si hay demasiados, ese sector ya no se puede salvar y queda muerto.&amp;nbsp; El resto de la memoria, sin embargo, sigue perdiendo carga de electrones poco a poco con los años. Por eso, aunque juegues mucho o aunque un día cojas el cartucho olvidado, lo metas y llegues rápido a esas 10.000 lecturas para que la consola intente arreglarlo, el resultado final será prácticamente el mismo: cuando pasen 20/30 años la mayoría de los datos tendrán tantos errores que ya no habrá forma de recuperarlos.&amp;nbsp; En definitiva, jugar con frecuencia no alarga de verdad la vida del cartucho; solo retrasa un pelín lo inevitable: Los refrescos regulares extienden la retención efectiva, pero solo mientras los errores sean corregibles... una vez que la &lt;u&gt;&lt;b&gt;degradación física&lt;/b&gt;&lt;/u&gt; es avanzada (después de ~10-15 años), ni los refrescos salvan bloques muertos. El &quot;refresco&quot; te puede dar un par de años de gracia en el mejor de los casos, pero no una década.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh49imcMLb0Gu5gxryzZEP_qlsAH3hd3OezwZ48K8oeWs3C4guXXiNq6eGQUI0B5eys55k7goHZ5a8OGBq0EWWwzxbIy1S4QYQ3GX5aluqOsunHXIIUQ_DuGIHvTttPprAF1IRmI6EkTN2k19YRbw0cQhJWOegksqtXeWudmnUtV4naituJAKsW/s1714/Captura%20de%20pantalla%202025-11-25%20a%20las%2022.44.42.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;848&quot; data-original-width=&quot;1714&quot; height=&quot;316&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh49imcMLb0Gu5gxryzZEP_qlsAH3hd3OezwZ48K8oeWs3C4guXXiNq6eGQUI0B5eys55k7goHZ5a8OGBq0EWWwzxbIy1S4QYQ3GX5aluqOsunHXIIUQ_DuGIHvTttPprAF1IRmI6EkTN2k19YRbw0cQhJWOegksqtXeWudmnUtV4naituJAKsW/w640-h316/Captura%20de%20pantalla%202025-11-25%20a%20las%2022.44.42.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/09/los-cartuchos-de-switch-no-son-eternos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/8622460162506288313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/8622460162506288313'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/09/los-cartuchos-de-switch-no-son-eternos.html' title='Los cartuchos de Switch no son eternos (y jugarlos no los revive)'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcPfXkMQ9wX2UW5scZ7fWyH9O-FQ91jfhgU6nfMqOQVc_UgJaFt26EW-55qP1fFcVh9nhYmcfZani6KItZpiMpR9WbiBRWU7omfzTKZyJVq6o8erIaqNcM-VTEXY_4oP2nTmLZk-EXtOc0Ib4aSlO2-qBP799V_ueVY-W2kr3HMDTa5C0AcGsq/s72-w640-h608-c/IMG_8676.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-2046186725229515023</id><published>2025-09-24T19:00:00.095+02:00</published><updated>2025-09-24T20:01:06.299+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tales of"/><category scheme="http://www.blogger.com/atom/ns#" term="Tales of Xillia"/><category scheme="http://www.blogger.com/atom/ns#" term="xbox"/><category scheme="http://www.blogger.com/atom/ns#" term="xbox series x"/><title type='text'>Tales of Xillia Remastered: Las tiendas europeas cancelan las preventas de la versión física de Xbox</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtqY05UPyJpFDrdhFHMRKkSc8kq2DszOx2JKJ6mlSqXdF84CfARxu-e1CNLMydlEJ0JnXUhobZ9zd7VcY08Q6Q0CYEkF73q_VYlzRZxEzOeK0qRGxSfWqjRU-lT77F-ZdQ5L-b2iKoTnMCMtzuUTCXYI_OKpx5rDBziyzBZAC_cnNGxZN0ircf/s1910/Captura%20de%20pantalla%202025-09-24%20a%20las%2010.21.26.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1070&quot; data-original-width=&quot;1910&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtqY05UPyJpFDrdhFHMRKkSc8kq2DszOx2JKJ6mlSqXdF84CfARxu-e1CNLMydlEJ0JnXUhobZ9zd7VcY08Q6Q0CYEkF73q_VYlzRZxEzOeK0qRGxSfWqjRU-lT77F-ZdQ5L-b2iKoTnMCMtzuUTCXYI_OKpx5rDBziyzBZAC_cnNGxZN0ircf/w640-h358/Captura%20de%20pantalla%202025-09-24%20a%20las%2010.21.26.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Sin previo aviso y con un EAN ya asignado (&lt;span&gt;3391892031713&lt;/span&gt;), las tiendas europeas han empezado a cancelar las preventas de la versión física para Xbox Series X del Tales of Xillia Remastered, el cual está previsto que salga el 31 de Octubre.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Además de esto, sitios como TodoConsolas han retirado la página del producto y otros como Fnac o Amazon han bloqueado su preventa, mostrando un simple aviso de &quot;Producto no disponible&quot;.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKfNYeLBxgRDwzQ31fJgwomn0XcvYgnbVtPeATovKjJeeqtNm_c_ceGFrbti_8fz0NkEc3j2B8DI_YQ7zCevhEaHLa-yx25eM7MVAphe2-IVbZ2o1wxkHdEv7wd_MPUUMD43wYvCIp5VcPO1NLqQvlBDFtxIkIjm8wjI4RvVbM2TkrA8qe7FyY/s2446/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.25.22.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;758&quot; data-original-width=&quot;2446&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKfNYeLBxgRDwzQ31fJgwomn0XcvYgnbVtPeATovKjJeeqtNm_c_ceGFrbti_8fz0NkEc3j2B8DI_YQ7zCevhEaHLa-yx25eM7MVAphe2-IVbZ2o1wxkHdEv7wd_MPUUMD43wYvCIp5VcPO1NLqQvlBDFtxIkIjm8wjI4RvVbM2TkrA8qe7FyY/w640-h198/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.25.22.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrr69El4w-ptXlcdFaPDxOtr81qAxPwCpsYq1DIVQRdyECxu-qkgv0EREqJX6PuoD5g66NHiWtNt-vXkiC7h86ji5Y95QAq7hIn9Cp9h86PxGVgSSrdz4wGxE_mGO4I-irHAq_qMTFGyHR9-MxUkuqVIuVwmwk0FXnuV68NwOb5AR9J5BZerzb/s2446/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.25.32.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;758&quot; data-original-width=&quot;2446&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrr69El4w-ptXlcdFaPDxOtr81qAxPwCpsYq1DIVQRdyECxu-qkgv0EREqJX6PuoD5g66NHiWtNt-vXkiC7h86ji5Y95QAq7hIn9Cp9h86PxGVgSSrdz4wGxE_mGO4I-irHAq_qMTFGyHR9-MxUkuqVIuVwmwk0FXnuV68NwOb5AR9J5BZerzb/w640-h198/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.25.32.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ1lJASo0y5WKXHVf4vB-kw1FsquTtnZdsdn2yEUqWp4Y65gwww9lPoURoZJgz_jaMLcdMwcX-2K9nsM4gx3SLX602Ec9QWukIXt1DTfVBSy3hJ84dJCiCOIhErAw9ZK6SEXb-RQL7yDes5znksbVZC6o1RHRZ2GJbt2A8cJrNJ4ey7cVpR65E/s3352/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.25.49.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1418&quot; data-original-width=&quot;3352&quot; height=&quot;270&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ1lJASo0y5WKXHVf4vB-kw1FsquTtnZdsdn2yEUqWp4Y65gwww9lPoURoZJgz_jaMLcdMwcX-2K9nsM4gx3SLX602Ec9QWukIXt1DTfVBSy3hJ84dJCiCOIhErAw9ZK6SEXb-RQL7yDes5znksbVZC6o1RHRZ2GJbt2A8cJrNJ4ey7cVpR65E/w640-h270/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.25.49.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhnsl5n3VOhnvuAqH47YjSPNzc4cjnPVo8GRXXKmHcgX6gia6UZcd3nrpUJbrYtMJIKavK1e2rpWcKxlOurOpqlUfQPCVhPhDnyA4CDXrsLLjRFyyO2eeJoo0EZ9eskxRukcBYc_npCOCFa1TSnhMOoJqPG6nWIoujOlsBVjHf1rBPAuTsfw4V/s3038/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.28.10.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1418&quot; data-original-width=&quot;3038&quot; height=&quot;298&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhnsl5n3VOhnvuAqH47YjSPNzc4cjnPVo8GRXXKmHcgX6gia6UZcd3nrpUJbrYtMJIKavK1e2rpWcKxlOurOpqlUfQPCVhPhDnyA4CDXrsLLjRFyyO2eeJoo0EZ9eskxRukcBYc_npCOCFa1TSnhMOoJqPG6nWIoujOlsBVjHf1rBPAuTsfw4V/w640-h298/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.28.10.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Esta versión aún se puede reservar en sitios como Game o XtraLife, pero, sin una comunicación oficial de Bandai Namco, parece que el juego se lanzará exclusivamente en formato digital para Xbox Series X.&amp;nbsp;A esto se suma que el juego no está listado en la tienda de Xbox 
como “Xbox Play Anywhere” (opción que permite acceder a la versión de 
consola y PC con una única compra), por lo que los usuarios de la 
próxima consola portátil ROG Xbox Ally tendrán que jugarlo en la nube o 
adquirirlo directamente en Steam. Cabe destacar que, para poder jugar en cloud a la ROG Xbox Ally, hay que pagar una subscripción de Game Pass Ultimate o tener una Xbox Series propia ejecutando el juego.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Todo esto solo aumenta la mala reputación de Bandai Namco, conocida por sus EULAS extremadamente abusivas que obligan a aceptar para poder jugar (si las rechazas, intenta explicarle la devolución al vendedor y por qué se tiene que comer con patatas un juego desprecintado). Entre las condiciones abusivas que exigen se encuentra revocación unilateral de licencia (pueden básicamente quitarte el juego, porque sí), obligarte a destruir el disco físico del juego, exigirte indemnizaciones, actualizar la licencia con nuevas condiciones, suspenderte el acceso a contenido virtual (como ítems, monedas in-game o partidas guardadas), robarte un gameplay y publicarlo como suyo (te obligan a aceptar la renuncia de derechos morales) y para más inri sus licencias tienen cláusulas de post-terminación (debes de seguir aceptando lo acordado incluso si ellos te quitan la licencia de uso o si matan el juego).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Pero aquí no acaba la cosa: La estrategia comercial de Bandai Namco resulta tan cuestionable que, a un mes del lanzamiento del juego, su página web no menciona ninguna versión física, ni siquiera para PS5 o Nintendo Switch, permitiendo las preventas únicamente en formato digital, por lo que existe el riesgo de que las preventas del formato físico de Switch y PS5 también sean canceladas y que en Europa este juego esté disponible sólo en formato digital.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvTW43eozCJivpu-O1SOj3eNWEZUg4HvOi83c5faoOveHNXso-5OEP35Doco1liGzVggSxm7aslrfd61d8dvj2BNvif8NAIQlR8LgWhSyN_dORV3MyT6BE5qA8ykqHwLsiVH5UbaVgEdkTU-hz_JdYbTaBO3EG56mCILnb5PtVv7HQiu6_z7Zr/s3038/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.38.46.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1572&quot; data-original-width=&quot;3038&quot; height=&quot;332&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvTW43eozCJivpu-O1SOj3eNWEZUg4HvOi83c5faoOveHNXso-5OEP35Doco1liGzVggSxm7aslrfd61d8dvj2BNvif8NAIQlR8LgWhSyN_dORV3MyT6BE5qA8ykqHwLsiVH5UbaVgEdkTU-hz_JdYbTaBO3EG56mCILnb5PtVv7HQiu6_z7Zr/w640-h332/Captura%20de%20pantalla%202025-09-24%20a%20las%2011.38.46.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/09/tales-of-xillia-remastered-las-tiendas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/2046186725229515023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/2046186725229515023'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/09/tales-of-xillia-remastered-las-tiendas.html' title='Tales of Xillia Remastered: Las tiendas europeas cancelan las preventas de la versión física de Xbox'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtqY05UPyJpFDrdhFHMRKkSc8kq2DszOx2JKJ6mlSqXdF84CfARxu-e1CNLMydlEJ0JnXUhobZ9zd7VcY08Q6Q0CYEkF73q_VYlzRZxEzOeK0qRGxSfWqjRU-lT77F-ZdQ5L-b2iKoTnMCMtzuUTCXYI_OKpx5rDBziyzBZAC_cnNGxZN0ircf/s72-w640-h358-c/Captura%20de%20pantalla%202025-09-24%20a%20las%2010.21.26.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-4911458730766838134</id><published>2025-09-10T18:25:00.006+02:00</published><updated>2025-09-11T11:28:32.333+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="espacio exterior"/><category scheme="http://www.blogger.com/atom/ns#" term="nasa"/><title type='text'>La NASA confirma haber hallado indicios de restos de vida microbiana en Marte</title><content type='html'>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/-StZggK4hhA&quot; style=&quot;border-radius: 15px;&quot; title=&quot;YouTube video player&quot; width=&quot;842&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; El hallazgo fue compartido con la comunidad científica hace un año y no se ha encontrado otra explicación posible a la existencia pasada de vida microbiana en Marte.&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/09/la-nasa-confirma-haber-hallado-restos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4911458730766838134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4911458730766838134'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/09/la-nasa-confirma-haber-hallado-restos.html' title='La NASA confirma haber hallado indicios de restos de vida microbiana en Marte'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/-StZggK4hhA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-4472516979440536219</id><published>2025-08-28T22:47:00.001+02:00</published><updated>2025-08-28T22:47:46.621+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Backstabbed in a Backwater Dungeon"/><category scheme="http://www.blogger.com/atom/ns#" term="blender"/><category scheme="http://www.blogger.com/atom/ns#" term="nazuna"/><title type='text'>[Blender] Nazuna (Backstabbed in a Backwater Dungeon)</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En marzo os presenté un primer&amp;nbsp;esbozo (&lt;i&gt;blockout&lt;/i&gt;)&lt;i&gt;&amp;nbsp;&lt;/i&gt;del modelo de Nazuna (&lt;a href=&quot;https://www.elgeneralfailure.com/2025/03/blender-nazuna-backstabbed-in-backwater.html)&quot;&gt;enlace&lt;/a&gt;), uno de los personajes secundarios de &lt;i&gt;Backstabbed in a Backwater Dungeon&lt;/i&gt;. Esta serie, cuyo manga he estado coleccionando mediante importación desde Estados Unidos, verá estrenada su adaptación al anime en octubre de este año. HIDIVE ha adquirido los derechos de distribución, por lo que es probable que en Europa esté disponible a través de Netflix. Mi objetivo inicial era finalizar el modelo en marzo, pero por diversas razones lo dejé en suspenso. Finalmente lo he retomado hace dos semanas, aprovechando para rehacer por completo el &lt;i&gt;blockout&lt;/i&gt;, pulirlo y finalizarlo.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;sketchfab-embed-wrapper&quot;&gt; &lt;iframe allow=&quot;autoplay; fullscreen; xr-spatial-tracking&quot; allowfullscreen=&quot;&quot; execution-while-not-rendered=&quot;&quot; execution-while-out-of-viewport=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; mozallowfullscreen=&quot;true&quot; src=&quot;https://sketchfab.com/models/855b836348714abaa321d4638f2358db/embed&quot; title=&quot;Nazuna, from Backstabbed in a Backwater Dungeon&quot; web-share=&quot;&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;842&quot; xr-spatial-tracking=&quot;&quot;&gt; &lt;/iframe&gt; &lt;p style=&quot;color: #4a4a4a; font-size: 13px; font-weight: normal; margin: 5px;&quot;&gt; &lt;a href=&quot;https://sketchfab.com/3d-models/nazuna-from-backstabbed-in-a-backwater-dungeon-855b836348714abaa321d4638f2358db?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=855b836348714abaa321d4638f2358db&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt; Nazuna, from Backstabbed in a Backwater Dungeon &lt;/a&gt; by &lt;a href=&quot;https://sketchfab.com/hamster_ruso?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=855b836348714abaa321d4638f2358db&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt; hamster_ruso &lt;/a&gt; on &lt;a href=&quot;https://sketchfab.com?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=855b836348714abaa321d4638f2358db&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt;Sketchfab&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;¿Quién es Nazuna? Bueno, Nazuna es uno de los aliados más poderosos de Light, el protagonista de (atentos al titulazo) “&lt;i&gt;Backstabbed in a Backwater Dungeon: My Trusted Companions Tried to Kill Me, But Thanks to the Gift of an Unlimited Gacha I Got LVL 9999 Friends and Am Out For Revenge on my former party members and the world&lt;/i&gt;”, también conocido como &quot;Backstabbed in a Backwater Dungeon&quot;.&amp;nbsp; La narrativa sigue a Light, un joven traicionado y dado por muerto, quien se transforma en un formidable antagonista con la intención de eliminar a sus antiguos compañeros, similar a la trama de Kill Bill, y de paso, destruir el mundo. Esta información no constituye un spoiler, sino una conclusión que se puede extraer tras la lectura del primer volumen.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;El caso es que Light termina abandonado en lo más profundo del Abismo, la mazmorra más letal del mundo. Esta situación, sin preveerlo, le provoca una fuerte alteración en su factor de suerte (&lt;i&gt;buffer&lt;/i&gt; positivo), lo cual resulta sumamente beneficioso para su poder: la capacidad de obtener &lt;i&gt;gachas&lt;/i&gt; infinitos. Al lanzar su hechizo de gachas, obtiene una tarjeta que puede materializarse en un objeto, un arma o incluso en una persona. De hecho, gracias a esta alteración en su suerte, a base de gachas logra construir una fortaleza, obtener un armamento de élite y un ejército de aliados de nivel 9999 (el máximo) a su servicio. Entre esos aliados se encuentra Nazuna, quien es probablemente el personaje más fuerte de toda la serie.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Nazuna destaca por su gran fuerza, su largo cabello plateado, sus llamativos ojos rojos, su pesada armadura (que en la adaptación al anime ha sido aligerada) y por blandir una gigantesca espada más grande que ella. Sin embargo, no se deje engañar por las apariencias, ya que es capaz de eliminar a enemigos de altísimo nivel utilizando únicamente sus puños. Digamos que es una especie de mezcla de Noelle de Genshin Impact y de Son Goku (es igual de bruta y de irresponsable que él).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNMBGXlnnQoB5Dpz06EMnJ6h0gduWKFgYz845QHgXlxoqbMKUa9yetYF7WjoaRVp2v6feTkXdNrHpuj29gXeqb4M3DNxUG_DKhvXIHFNDFQGM07W4KnoPO0iCvxtzGyYq9zd92Nx8sMV98kz3l4_ktmmKAgl8hHAu9BSy6mNZ7-zPsP8F7jj3l/s4032/IMG_6916.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNMBGXlnnQoB5Dpz06EMnJ6h0gduWKFgYz845QHgXlxoqbMKUa9yetYF7WjoaRVp2v6feTkXdNrHpuj29gXeqb4M3DNxUG_DKhvXIHFNDFQGM07W4KnoPO0iCvxtzGyYq9zd92Nx8sMV98kz3l4_ktmmKAgl8hHAu9BSy6mNZ7-zPsP8F7jj3l/w640-h480/IMG_6916.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Con todo ello, os comparto varias capturas de la versión preliminar en Blender y de la versión subida a Sketchfab.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB3RXA9XNmOe-BM2YQbOkywoafcT9Dsor1FV-yYqAP7cd6gwMYX1-F6j4rBwKgSbnUdxVpFBQlUGW201n75DsCQ-DzGpeUASZuCS6NOVFUnsFrcJzGYO6aTB6pYISYla_clsGU2F3KsIMHWawRhmR5GkXeM1ulKK1O1tyOCP1E4akVvtqsSfJP/s3840/001.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjB3RXA9XNmOe-BM2YQbOkywoafcT9Dsor1FV-yYqAP7cd6gwMYX1-F6j4rBwKgSbnUdxVpFBQlUGW201n75DsCQ-DzGpeUASZuCS6NOVFUnsFrcJzGYO6aTB6pYISYla_clsGU2F3KsIMHWawRhmR5GkXeM1ulKK1O1tyOCP1E4akVvtqsSfJP/w640-h360/001.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6k24leo_y1KblGxtclY72f7dCIGgrnvqRDbVZXGyHdwyeAUzbdnPAMQryyKyGRx4y9v9Neyqrh_cuhDYoL3Z1bx6PetfEORWBpDFhFDXDK51CFkCvQtBv-gOWYKRQOE4mmncuSyispOqcVCIInZiNsLdjDUHQYLk0sllvsskYorRT_GR_uocX/s1920/002.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1032&quot; data-original-width=&quot;1920&quot; height=&quot;344&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6k24leo_y1KblGxtclY72f7dCIGgrnvqRDbVZXGyHdwyeAUzbdnPAMQryyKyGRx4y9v9Neyqrh_cuhDYoL3Z1bx6PetfEORWBpDFhFDXDK51CFkCvQtBv-gOWYKRQOE4mmncuSyispOqcVCIInZiNsLdjDUHQYLk0sllvsskYorRT_GR_uocX/w640-h344/002.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF-2sKUdjuWiQf7yzXrL70HahP6VkvK-jlZUgi70SgjyKX8SEmvTg-KNKyTBYBd9WJQfiBFyGbIRx_GkHwkT5qE39B84_V8wL0kFlLPlny_s1wuCLpINRk0OLxF1pyDK4rmjtIO16k0vlu5TbOG3tiwoIBIHHH_2IlOEudAV72hHgEG7pyTu1E/s1920/004.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1032&quot; data-original-width=&quot;1920&quot; height=&quot;344&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF-2sKUdjuWiQf7yzXrL70HahP6VkvK-jlZUgi70SgjyKX8SEmvTg-KNKyTBYBd9WJQfiBFyGbIRx_GkHwkT5qE39B84_V8wL0kFlLPlny_s1wuCLpINRk0OLxF1pyDK4rmjtIO16k0vlu5TbOG3tiwoIBIHHH_2IlOEudAV72hHgEG7pyTu1E/w640-h344/004.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8nJnLBLA9Wc04Z5khyphenhyphenbphRPeXE6eJC69j76TEoHvQsM7_fhh4Ecg1PdxC3D8doKvIWqZppzoXLC0GKzQxirmqidMqzd8-TDQB4h1lsdsy7tmZnpHARcP-LeAizpu7X5ePdHyccbhQeeM1vuNjgTDjMHS36yVg1WNY5fjJgQK4GUG88amY0u4c/s2114/Screenshot%202025-08-28%20at%2021-11-50%20Nazuna%20from%20Backstabbed%20in%20a%20Backwater%20Dungeon%20-%203D%20model%20by%20hamster_ruso%20(@hamster_ruso)%20855b836.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1182&quot; data-original-width=&quot;2114&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8nJnLBLA9Wc04Z5khyphenhyphenbphRPeXE6eJC69j76TEoHvQsM7_fhh4Ecg1PdxC3D8doKvIWqZppzoXLC0GKzQxirmqidMqzd8-TDQB4h1lsdsy7tmZnpHARcP-LeAizpu7X5ePdHyccbhQeeM1vuNjgTDjMHS36yVg1WNY5fjJgQK4GUG88amY0u4c/w640-h358/Screenshot%202025-08-28%20at%2021-11-50%20Nazuna%20from%20Backstabbed%20in%20a%20Backwater%20Dungeon%20-%203D%20model%20by%20hamster_ruso%20(@hamster_ruso)%20855b836.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLi6F_GZkgxK-z3TehnUopAP7nRb1bTE1pFPHdjB5AOBUUHR27WYctDPt1UTylv_6TibWM_DRS_fZXOt-oPOUxfrwa_8xjMZK0xhgqPuidfJI4_WOPJj3U-ZOCPVMXHXUUAqh63sn0uBxol_-rwv7jLvD0C_5gH9cvxuPRrl4EmGShHQy9Nvcc/s2114/Screenshot%202025-08-28%20at%2021-12-16%20Nazuna%20from%20Backstabbed%20in%20a%20Backwater%20Dungeon%20-%203D%20model%20by%20hamster_ruso%20(@hamster_ruso)%20855b836.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1182&quot; data-original-width=&quot;2114&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLi6F_GZkgxK-z3TehnUopAP7nRb1bTE1pFPHdjB5AOBUUHR27WYctDPt1UTylv_6TibWM_DRS_fZXOt-oPOUxfrwa_8xjMZK0xhgqPuidfJI4_WOPJj3U-ZOCPVMXHXUUAqh63sn0uBxol_-rwv7jLvD0C_5gH9cvxuPRrl4EmGShHQy9Nvcc/w640-h358/Screenshot%202025-08-28%20at%2021-12-16%20Nazuna%20from%20Backstabbed%20in%20a%20Backwater%20Dungeon%20-%203D%20model%20by%20hamster_ruso%20(@hamster_ruso)%20855b836.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-4yLriCUim9_qKeoYPiIzUvyEEqnKc5mWCTSLNnh-lXYBpBcHClEkRr3wEBxIsna-DPFwZsdhOfEQppFQ5gPs8y5RIPcBwChKrLxjQleKbnT-lig_eA_pAm-xI2LqlXrx7qP9cWsI56DhITWPCYQDk_C_oyZ4FVO9t2SVyNGCq69QSwK7YJkc/s2114/Screenshot%202025-08-28%20at%2021-13-11%20Nazuna%20from%20Backstabbed%20in%20a%20Backwater%20Dungeon%20-%203D%20model%20by%20hamster_ruso%20(@hamster_ruso)%20855b836.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1182&quot; data-original-width=&quot;2114&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-4yLriCUim9_qKeoYPiIzUvyEEqnKc5mWCTSLNnh-lXYBpBcHClEkRr3wEBxIsna-DPFwZsdhOfEQppFQ5gPs8y5RIPcBwChKrLxjQleKbnT-lig_eA_pAm-xI2LqlXrx7qP9cWsI56DhITWPCYQDk_C_oyZ4FVO9t2SVyNGCq69QSwK7YJkc/w640-h358/Screenshot%202025-08-28%20at%2021-13-11%20Nazuna%20from%20Backstabbed%20in%20a%20Backwater%20Dungeon%20-%203D%20model%20by%20hamster_ruso%20(@hamster_ruso)%20855b836.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;A modo de retorno de experiencia, ¿qué cosas he aprendido realizando este modelo?&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Vincular Nurbspath a Armatures a través de una Constraint de tipo &quot;Child Of&quot;&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Si como yo hacéis la cabellera de los personajes con &lt;i&gt;nurbspaths&lt;/i&gt; o las pestañas con segmentos simples con modificador de &lt;i&gt;skin&lt;/i&gt;,&amp;nbsp; sabréis que vincular este tipo de objetos a un &lt;i&gt;armature&lt;/i&gt; para hacer el rig (la articulación) es toda una tortura. Pues resulta que a este tipo de objetos puedes aplicarles un &quot;constraint&quot; (restricción) para que sean hijo del hueso de un objeto de tipo &lt;i&gt;armature&lt;/i&gt;. Al hacer eso las coordenadas se recalcularán y os destrozarán la composición, pero podéis hacer en el botón &quot;Set Inverse&quot; para recuperar la posición inicial. De esta forma resulta muy sencillo poder animar pelos o cejas.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvnUtNi7ZTkwRE5_UpE2I9UPesXsk-iKU57yJVzUfhg_KVP1o6ft8K0rR_j2IhAG7c3R0GOld8tOXK1Sid883IscJZzBGOFJqBOa2MaHEODSuR7GJYPCo7bEOlgpn6YIKrM93LS5EmZmwfBGJO8HTN4Rstu0K8i_Nh9bP-hGmYn0QBlRTBNPBR/s1118/Captura%20de%20pantalla%202025-08-28%20a%20las%2022.22.09.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1118&quot; data-original-width=&quot;804&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvnUtNi7ZTkwRE5_UpE2I9UPesXsk-iKU57yJVzUfhg_KVP1o6ft8K0rR_j2IhAG7c3R0GOld8tOXK1Sid883IscJZzBGOFJqBOa2MaHEODSuR7GJYPCo7bEOlgpn6YIKrM93LS5EmZmwfBGJO8HTN4Rstu0K8i_Nh9bP-hGmYn0QBlRTBNPBR/w460-h640/Captura%20de%20pantalla%202025-08-28%20a%20las%2022.22.09.jpg&quot; width=&quot;460&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Añadir objetos vacíos para utilizar de pivote en los modificadores de Mirror&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Supongo que os habrá pasado ya de liarla con el orden de los modificadores, del estilo que mueves la melena de un personaje en una animación y como el orden de los modificadores no es el correcto se pierde la simetría. Lo que he aprendido es que, en vez de utilizar objetos pivotes (como cabezas o torsos), podemos crear un cubo, posicionarlo como pivote (por ejemplo en el centro de la cabeza o en el centro del torso), borrar todos sus vértices (es decir, dejar el objeto vacío), añadirle una restricción de &quot;Child of&quot; como he mencionado antes para que esté vinculado a un hueso y utilizarlo como pivote para los modificadores de Mirror. De esta forma evito sorpresas como la ya mencionada.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Pivote &quot;genérico&quot; sin restricción de &quot;Child Of&quot;:&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzNswcVJ2scmLZEUy-ljeEHyxbXSi4SJxLSrWrTWl2vt8NkMbJ4RYB6JkKdnxqSndblM_D0QZfkZ5MplgUW6YwLKmRRIlb6fV0Dzm_ubACuXRg62sMuXtq2jRBO2YrbhzipDqxkB5vbm36NQnZpy_eNxotLOmTbXM2WhtN7AIVFsnCzGMZNAUC/s2402/Captura%20de%20pantalla%202025-08-28%20a%20las%2022.35.35.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1118&quot; data-original-width=&quot;2402&quot; height=&quot;298&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzNswcVJ2scmLZEUy-ljeEHyxbXSi4SJxLSrWrTWl2vt8NkMbJ4RYB6JkKdnxqSndblM_D0QZfkZ5MplgUW6YwLKmRRIlb6fV0Dzm_ubACuXRg62sMuXtq2jRBO2YrbhzipDqxkB5vbm36NQnZpy_eNxotLOmTbXM2WhtN7AIVFsnCzGMZNAUC/w640-h298/Captura%20de%20pantalla%202025-08-28%20a%20las%2022.35.35.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;Pivote con restricción de &quot;Child Of&quot;:&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCd7VcvyKxcNo90dvsN-FzGYhCiWbVsAVH5iVc-hrck5mJMACLCesAA1xABdS8O5S5Ts1vLDsb3xp2CEQx_8pvnu5lS0_S4FD-hTSfAhwu9jALmofrxE1a6AikVlhBx3Y_YA84JWH9vF9DSC33VxTFz-teHq6hkw7nNdAdU0x3R9TlvPLuBLA6/s2402/Captura%20de%20pantalla%202025-08-28%20a%20las%2022.35.03.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1118&quot; data-original-width=&quot;2402&quot; height=&quot;298&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCd7VcvyKxcNo90dvsN-FzGYhCiWbVsAVH5iVc-hrck5mJMACLCesAA1xABdS8O5S5Ts1vLDsb3xp2CEQx_8pvnu5lS0_S4FD-hTSfAhwu9jALmofrxE1a6AikVlhBx3Y_YA84JWH9vF9DSC33VxTFz-teHq6hkw7nNdAdU0x3R9TlvPLuBLA6/w640-h298/Captura%20de%20pantalla%202025-08-28%20a%20las%2022.35.03.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Cuando te ofusques, revisa los libros de dibujo de Taco&lt;/h3&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; ¿Proporciones inusuales en la cabeza o los brazos? ¿La cabeza de tu modelo parece un gato y el torso un pollo? Si encuentra dificultades al retrabajar su modelo, te sugiero analizar a artistas como Taco. De hecho, Pascu, de Destripando La Historia, me recomendó uno de sus libros, el cual se ha convertido en una de mis principales referencias. No hace falta que calques el estilo de Taco, pero si estas bloqueado, te servirá para pensar cómo reimplementar la topografía de tu modelo. De hecho, apreciaréis que el modelo final de mi Nazuna se parece muy poco al que os presenté en marzo.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy6hDrq5iVYd-hm7xGkdaHhupWi2IJQAago-KhUpOw1qYx3RHGInuNuikRfryZ2TizkH1iZzIk3BmWIpTaHAIb-peoEaMjckCJ8hTnkj9wtOGi51EUqNn9BoxHRFTr-mtnOuRXFCp1SeQu7yNCLnLH22X8cSLi_Go8DSGZD6hWJIiGmoSDhNfY/s2048/GVP2pHEXQAAGTZb.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2048&quot; data-original-width=&quot;1536&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy6hDrq5iVYd-hm7xGkdaHhupWi2IJQAago-KhUpOw1qYx3RHGInuNuikRfryZ2TizkH1iZzIk3BmWIpTaHAIb-peoEaMjckCJ8hTnkj9wtOGi51EUqNn9BoxHRFTr-mtnOuRXFCp1SeQu7yNCLnLH22X8cSLi_Go8DSGZD6hWJIiGmoSDhNfY/w480-h640/GVP2pHEXQAAGTZb.jpg&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiegHHe0E1jMQM6nkTeSICq6FC_hl0oH-iaFJXVC1ELq7eaNSF5sLix5h-a6XAqClJiQROGG4V9XQHHaugfQzb-_eEN6KO4QLbGF22sYsqJoawVDe8ZVZh6wXY6oXyf5nSY3x13FYECEd9xNHGLOqYopchA62M6f9bju7f3OfsbChrmLwRJFCN/s2047/GVLAvLjXYAA9UKh.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2047&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiegHHe0E1jMQM6nkTeSICq6FC_hl0oH-iaFJXVC1ELq7eaNSF5sLix5h-a6XAqClJiQROGG4V9XQHHaugfQzb-_eEN6KO4QLbGF22sYsqJoawVDe8ZVZh6wXY6oXyf5nSY3x13FYECEd9xNHGLOqYopchA62M6f9bju7f3OfsbChrmLwRJFCN/w640-h480/GVLAvLjXYAA9UKh.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtu2KHLi-HCVfFop5xKnKesc5LeiUjBKHR7Bg_4VIBfI8DqEg9ULi0TyYqb0LHi6khQRMjZChp84t_PYtGg7hmdTosmIiU9LZNO9koeeQ6uo4zB11V_XFRgJjSZ2f2UxTuj9VIIVtRrXN_2b3HM3FaSQ9z-006PlUul_4q2LdA7WlgbMALASHu/s2047/GVP2pHLWUAARbGH.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1536&quot; data-original-width=&quot;2047&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtu2KHLi-HCVfFop5xKnKesc5LeiUjBKHR7Bg_4VIBfI8DqEg9ULi0TyYqb0LHi6khQRMjZChp84t_PYtGg7hmdTosmIiU9LZNO9koeeQ6uo4zB11V_XFRgJjSZ2f2UxTuj9VIIVtRrXN_2b3HM3FaSQ9z-006PlUul_4q2LdA7WlgbMALASHu/w640-h480/GVP2pHLWUAARbGH.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/08/blender-nazuna-backstabbed-in-backwater.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4472516979440536219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4472516979440536219'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/08/blender-nazuna-backstabbed-in-backwater.html' title='[Blender] Nazuna (Backstabbed in a Backwater Dungeon)'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNMBGXlnnQoB5Dpz06EMnJ6h0gduWKFgYz845QHgXlxoqbMKUa9yetYF7WjoaRVp2v6feTkXdNrHpuj29gXeqb4M3DNxUG_DKhvXIHFNDFQGM07W4KnoPO0iCvxtzGyYq9zd92Nx8sMV98kz3l4_ktmmKAgl8hHAu9BSy6mNZ7-zPsP8F7jj3l/s72-w640-h480-c/IMG_6916.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-3606908676206183686</id><published>2025-08-19T00:34:00.012+02:00</published><updated>2025-08-22T18:01:38.320+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blender"/><title type='text'>[Blender] Trucos que he aprendido modelando a Tanya por segunda vez</title><content type='html'>&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Ayer publiqué un nuevo modelo 3D de Tanya Degurechaff (&lt;a href=&quot;https://www.elgeneralfailure.com/2025/08/blender-sketchfab-tanya-degurechaff.html&quot;&gt;enlace&lt;/a&gt;) y en la entrada de hoy quisiera compartiros los trucos que he aprendido la semana pasada mientras la modelaba.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;1.- Usar el modificador de &quot;skin&quot; sobre simples vértices para crear líneas con profundidad.&amp;nbsp;&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Este descubrimiento ha sido muy valioso para mí. Para contextualizar, deseaba recrear el marco dorado de estilo clásico que aparece en las portadas de “Diario de Guerra: Saga of Tanya The Evil”. Inicialmente, intenté hacerlo con un plano simple en el que delineaba el contorno del marco mediante extrusiones (&quot;&lt;i&gt;extrudes&lt;/i&gt;&quot;), lo cual resultó ser un proceso muy lento, ineficaz y depresivo. Con esta técnica rudimentaria, podía dedicar diez minutos sin obtener avances significativos. Para haceros una idea, os comparto aquí la portada que quería usar de inspiración, donde se ve el nivel de complejidad de dicho marco dorado (que rodea toda la composición).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCO6I8sBRrTew0WCcPToaD8Z4cQWRWfiDr6H-I71GxOMldJN0x4cgZt2Nl0NOSsvpQBNTsDX_iulrUoO2XMqK1uekCLYZ02XTpxgwlRTvJAZvNxpW5pWTkJXpLDHR9zIN08s4xD9FiXP91KTLAYnq3yUtpG7eD9z9Q5OZKySIgwqNGvGfFMJ6Y/s1000/11.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1000&quot; data-original-width=&quot;711&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCO6I8sBRrTew0WCcPToaD8Z4cQWRWfiDr6H-I71GxOMldJN0x4cgZt2Nl0NOSsvpQBNTsDX_iulrUoO2XMqK1uekCLYZ02XTpxgwlRTvJAZvNxpW5pWTkJXpLDHR9zIN08s4xD9FiXP91KTLAYnq3yUtpG7eD9z9Q5OZKySIgwqNGvGfFMJ6Y/w456-h640/11.jpg&quot; width=&quot;456&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Después consideré la posibilidad de utilizar nurbs path y curves, una técnica que suelo emplear para la creación del cabello de los personajes. Sin embargo, esta opción añadía una complejidad excesiva al modelado. Finalmente, encontré una solución óptima y sencilla: Crear una ruta de vértices a la que posteriormente aplicaría un modificador “Skin” para generar volumen. Este método resultó mucho más eficiente: siguiendo el contorno, colocaba un vértice, aplicaba una extrusión, colocaba otro vértice y repetía el proceso. De esta manera, en poco más de una hora, el marco estaba terminado.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Es importante destacar que la estructura del marco en el manga presenta una mayor complejidad, ya que los nudos poseen profundidad (permitiendo distinguir con facilidad los puntos de entrada y salida del trazo) y, además, presenta tramos con un trazo más fino o grueso. Si bien esta característica podría replicarse mediante la técnica de vértices y el modificador “skin” (jugando con la coordenada del eje Y y combinando con Control+A para cambiar el grosor del trazo), opté por mantener una estructura plana con trazos uniformes para simplificar el proceso, considerando que, en la composición final, el marco no adquiere una relevancia que justifique una inversión de tiempo excesiva.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNtysfFjVZpqnIqCM9cuiAe4hMq32YIYj0MYeCys1922SXQQx3I4B1OZUcS-zeIDTiiZtkL4SDfflG51D0o8zVToqTo-u6oGOwIUrebLxSgTuQeCFDXi18UJ_i2HMkazhOmv80iIo_zgsYzs_8kmtjbLG4bIqn09oBZNXrb4tD_BHH5sOMSBo8/s3584/Captura%20de%20pantalla%202025-08-18%20a%20las%2022.41.33.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2262&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNtysfFjVZpqnIqCM9cuiAe4hMq32YIYj0MYeCys1922SXQQx3I4B1OZUcS-zeIDTiiZtkL4SDfflG51D0o8zVToqTo-u6oGOwIUrebLxSgTuQeCFDXi18UJ_i2HMkazhOmv80iIo_zgsYzs_8kmtjbLG4bIqn09oBZNXrb4tD_BHH5sOMSBo8/w640-h404/Captura%20de%20pantalla%202025-08-18%20a%20las%2022.41.33.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTw40SY75uEBvUo7KN-zTeY8TMmAesBSk9RxbdT2WmO_gyfJhJOEA9DfYVtiDzW3mj8RR9K8OupoBE-2JfFonb1-77IryRwhNxjefVcES7leM5Bn5ns3xwnXk8Zrmc3oOTz3D8K4xdTn67bmbkuSPkP-UgSCDra-Kqsc0JYrsUYZ6382Dsu3rz/s3584/Captura%20de%20pantalla%202025-08-18%20a%20las%2022.40.01.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2262&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTw40SY75uEBvUo7KN-zTeY8TMmAesBSk9RxbdT2WmO_gyfJhJOEA9DfYVtiDzW3mj8RR9K8OupoBE-2JfFonb1-77IryRwhNxjefVcES7leM5Bn5ns3xwnXk8Zrmc3oOTz3D8K4xdTn67bmbkuSPkP-UgSCDra-Kqsc0JYrsUYZ6382Dsu3rz/w640-h404/Captura%20de%20pantalla%202025-08-18%20a%20las%2022.40.01.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;2.- El motor EEVEE permite efectos muy buenos para aplicar estilos de dibujo.&lt;/h2&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Una de las principales diferencias entre los motores de renderizado EEVEE y Cycles es que EEVEE es menos realista y permite jugar con la vista, implementando nodos como el &quot;Convert Shader to RGB&quot; que no funciona en Cycles (el cual ofrece iluminaciones más realistas al estar basado en el trazado de rayos). De hecho, jugando con los nodos puedes simular cierto nivel de &lt;i&gt;celshading&lt;/i&gt; sin tener que crear un objeto de contorno negro con normales invertidas.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijkmE3qseEr1_xkSEjFZt7taH3HXAkJgd-_bpf9PHxskiSdWdXzRfpIIG30gNVjRIaKIGOd2yYKIV2yaDDYTYmiqkiQOI9PIorIblnR3DVlhja8fpNvZT9kEzBpfaUnX8YHbJW_bAXpn4obOoRVDMra3DGUSejCvkJ_ZDUjJ764O-1slfQCbXy/s3584/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.09.39.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2262&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijkmE3qseEr1_xkSEjFZt7taH3HXAkJgd-_bpf9PHxskiSdWdXzRfpIIG30gNVjRIaKIGOd2yYKIV2yaDDYTYmiqkiQOI9PIorIblnR3DVlhja8fpNvZT9kEzBpfaUnX8YHbJW_bAXpn4obOoRVDMra3DGUSejCvkJ_ZDUjJ764O-1slfQCbXy/w640-h404/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.09.39.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Pero claro, no es tan sencillo como pillar un nodo de Color Ramp, te toca experimentar con los nodos de &quot;Geometry&quot; y jugar con las normales para luego alterar el &lt;i&gt;displacement&lt;/i&gt; del material final. Aquí os dejo, como ejemplo, todos los nodos que tuve que emplear únicamente para el color del pelo:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAk7pmB3yQTUhKjnRlYUAyGMskoe9bbwLRwvIeI5dxsGRd4Xm_U2EZSsFIVmGD5W1EaDoScEHbz0rjC0kgh49W9gng_vRTIZjMiPh1ovMnUSduthzbtaKyUAnT3PUBuGo9xnQ_KJq5oQ2V4mNFhINI9olCFzTLkq7TJk9lnNM_IMXoZ8Q1UVzo/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.10.57.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;946&quot; data-original-width=&quot;2256&quot; height=&quot;268&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAk7pmB3yQTUhKjnRlYUAyGMskoe9bbwLRwvIeI5dxsGRd4Xm_U2EZSsFIVmGD5W1EaDoScEHbz0rjC0kgh49W9gng_vRTIZjMiPh1ovMnUSduthzbtaKyUAnT3PUBuGo9xnQ_KJq5oQ2V4mNFhINI9olCFzTLkq7TJk9lnNM_IMXoZ8Q1UVzo/w640-h268/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.10.57.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDbt3SFqJqbn1J26HCOMz_Px-SEeO66w1dSI6DPAV4O86YfRjloka_eIj7sF-ywGkupltE2lx4RafC3wqwkCz5XoUNh37vEFgyEuVswxdJ98gJePbQ5rvV86V1NWSyykVoIFTqcpMqJ_J5O_cG98u76-LK48lsb5-6UcmdqcEHUswHl9gsk0ri/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.11.48.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;946&quot; data-original-width=&quot;2256&quot; height=&quot;268&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDbt3SFqJqbn1J26HCOMz_Px-SEeO66w1dSI6DPAV4O86YfRjloka_eIj7sF-ywGkupltE2lx4RafC3wqwkCz5XoUNh37vEFgyEuVswxdJ98gJePbQ5rvV86V1NWSyykVoIFTqcpMqJ_J5O_cG98u76-LK48lsb5-6UcmdqcEHUswHl9gsk0ri/w640-h268/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.11.48.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;3.- Ponerle al iris y a las cejas un material de emisión queda genial en escenas oscuras.&lt;/h2&gt;&lt;p&gt;De esta forma podemos ver los ojos del personaje incluso si no hay iluminación.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtcWS7keECVuz_Q5VasIo_q1HjyYGWn3aCfjnL3NYRWgS8PXGqbgtrU8J4aD_J6GZHa1hY7Rsw4b0axYpm2urihCcDif56-Mio9v6mv-GOY4Ur0uDuSEhe_MSwc6AwSFCLzKx4s04vy2l-v0EdgW9UQp4MQpmidMnhl5NgMhm5QdD77N3P1MtA/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.16.31.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1596&quot; data-original-width=&quot;2256&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtcWS7keECVuz_Q5VasIo_q1HjyYGWn3aCfjnL3NYRWgS8PXGqbgtrU8J4aD_J6GZHa1hY7Rsw4b0axYpm2urihCcDif56-Mio9v6mv-GOY4Ur0uDuSEhe_MSwc6AwSFCLzKx4s04vy2l-v0EdgW9UQp4MQpmidMnhl5NgMhm5QdD77N3P1MtA/w640-h452/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.16.31.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;4.- Los motores de juegos o Sketchfab se parecen más al motor Cycles que al EEVEE.&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Como he dicho antes, EEVEE es un motor muy genial para implementar efectos de dibujo, pero en cuanto subes tu modelo a sitios como a Sketchfab o lo exportas a un formato como GLB/GLTF o FBX para utilizarlo en algún juego, te encuentras con que los materiales, una vez importados a Unity/Unreal/Godot, no se parecen a los que estabas empleando en Blender. El principal problema suele estar en nodos como el &quot;Shader to RGB&quot;, que no son compatibles fuera de EEVEE.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUvw8PjatUzzWHdHgMdF2lPzp_5wO7tuou0L0v2EdhlNlMFCFFmeYL98wO13L7zWlavzU27NvBfLMt6sYoUHQ1kNr-zOk_MpuoVdo34yJY6abVthSNE2H5pRX3GUnlNT-ncFqStwYpKi_-MX8RBLTCvoaVtV5T2HYd9JFCLMQsewnpsvhb4gIG/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.46.26.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1596&quot; data-original-width=&quot;2256&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUvw8PjatUzzWHdHgMdF2lPzp_5wO7tuou0L0v2EdhlNlMFCFFmeYL98wO13L7zWlavzU27NvBfLMt6sYoUHQ1kNr-zOk_MpuoVdo34yJY6abVthSNE2H5pRX3GUnlNT-ncFqStwYpKi_-MX8RBLTCvoaVtV5T2HYd9JFCLMQsewnpsvhb4gIG/w640-h452/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.46.26.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;Mi modelo renderizado en EEVEE antes de adaptar los materiales para funcionar con Cycles.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Fg33Bestb2rjBaVw5hsO1FfGVK8xQdIYr4ZcbdUW7zA9L7NrwkH6v5CaVvbOC9SVHdsZxsi6TYPu36i0mBPihHcN6OXBDEzAxOX8rBJuFXgq5NF2m2SPxNs0NP56x9W0n6eHBSc3C9iZxlqc_eYjGvtoJn11xZJxbarlbspI1e0X7RblbcFV/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.44.33.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1596&quot; data-original-width=&quot;2256&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Fg33Bestb2rjBaVw5hsO1FfGVK8xQdIYr4ZcbdUW7zA9L7NrwkH6v5CaVvbOC9SVHdsZxsi6TYPu36i0mBPihHcN6OXBDEzAxOX8rBJuFXgq5NF2m2SPxNs0NP56x9W0n6eHBSc3C9iZxlqc_eYjGvtoJn11xZJxbarlbspI1e0X7RblbcFV/w640-h452/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.44.33.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;Mi modelo visto en Cycles antes de que adaptara los materiales.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;Esto sería un ejemplo de &quot;se ve bien en&amp;nbsp; Blender, pero feo en Unity/Godot/Unreal&quot;.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9_r02mZjxBLdOoEjHLec1t3z4LD_UQMGN-Dqm8BBr9UcSa-GQIJdpgSvwl-ALDksx6AaQAAAvuNr94_q48V1ncUG-Sd4GNjQ6JCw_yG_ndgOqJnAlegsT-28bCebBAKMBSbCb5TeVuQfXXABewhdGeQIB4kp5oi1Riv734TzSMiVQUTV4uUB-/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.48.40.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1596&quot; data-original-width=&quot;2256&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9_r02mZjxBLdOoEjHLec1t3z4LD_UQMGN-Dqm8BBr9UcSa-GQIJdpgSvwl-ALDksx6AaQAAAvuNr94_q48V1ncUG-Sd4GNjQ6JCw_yG_ndgOqJnAlegsT-28bCebBAKMBSbCb5TeVuQfXXABewhdGeQIB4kp5oi1Riv734TzSMiVQUTV4uUB-/w640-h452/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.48.40.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;Mi modelo con los materiales adaptados a Cycles.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Dicho esto, si tienes pensado exportar tu modelo, vale la pena dedicarle tiempo a ver cómo quedan tus materiales en el motor de Cycles.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;En mi caso la adaptación pasó por identificar todos los materiales que hacían uso del &quot;Shader to RGB&quot; y reemplazarlo generalmente por un &quot;Diffuse BSDF&quot;, salvo si éste estaba siendo usado como factor para un Color Ramp, que en ese caso un &quot;Geometry&amp;gt; Normal&quot;,&amp;nbsp;&quot;Geometry&amp;gt; True Normal&quot;&amp;nbsp;o&amp;nbsp;&quot;Geometry&amp;gt; Tangent&quot;&amp;nbsp;me daba mejores resultados.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsoYO4CeQXImO00sMAAZi_ZTfxAJ4oxXVf4K9YgLNMZbH2QHnPff66MG6FNeN4Bt4lCXi6qdgND2wfkyM60JNT0B6z9mqqZgA8laQgRzS5E_7XcKL3IxnFNKJ0zZPfOpU4n-hM1QvFAm7d8SzHD5gP_QYkoUMRQPBTgVPKD7lFZwc2wGugp47X/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.36.47.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1596&quot; data-original-width=&quot;2256&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsoYO4CeQXImO00sMAAZi_ZTfxAJ4oxXVf4K9YgLNMZbH2QHnPff66MG6FNeN4Bt4lCXi6qdgND2wfkyM60JNT0B6z9mqqZgA8laQgRzS5E_7XcKL3IxnFNKJ0zZPfOpU4n-hM1QvFAm7d8SzHD5gP_QYkoUMRQPBTgVPKD7lFZwc2wGugp47X/w640-h452/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.36.47.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;5.- &quot;Hornear&quot; texturas para que tu modelo se vea igual en Blender que en Sketchfab o en cualquier juego.&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Cada juego o motor suele tener su propio sistema de luces. Si quieres hacer que una escena se vea exactamente igual sin tener muchas complicaciones de cabeza, con el motor Cycles puedes hacer un &quot;bake&quot; de las texturas. Es decir, imprimir el resultado final del material aplicado en tu modelo en un fichero de imagen de textura. Es decir, la textura resultante contendrá los datos de iluminación y color conforme los estas viendo ahora mismo. No es complicado, pero sí muy tedioso. Si el material a &quot;hornear&quot; está en objetos complejos (con miles de vértices), esto puede durar más de diez minutos, dependiendo de tu tarjeta gráfica. En objetos normales, sin mucha complejidad, este proceso suele ser casi instantáneo.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Primero tienes que asegurarte que el objeto tenga unas UV bien definidas. Para ello basta con seleccionarlo, irte a la pestaña de edición de UV y si ves que las caras no parecen bien posicionadas en la textura fuente, puedes probar a recrearlas con UV &amp;gt; Smart UV Project. Recomiendo encarnizadamente revisar las UV antes de empezar con el &quot;bake&quot;. Si no está familiarizado con el concepto, las UV pueden entenderse como un “mapa” de vértices utilizado para la texturización de superficies. En otras palabras, describen cómo se proyectan las caras de un objeto en un plano bidimensional, o cómo se asigna cada área del archivo de textura a una cara específica del objeto. En términos generales, puede entenderse como un mapa.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiAlkHeSR8oyM3zJhcFizPVeOMCQW26kobUGC0YQQAeaMdV9zV6uahh8kNeVl88XJ5nHLZPrYfLtWLOiDbppKUCqwMYZwkjhh7M5zehzPqaUKzmxs81-OtuyNzIgWkYlOLDctbatiokjRvABg15SQP8OCzexhq89h6HuKjGkfDP-yig8V7muTP/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.59.36.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1596&quot; data-original-width=&quot;2256&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiAlkHeSR8oyM3zJhcFizPVeOMCQW26kobUGC0YQQAeaMdV9zV6uahh8kNeVl88XJ5nHLZPrYfLtWLOiDbppKUCqwMYZwkjhh7M5zehzPqaUKzmxs81-OtuyNzIgWkYlOLDctbatiokjRvABg15SQP8OCzexhq89h6HuKjGkfDP-yig8V7muTP/w640-h452/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.59.36.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;UV por defecto que propone Blender para la cabeza de mi modelo, con los modificadores sin aplicar.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;Ese vértice rebelde puede dar problemas en determinados motores de juegos.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPcF6wgvNL6z5kHjkikM4g2bu4v6sdbBxxtALCggqKCubg1TRtd9lWacV13VCZdyIbbZtWqegTzyTvqNPQi8kHQkoV-NeE88Rh70CMXUCiNlnk2Mk3ypqHzSx79zgCrgrgPK2P_8TpS_TaTdyUPIEckI08Txku4bkTRwK_VngFtkxtPlEOxC49/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.59.54.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1596&quot; data-original-width=&quot;2256&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPcF6wgvNL6z5kHjkikM4g2bu4v6sdbBxxtALCggqKCubg1TRtd9lWacV13VCZdyIbbZtWqegTzyTvqNPQi8kHQkoV-NeE88Rh70CMXUCiNlnk2Mk3ypqHzSx79zgCrgrgPK2P_8TpS_TaTdyUPIEckI08Txku4bkTRwK_VngFtkxtPlEOxC49/w640-h452/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.59.54.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;UV tras pasar por Smart UV Project, con los modificadores sin aplicar.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidC5NwWyoWcz-HNzPGF74leVvPf7aHTA-kkgPIlA3BaMCTuebQpFymY0tvACg_14QONC1KUoEJ1Sd72Xyb02rg6KzRCcwtLirHw4zgU6sMQLgWn0P4iyuBYq0xzJ9QU4ScK5ygXvvnWXBnXp5KIAOToKH4AItwck5wXEiqSA2TX9CKVq-CLD7p/s2256/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.56.24.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1596&quot; data-original-width=&quot;2256&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidC5NwWyoWcz-HNzPGF74leVvPf7aHTA-kkgPIlA3BaMCTuebQpFymY0tvACg_14QONC1KUoEJ1Sd72Xyb02rg6KzRCcwtLirHw4zgU6sMQLgWn0P4iyuBYq0xzJ9QU4ScK5ygXvvnWXBnXp5KIAOToKH4AItwck5wXEiqSA2TX9CKVq-CLD7p/w640-h452/Captura%20de%20pantalla%202025-08-18%20a%20las%2023.56.24.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;UV recalculado con &quot;Smart UV Project&quot; con los modificadores ya aplicados.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;Para &quot;bakear&quot; el proceso es muy sencillo. Una vez tu material está adaptado para funcionar en Cycles, le añades un nodo de &quot;Texture Image&quot; y creas una imagen con un tamaño que sea una potencia de 8 (por ejemplo 512x512, 1024x1024, 2048x2048, 4096x4096...). Acto seguido, en la pestaña de &quot;Render&quot;, en el motor Cycles te saldrá una opción de &quot;Bake&quot; en el que puedes indicar todos los datos que se tienen que exportar en la textura resultante (luz directa, indirecta, brillo, transiciones, etc) y le das a &quot;Bake&quot;.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNuy5FFPdLyXTUw6ah5VV1fnOe2ptQPoHK1vW-jpwbYqafPYMmr-ovj24yZyKouTVR-RMq2pXQ8-mia5tVfTCiWDDZZZV7xrMR_M7pk_gFM9LatRe7O4TPf6JXpD8eVpZhzfMQwXrpv0XfPyPNm4A9dDL0cwsd9idHPj_se9LnrRcfqSGk_vm_/s2768/Captura%20de%20pantalla%202025-08-19%20a%20las%200.05.08.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1082&quot; data-original-width=&quot;2768&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNuy5FFPdLyXTUw6ah5VV1fnOe2ptQPoHK1vW-jpwbYqafPYMmr-ovj24yZyKouTVR-RMq2pXQ8-mia5tVfTCiWDDZZZV7xrMR_M7pk_gFM9LatRe7O4TPf6JXpD8eVpZhzfMQwXrpv0XfPyPNm4A9dDL0cwsd9idHPj_se9LnrRcfqSGk_vm_/w640-h250/Captura%20de%20pantalla%202025-08-19%20a%20las%200.05.08.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3NxsbsLQ-4cHH-I1ewLnrgycROvdnlLsKnMA7nQzrzT3HXZ9SiPm7sBSveP4TdRUrDBR9Ha1zNrqtjjrI_l8yRqwpqwr_4d9c2tLQamFuqLrMrhzdA-MMTSG3ooR9ms7KacW64-4-WrJbw7oaPyCOeRcfeWIyHA5YfhKcMupf2rNIc9U6vMP9/s1082/Captura%20de%20pantalla%202025-08-19%20a%20las%200.05.30.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1082&quot; data-original-width=&quot;670&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3NxsbsLQ-4cHH-I1ewLnrgycROvdnlLsKnMA7nQzrzT3HXZ9SiPm7sBSveP4TdRUrDBR9Ha1zNrqtjjrI_l8yRqwpqwr_4d9c2tLQamFuqLrMrhzdA-MMTSG3ooR9ms7KacW64-4-WrJbw7oaPyCOeRcfeWIyHA5YfhKcMupf2rNIc9U6vMP9/w397-h640/Captura%20de%20pantalla%202025-08-19%20a%20las%200.05.30.jpg&quot; width=&quot;397&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Cabe destacar que si tu material está siendo usado por varios objetos, 
tendrás que cambiar la &quot;Texture Image&quot; en cada objeto que vayas a &quot;bakear&quot;. De misma forma, 
motores como el de Sketchfab no te permiten materiales con múltiples texturas,
 por lo que lo más sencillo será que dupliques el material a cada vez que &quot;bakees&quot; un objeto y 
lo renombres para recordar qué textura va en qué material.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5KanhEfhqhchocPb2LSgbvcaAi8X-icDJg4Dm4n6wh85-02LKWZtnNCCSDpLskggYpPl9gjabsWAuSP62aeaoeniKhxUTmd5ahRGftIUDNFz7Zx2Gc0d8kZSauSEBjUxoPJ1S5Hmou0nkcTEZaFxzrphQqe_1-C8t8h-0Zvv1S_II2_F0nqQM/s1766/Captura%20de%20pantalla%202025-08-19%20a%20las%200.13.01.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1766&quot; data-original-width=&quot;670&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5KanhEfhqhchocPb2LSgbvcaAi8X-icDJg4Dm4n6wh85-02LKWZtnNCCSDpLskggYpPl9gjabsWAuSP62aeaoeniKhxUTmd5ahRGftIUDNFz7Zx2Gc0d8kZSauSEBjUxoPJ1S5Hmou0nkcTEZaFxzrphQqe_1-C8t8h-0Zvv1S_II2_F0nqQM/w242-h640/Captura%20de%20pantalla%202025-08-19%20a%20las%200.13.01.jpg&quot; width=&quot;242&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;6.- Copiar modificadores con &quot;Control+L&quot;.&lt;/h2&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Esto es algo bastante práctico que no sabía que se podía hacer. Para daros contexto, los peinados de mis personajes suelen tener muchos vértices. En Blender parece liviano porque utilizo una mezcla de nurbs curves + nurbs paths, pero una vez los convierto en malla estos atrapan un volumen exagerado de vértices. A esto sumadle que el peinado de Tanya puede constar perfectamente de unos 50 mechones, lo que puede dar lugar a más de 600.000 vértices en el modelo sin optimizar sólo para el cabello.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Lógicamente yo no puedo publicar un modelo con medio millón de vértices sólo en el pelo. La solución lógica parece que pasa por convertir todos los mechones a malla, unirlos en un único objeto con Control+J (o hacer uso de modificadores de boolean de tipo unión) y aplicarles un modificador de &quot;Decimate&quot; para aplanar las caras. Claro, esto sobre el papel parece una buena idea, pero te acaba deformando la hermosa caballera y encima ésta sigue teniendo un número considerablemente alto de vértices (si lo bajo a 400.000 vértices se ve feísimo).&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;Así que opté por otra técnica: ¿Qué pasa si aplico un &lt;i&gt;decimate&lt;/i&gt;, por separado, a cada mechón? Pues esto fue lo que salvó el pelo de Tanya en el modelo final. Resulta que si en Blender seleccionas varios objetos y pulsas Control+L, te sale un menú desplegable donde una de las opciones es &quot;Copy Modifiers&quot; y que lo que hace es, como suena, copiar TODOS los modificadores del objeto seleccionado al resto. Y bueno, si éste último objeto seleccionado no tiene ningún modificador, te borrará todos los modificadores de todos los objetos seleccionados (lo cual también puede ser práctico).&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDj06pU1ZHTG_Y1EWysYQyyoKoLPyBYIXGQk_cjDvNXwOjWzqhFxczkxYRm-BzGb9WXsSxIOmLzWQJBveJMkehKjIN250JtdOlsvh-OlK2eia2kLTQrmXvH9f2FKGYj1Q6XxpQH2SgjjvUredlm0EKAY6cIhar4dt1r2hhsZdRRhL9qmV0QbvH/s1204/Captura%20de%20pantalla%202025-08-19%20a%20las%200.25.30.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1116&quot; data-original-width=&quot;1204&quot; height=&quot;594&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDj06pU1ZHTG_Y1EWysYQyyoKoLPyBYIXGQk_cjDvNXwOjWzqhFxczkxYRm-BzGb9WXsSxIOmLzWQJBveJMkehKjIN250JtdOlsvh-OlK2eia2kLTQrmXvH9f2FKGYj1Q6XxpQH2SgjjvUredlm0EKAY6cIhar4dt1r2hhsZdRRhL9qmV0QbvH/w640-h594/Captura%20de%20pantalla%202025-08-19%20a%20las%200.25.30.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;De esta forma, a base de copiar y pegar modificadores, podía hacer de forma fácil que los mechones que eran poco visibles tuvieran un factor de &lt;i&gt;decimate&lt;/i&gt; elevado y de paso ser menos agresivo con los &lt;i&gt;decimates&lt;/i&gt; de los mechones del flequillo, haciendo que el pelo de Tanya pasara de 600.000 vértices a 100.000 sin que se apreciara una caída drástica de calidad. Se podría optimizar aún más, pero para Sketchfab ya era un valor aceptable y decidí dejarlo así.&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/08/blender-trucos-que-he-aprendido.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/3606908676206183686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/3606908676206183686'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/08/blender-trucos-que-he-aprendido.html' title='[Blender] Trucos que he aprendido modelando a Tanya por segunda vez'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCO6I8sBRrTew0WCcPToaD8Z4cQWRWfiDr6H-I71GxOMldJN0x4cgZt2Nl0NOSsvpQBNTsDX_iulrUoO2XMqK1uekCLYZ02XTpxgwlRTvJAZvNxpW5pWTkJXpLDHR9zIN08s4xD9FiXP91KTLAYnq3yUtpG7eD9z9Q5OZKySIgwqNGvGfFMJ6Y/s72-w456-h640-c/11.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-4630182900146419674</id><published>2025-08-17T22:14:00.002+02:00</published><updated>2025-08-17T22:33:39.257+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blender"/><category scheme="http://www.blogger.com/atom/ns#" term="Sketchfab"/><category scheme="http://www.blogger.com/atom/ns#" term="tanya"/><category scheme="http://www.blogger.com/atom/ns#" term="tanya degurechaff"/><title type='text'>[Blender] [Sketchfab] Tanya Degurechaff, Saga of Tanya The Evil (portada del tomo 11)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Acabo de publicar un nuevo modelo en mi perfil de Sketchfab: Tanya Degurechaff (de &quot;Diario de Guerra: Saga of Tanya The Evil&quot;).&amp;nbsp; La intención inicial de este modelo era emular la portada del volumen 11 de la obra de Chika Tojo, publicada originalmente en 2018. Y bueno, la realización de este modelo me ha permitido adquirir nuevos conocimientos en Blender, como la vinculación de &lt;i&gt;nurbspaths&lt;/i&gt; a &lt;i&gt;armatures, &lt;/i&gt;añadir un modificador de &lt;i&gt;skin&lt;/i&gt; sobre segmentos para hacer los marcos o el “&lt;i&gt;bakeo&lt;/i&gt;” de texturas. Espero que sea de vuestro agrado: &lt;a href=&quot;https://skfb.ly/pAozS&quot;&gt;https://skfb.ly/pAozS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Este es el segundo modelo de Tanya que publico en Sketchfab. Sin embargo, hace tres años mis conocimientos en Blender eran más limitados y siempre he considerado que el modelo anterior tenía mucho margen de mejora. Del mismo modo, considero que este modelo actual también es susceptible de mejoras, pero en términos de calidad supera por mucho al anterior.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; En este modelo, al basarme en la portada de uno de los mangas de Tanya, opté por emular también la maquetación empleada por la difunta ECC (distribuidora española del manga que quebró en 2024). Y la verdad es que esta rotulación aporta un valor añadido al resultado final, puesto que le da un toque mucho más llamativo.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;sketchfab-embed-wrapper&quot;&gt; &lt;iframe allow=&quot;autoplay; fullscreen; xr-spatial-tracking&quot; allowfullscreen=&quot;&quot; execution-while-not-rendered=&quot;&quot; execution-while-out-of-viewport=&quot;&quot; frameborder=&quot;0&quot; height=&quot;474&quot; mozallowfullscreen=&quot;true&quot; src=&quot;https://sketchfab.com/models/fb725e63784d4839928aa8ea6fe28e56/embed&quot; title=&quot;Tanya Degurechaff, from Saga of Tanya the Evil&quot; web-share=&quot;&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;842&quot; xr-spatial-tracking=&quot;&quot;&gt; &lt;/iframe&gt; &lt;p style=&quot;color: #4a4a4a; font-size: 13px; font-weight: normal; margin: 5px;&quot;&gt; &lt;a href=&quot;https://sketchfab.com/3d-models/tanya-degurechaff-from-saga-of-tanya-the-evil-fb725e63784d4839928aa8ea6fe28e56?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=fb725e63784d4839928aa8ea6fe28e56&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt; Tanya Degurechaff, from Saga of Tanya the Evil &lt;/a&gt; by &lt;a href=&quot;https://sketchfab.com/hamster_ruso?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=fb725e63784d4839928aa8ea6fe28e56&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt; hamster_ruso &lt;/a&gt; on &lt;a href=&quot;https://sketchfab.com?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=fb725e63784d4839928aa8ea6fe28e56&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt;Sketchfab&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;color: #4a4a4a; font-size: 13px; font-weight: normal; margin: 5px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;A continuación, os comparto también una serie de capturas de pantalla que muestran el resultado final del modelo subido a Sketchfab.&lt;/p&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-SXZzWjNP4yJBaTxaX-8Kh2GcCFnDn5FZIINvgXRJC2pCp-Qo_ANeZ8_j5dBXxLA5BKAl5Q04q9x7XjvGXKLJwme61-vRDHCFD-fmgA_dxMi-NAWhIAUSBSUr1pwux7sgP3I-pH2VKVhpmDQvloqCDoW0rXLxT07QntmWlzURawLobVCSC30v/s3360/Captura%20de%20pantalla%202025-08-17%20a%20las%2021.53.12.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2100&quot; data-original-width=&quot;3360&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-SXZzWjNP4yJBaTxaX-8Kh2GcCFnDn5FZIINvgXRJC2pCp-Qo_ANeZ8_j5dBXxLA5BKAl5Q04q9x7XjvGXKLJwme61-vRDHCFD-fmgA_dxMi-NAWhIAUSBSUr1pwux7sgP3I-pH2VKVhpmDQvloqCDoW0rXLxT07QntmWlzURawLobVCSC30v/w640-h400/Captura%20de%20pantalla%202025-08-17%20a%20las%2021.53.12.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLBaZ0-Af225TZwi5WfuLk5tD7SdlsqyODBqBZKfcTAllwc7ZZ0XYJYBz-zWdGP3n35K50kujEPYwZATHoqmZcmbjL052JT2JUyhOjHTfVY6nFiypI8gCMSvTJk4I-nnwYoc1daBG2cJV2gTL9FVD-YTnv7fS0RJop_hC78qzeTF3094XXwEnK/s3360/Captura%20de%20pantalla%202025-08-17%20a%20las%2021.53.36.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2100&quot; data-original-width=&quot;3360&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLBaZ0-Af225TZwi5WfuLk5tD7SdlsqyODBqBZKfcTAllwc7ZZ0XYJYBz-zWdGP3n35K50kujEPYwZATHoqmZcmbjL052JT2JUyhOjHTfVY6nFiypI8gCMSvTJk4I-nnwYoc1daBG2cJV2gTL9FVD-YTnv7fS0RJop_hC78qzeTF3094XXwEnK/w640-h400/Captura%20de%20pantalla%202025-08-17%20a%20las%2021.53.36.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCACuPyJfnUEt9hf16HazYQ8n_DV_nRjqj5sScPSP3W0wEVvV19EvYglG228AvOwkzDtVDdlE8ROi53_HGqlC3CZkogoDrY63KNDapQhZvasMCsNkaASsfoSU5ceDgPqbv76m5m_9w7A2hEuvkqYDvClsstyvHTnQlawDTdcIK4MXkCTwVN4o7/s3360/Captura%20de%20pantalla%202025-08-17%20a%20las%2021.53.51.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2100&quot; data-original-width=&quot;3360&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCACuPyJfnUEt9hf16HazYQ8n_DV_nRjqj5sScPSP3W0wEVvV19EvYglG228AvOwkzDtVDdlE8ROi53_HGqlC3CZkogoDrY63KNDapQhZvasMCsNkaASsfoSU5ceDgPqbv76m5m_9w7A2hEuvkqYDvClsstyvHTnQlawDTdcIK4MXkCTwVN4o7/w640-h400/Captura%20de%20pantalla%202025-08-17%20a%20las%2021.53.51.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwN8SH4YkMTqIfUNhQABoSJKg59o1XJT6SrAhcuNfiHjxA6uipbLFBlIDujlveckxENg8dc2h8df4cd0XpRkr7FINrm3at-JdbQrPycBQy4CB3Xim-UK2eOZAhkOHTrPhHFPosVp5_T6YyVaOPMlk25cj9TKJWQDmAmr6ITBoiuXazLuxGeaIo/s3360/Captura%20de%20pantalla%202025-08-17%20a%20las%2021.54.19.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2100&quot; data-original-width=&quot;3360&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwN8SH4YkMTqIfUNhQABoSJKg59o1XJT6SrAhcuNfiHjxA6uipbLFBlIDujlveckxENg8dc2h8df4cd0XpRkr7FINrm3at-JdbQrPycBQy4CB3Xim-UK2eOZAhkOHTrPhHFPosVp5_T6YyVaOPMlk25cj9TKJWQDmAmr6ITBoiuXazLuxGeaIo/w640-h400/Captura%20de%20pantalla%202025-08-17%20a%20las%2021.54.19.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/08/blender-sketchfab-tanya-degurechaff.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4630182900146419674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/4630182900146419674'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/08/blender-sketchfab-tanya-degurechaff.html' title='[Blender] [Sketchfab] Tanya Degurechaff, Saga of Tanya The Evil (portada del tomo 11)'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-SXZzWjNP4yJBaTxaX-8Kh2GcCFnDn5FZIINvgXRJC2pCp-Qo_ANeZ8_j5dBXxLA5BKAl5Q04q9x7XjvGXKLJwme61-vRDHCFD-fmgA_dxMi-NAWhIAUSBSUr1pwux7sgP3I-pH2VKVhpmDQvloqCDoW0rXLxT07QntmWlzURawLobVCSC30v/s72-w640-h400-c/Captura%20de%20pantalla%202025-08-17%20a%20las%2021.53.12.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18651756.post-1445609702577473754</id><published>2025-07-29T23:41:00.002+02:00</published><updated>2025-07-30T09:27:32.918+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alita"/><category scheme="http://www.blogger.com/atom/ns#" term="blender"/><category scheme="http://www.blogger.com/atom/ns#" term="gally"/><category scheme="http://www.blogger.com/atom/ns#" term="Sketchfab"/><title type='text'>[Blender] [Sketchfab] Gally, Battle Angel Alita (portada del tomo 5)</title><content type='html'>&lt;p style=&quot;text-align: justify;&quot;&gt;&amp;nbsp; &amp;nbsp; Acabo de publicar un nuevo modelo en mi Sketchfab: Gally (Alita), intentando imitar la portada del volumen 5 del maestro Yukito Kishiro que se publicó originalmente en 1993. Se trata de un modelo que empecé en 2023 y con el que me quedé atascado durante mucho tiempo. Dos años más tarde he decidido publicarlo &quot;tal cual&quot;, sin acabar.&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;sketchfab-embed-wrapper&quot;&gt; &lt;iframe allow=&quot;autoplay; fullscreen; xr-spatial-tracking&quot; allowfullscreen=&quot;&quot; execution-while-not-rendered=&quot;&quot; execution-while-out-of-viewport=&quot;&quot; frameborder=&quot;0&quot; height=&quot;632&quot; mozallowfullscreen=&quot;true&quot; src=&quot;https://sketchfab.com/models/5fe7c3454fea4c908bcd8155b1ac760a/embed&quot; title=&quot;Gally, Battle Angel Alita (Volume 5 Cover)&quot; web-share=&quot;&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;842&quot; xr-spatial-tracking=&quot;&quot;&gt; &lt;/iframe&gt; &lt;p style=&quot;color: #4a4a4a; font-size: 13px; font-weight: normal; margin: 5px;&quot;&gt; &lt;a href=&quot;https://sketchfab.com/3d-models/gally-battle-angel-alita-volume-5-cover-5fe7c3454fea4c908bcd8155b1ac760a?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=5fe7c3454fea4c908bcd8155b1ac760a&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt; Gally, Battle Angel Alita (Volume 5 Cover) &lt;/a&gt; by &lt;a href=&quot;https://sketchfab.com/hamster_ruso?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=5fe7c3454fea4c908bcd8155b1ac760a&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt; hamster_ruso &lt;/a&gt; on &lt;a href=&quot;https://sketchfab.com?utm_medium=embed&amp;amp;utm_campaign=share-popup&amp;amp;utm_content=5fe7c3454fea4c908bcd8155b1ac760a&quot; rel=&quot;nofollow&quot; style=&quot;color: #1caad9; font-weight: bold;&quot; target=&quot;_blank&quot;&gt;Sketchfab&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsawaVulA-2p_eRophitmNu76ew8N8_nCCQp4JE6RU1zuSEMhfWNEIk6T8XX8fjq-I3C-EHIWIOKToerkHJvnZYnlAtvJ_9RIFTW31Yvowwz5nMj4FFrJ9JvzdBQQtBwlZvK2zGfyFRSyXO1Iv1cfNARp93krmLY68LVSQyuplwBCZ512CJarI/s2252/000.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1266&quot; data-original-width=&quot;2252&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsawaVulA-2p_eRophitmNu76ew8N8_nCCQp4JE6RU1zuSEMhfWNEIk6T8XX8fjq-I3C-EHIWIOKToerkHJvnZYnlAtvJ_9RIFTW31Yvowwz5nMj4FFrJ9JvzdBQQtBwlZvK2zGfyFRSyXO1Iv1cfNARp93krmLY68LVSQyuplwBCZ512CJarI/w640-h360/000.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;Captura del modelo final publicado en Sketchfab.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi66ayhHE5RFGI_yCj7URCh3R-Ta3pSFEJ_0zLtYs3WHwolnoauPuonoimnxYl8iHR3JAXoa2Vok5bzg_7rFyplBFetsbnS94AIv-NGW3edFFWoESu8-j9zopYK3TokuDwtsnYeKCvvkN_zp9DgvOIyH9eSM5ldPLE7cQTNcjkx3p1WGWGLoaeT/s3584/001.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2262&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi66ayhHE5RFGI_yCj7URCh3R-Ta3pSFEJ_0zLtYs3WHwolnoauPuonoimnxYl8iHR3JAXoa2Vok5bzg_7rFyplBFetsbnS94AIv-NGW3edFFWoESu8-j9zopYK3TokuDwtsnYeKCvvkN_zp9DgvOIyH9eSM5ldPLE7cQTNcjkx3p1WGWGLoaeT/w640-h404/001.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyZKLDbq7Fm3x4la7Fd9kGjeEtIGPLVZLklhotwlsa0DbRMSxdQu_ijocMbLE0uc1H_5NFrKmK1HAAZmemE9drDk91TDYb2Z-DHX6DUWtEVtMIZmjuapWnCMfIfDVkPE_A24B-ebEzhaFniinqZyjrWqN6wtaBgA0_S9DOW4DacPluXDBICmO-/s3584/002.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2262&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyZKLDbq7Fm3x4la7Fd9kGjeEtIGPLVZLklhotwlsa0DbRMSxdQu_ijocMbLE0uc1H_5NFrKmK1HAAZmemE9drDk91TDYb2Z-DHX6DUWtEVtMIZmjuapWnCMfIfDVkPE_A24B-ebEzhaFniinqZyjrWqN6wtaBgA0_S9DOW4DacPluXDBICmO-/w640-h404/002.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;Capturas de la escena en Blender.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRAOc2rH2mn3fTgzY1Yf5H1dbJ_uV1J1DLJlGFfaqMDeCSavVEfzBrnR1MfoayMnUveE9r7yZGeVY1UVOjbrznPGhVMGZQ5F55s6MDFDG5fHnkCfNRSHnknlcs5mLq0iId9BkOnL7QqBGs053h4Jm2gv83pM2DBLGKgALNVkUxMpXNW6p_8XQB/s3584/003.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;2262&quot; data-original-width=&quot;3584&quot; height=&quot;404&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRAOc2rH2mn3fTgzY1Yf5H1dbJ_uV1J1DLJlGFfaqMDeCSavVEfzBrnR1MfoayMnUveE9r7yZGeVY1UVOjbrznPGhVMGZQ5F55s6MDFDG5fHnkCfNRSHnknlcs5mLq0iId9BkOnL7QqBGs053h4Jm2gv83pM2DBLGKgALNVkUxMpXNW6p_8XQB/w640-h404/003.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;Captura de una de las primeras versiones que hice de Gally en 2023.&lt;/p&gt;</content><link rel='replies' type='text/html' href='http://www.elgeneralfailure.com/2025/07/blender-sketchfab-gally-battle-angel.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/1445609702577473754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18651756/posts/default/1445609702577473754'/><link rel='alternate' type='text/html' href='http://www.elgeneralfailure.com/2025/07/blender-sketchfab-gally-battle-angel.html' title='[Blender] [Sketchfab] Gally, Battle Angel Alita (portada del tomo 5)'/><author><name>Le Hamster Ruso</name><uri>http://www.blogger.com/profile/11364833688960614876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsawaVulA-2p_eRophitmNu76ew8N8_nCCQp4JE6RU1zuSEMhfWNEIk6T8XX8fjq-I3C-EHIWIOKToerkHJvnZYnlAtvJ_9RIFTW31Yvowwz5nMj4FFrJ9JvzdBQQtBwlZvK2zGfyFRSyXO1Iv1cfNARp93krmLY68LVSQyuplwBCZ512CJarI/s72-w640-h360-c/000.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>