3.6 KiB
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
- functies voor toevoegen/verwijderen toevoegen
- 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
- radius hangt van massa af
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