# Worms-part3 # ## What's new - projectiles - worms zijn nu upgraded entities die programma's in een simpele domein-specifieke taal zijn geschreven - program class/factory specificatie - worm: formeel en informeel - food/projectile/team/helper: formeel - execution of programs: niet ## Game world - projectiles - functies voor toevoegen/verwijderen toevoegen - defensief - checken of projectiel in world - constant time - mogen op impassable terrein - mogen **NIET** langs impassable - Ask world for all objects of given type T ## worms - namen mogen nu ook underscores ## Food - food kan vergiftigd worden door wizard _WTF???_ - Als food created altijd healthy - spell van wizard kan eten vergiftigen/gezond maken Als worm overlapt met 2 stukjes eten, random gekozen welk - gezond: +10% - vergiftigd: -20% Eten kost 8 action points als niet genoeg -> niet eten ## 1.8 firing and projectiles - initially rifle en bazooka ### fire() method - random select rifle/bazooka - create proper projectile add to game world - loose action points afhankelijk van soort wapen - nooit meer dan 30 - niet genoeg of niet in wereld -> niet vuren - nominaal - geen specificatie #### shape - spherical - dichtheid: 7800 kg/m^3 - hitpoints bepalen impact op doelwit - mogen gedeeltelijk of volledig op impassable - **NIET** adjacent #### locatie Locatie word afgeleid van worm orientatie is gelijk aan worm locatie is buiten de worm in de richting van orientatie zodat het naast de worm is #### bewegen Afgevuurd met een kracht F voor 0.5s Fire method return alleen projectiel, moved alleen nadat de method jump opgeroepen wordt. Projectiel beweegt totdat het een muur of worm raakt. Projectielen mogen springen over kortere afstand dan hun radius tegengesteld tot worm Als bij vertrek iets raakt, projectiel springt over 0.0m #### hit Als worm geraakt, dus gedeeltelijk overlapt, hitpoints afgetrokken van worm als meerdere raakt, bij allemaal aftrekken. Als projectiel impassable raakt, blijft op die plek. Als worm vuurt en locatie overlapt met projectiel, de worm die vuurt zal geraakt worden door die projectiel en projectiel wordt niet afgevuurd. method returned null. Andere classes mogen NIET aangepast worden door projectiel als dat wel nodig is, eerst code herstructureren. zie pagina 13 ### rifle projectiel massa 10g kracht 1.5N hit points: positief random even integer numbers <= 10 kost 10 action points worm hit points - hit points projectiel ### bazooka massa 300g kracht 2.5 - 9.5N afh van action points worm kracht = 2.5 + (action points) / 8 hit points: oneven random integer <= 7 worm hit points = hit points - round(projectiel * force) kost 25 action points ## Teams Worm toevoegen/verwijderen logaritmisch alfabetische lijst lineair ## 1.10 Wizard Kan 'spell' op object zetten Word actief na command en cast 1 spell als het spel minstens 2 objecten heeft. geen class castSpell in world defensief geen documentatie modulair voor nieuwe objecten Kies random 2 objecten: - worm en worm zelfde team - hit points = floor(som / 2) - worm en worm niet zelfde team - kleine worm +5 hit points van grotere worm - Als grotere worm < 5 hit points dan alles naar klein worm - Worm en food - worm eet food maar food niet destroyed - worm en projectiel - worm hit door projectiel - projectiel krijgt nieuw random hit points - food en food - verander van staat healthy <-> poisened - food en projectiel - beide vernietigd - projectiel en projectiel - hit points increased by 2 zonder over maximum te gaan ## 1.11 Programs