Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus »

CB-Nero wrote:Moi! Tein valikon tämän koodin pohjalta:
Koodi by Grandi

Code: Select all

   repeat
        Button(100,100,100,20,"Pelaa")
        Button(100,130,100,20,"Asetukset")
        if Button(100,160,100,20,"Poistu") then
              end    // kun painetaan nappulaa
        endif
        drawscreen
   forever

   // x, y koordinaatit
   // w,h koko
   // t painikkeen teksti
   // s painikkeen pyöreys
   Function Button(x,y,w,h,t$,s=5)
        If MouseX()>x And MouseY()>y And MouseX()<x+w And MouseY()<y+h Then
            If MouseDown(1) Then Color 180,180,180 Else Color 240,240,240
            If MouseUp(1) Then Return True  
        Else
            Color 200,200,200
        EndIf          
            Box x+s,y,w-(s*2),h     
            Box x,y+s,w,h-(s*2)
            Circle x,y,s*2
            Circle x+w-s*2,y,s*2
            Circle x+w-s*2,y+h-s*2,s*2
            Circle x,y+h-s*2,s*2
            Color cbblack
            CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
    EndFunction 
Käsittääkseni tuo ei Chaoswormin esimerkillä toimi...
Kyllä sen pitäisi toimia.

Code: Select all

   repeat
        Button(100,100,100,20,"Pelaa")
        If Button(100,130,100,20,"Lataa peli") Then Gosub lataapeli
        if Button(100,160,100,20,"Poistu") then
              end    // kun painetaan nappulaa
        endif
        drawscreen
   forever

lataapeli:
    ClearMouse
    Repeat
        If Button (100,100,100,20,"Level 1") Then Gosub peli
        If Button (100,130,100,20,"Päävalikkoon") Then ClearMouse: Return
        DrawScreen
    Forever

peli:
    MakeError "Hieno peli, eikös vain"
   // x, y koordinaatit
   // w,h koko
   // t painikkeen teksti
   // s painikkeen pyöreys
   Function Button(x,y,w,h,t$,s=5)
        If MouseX()>x And MouseY()>y And MouseX()<x+w And MouseY()<y+h Then
            If MouseDown(1) Then Color 180,180,180 Else Color 240,240,240
            If MouseUp(1) Then Return True  
        Else
            Color 200,200,200
        EndIf          
            Box x+s,y,w-(s*2),h     
            Box x,y+s,w,h-(s*2)
            Circle x,y,s*2
            Circle x+w-s*2,y,s*2
            Circle x+w-s*2,y+h-s*2,s*2
            Circle x,y+h-s*2,s*2
            Color cbblack
            CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
    EndFunction 
EDIT:

Pientä hienosäätöä.

Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 »

Itse kyllä käyttäisin aina Gotoa enkä Gosubia. Se on jotenkin selkeämpi. Ei tarvitse pohtia minne palataan, kun kutsutaan Returnia...
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus »

Latexi95 wrote:Itse kyllä käyttäisin aina Gotoa enkä Gosubia. Se on jotenkin selkeämpi. Ei tarvitse pohtia minne palataan, kun kutsutaan Returnia...
Goton käyttäminen on kyllä muutenkin paljon parempi tapa kuin Gosubin käyttäminen, koska se on nopeampi kuin Gosub:

Code: Select all

'Acer Aspire 5520 suorittaa tämän koodin ~400-1400 millisekunnissa kymmenen kokeilun perusteella
For i = 1 to 1000000
    Goto lolwut
    jeejee:
Next i
lolwut:
Goto jeejee

Code: Select all

'samainen läppäri suorittaa tämän koodin ~700-4000 millisekunnissa kymmenen kokeilun perusteella
For i = 1 to 1000000
    Gosub lolwut
Next i
lolwut:
Return
Käytin esimerkissä Gosubia, koska toisessa tilanteessa Gosub-Return oli nopeampi kirjoittaa kuin 2x Goto, ja jostain syystä käytin siinä toisessakin tilanteessa Gosubia vaikka siitä ei ollutkaan mitään hyötyä.
CB-Nero
Newcomer
Posts: 23
Joined: Fri Apr 01, 2011 4:29 pm

Re: Tyhmät kysymykset (I/2011)

Post by CB-Nero »

Kiitos avusta!

Mitenkä saan vihollisen toimivaan vain, jos pelaaja on "näkyvissä" eli vihollinen ja pelaaja näkyvät yhtä aikaa ruudussa?
Meinaan niinkuin näin(en tee tekstiseikkailua, mutta tämä on esimerkki. :D): (X=pelaaja, Q on vihollinen)
Vihollinen toimii jos:

Code: Select all

Q
---------------------    --------
------------------------    -----
-----                ------------
     -----------------------------
       X
Ja ei toimi jos:

Code: Select all

---------------------    --------
------------------------    -----
-----                ------------
     -----------------------------
------     -----------------------
       X
Ehkä ObjectSightkin voisi toimia, mutta ongelmaksi muodostuu se, että viholliset katsovat aina alussa oikealle, ja jos pelaaja tulee vasemmalta, näkeekö vihollinen pelaajaa...?

//Meinaan vihollisen toimimisella esim. sen suuntautumista pelaajaan ja ampumista...
En osaa koodata, mutta yritän silti.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 »

CB-Nero wrote:Kiitos avusta!

Mitenkä saan vihollisen toimivaan vain, jos pelaaja on "näkyvissä" eli vihollinen ja pelaaja näkyvät yhtä aikaa ruudussa?
Meinaan niinkuin näin(en tee tekstiseikkailua, mutta tämä on esimerkki. :D): (X=pelaaja, Q on vihollinen)
Vihollinen toimii jos:

Code: Select all

Q
---------------------    --------
------------------------    -----
-----                ------------
     -----------------------------
       X
Ja ei toimi jos:

Code: Select all

---------------------    --------
------------------------    -----
-----                ------------
     -----------------------------
------     -----------------------
       X
Ehkä ObjectSightkin voisi toimia, mutta ongelmaksi muodostuu se, että viholliset katsovat aina alussa oikealle, ja jos pelaaja tulee vasemmalta, näkeekö vihollinen pelaajaa...?

//Meinaan vihollisen toimimisella esim. sen suuntautumista pelaajaan ja ampumista...
ObjectSight toimii riippumatta objektin suunnasta, eli vihollinen näkee pelaajan vaikka pelaaja olisikin sen selän takana.
Tarkistus onko objekti ruudulla onnistuu vertaamalla objektin näyttökoordinaatteja (tässä funktiot) ruudun kokoon.
CB-Nero
Newcomer
Posts: 23
Joined: Fri Apr 01, 2011 4:29 pm

Re: Tyhmät kysymykset (I/2011)

Post by CB-Nero »

Latexi95 wrote:
CB-Nero wrote:Kiitos avusta!

Mitenkä saan vihollisen toimivaan vain, jos pelaaja on "näkyvissä" eli vihollinen ja pelaaja näkyvät yhtä aikaa ruudussa?
Meinaan niinkuin näin(en tee tekstiseikkailua, mutta tämä on esimerkki. :D): (X=pelaaja, Q on vihollinen)
Vihollinen toimii jos:

Code: Select all

Q
--------------------- --------
------------------------ -----
----- ------------
-----------------------------
X
Ja ei toimi jos:

Code: Select all

--------------------- --------
------------------------ -----
----- ------------
-----------------------------
------ -----------------------
X
Ehkä ObjectSightkin voisi toimia, mutta ongelmaksi muodostuu se, että viholliset katsovat aina alussa oikealle, ja jos pelaaja tulee vasemmalta, näkeekö vihollinen pelaajaa...?

//Meinaan vihollisen toimimisella esim. sen suuntautumista pelaajaan ja ampumista...
ObjectSight toimii riippumatta objektin suunnasta, eli vihollinen näkee pelaajan vaikka pelaaja olisikin sen selän takana.
Tarkistus onko objekti ruudulla onnistuu vertaamalla objektin näyttökoordinaatteja (tässä funktiot) ruudun kokoon.
Miksi tuolla manuaalissa lukee, että "Ihanteellinen käyttötarkoitus on havaita milloin vihollinen näkee pelaajan. Kulman ja etäisyyden laskeminen yhdessä tämän kanssa mahdollistaa vihollisen "näkökentän", jota voit itse hallita." Mitenköhän tuo hallitseminen onnistuu?

//Eikun juu, luin väärin!
En osaa koodata, mutta yritän silti.
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: Tyhmät kysymykset (I/2011)

Post by Timblex »

CB-Nero wrote: Mitenkä saan vihollisen toimivaan vain, jos pelaaja on "näkyvissä" eli vihollinen ja pelaaja näkyvät yhtä aikaa ruudussa?
Meinaan niinkuin näin(en tee tekstiseikkailua, mutta tämä on esimerkki. :D): (X=pelaaja, Q on vihollinen)
Vihollinen toimii jos:

Code: Select all

Q
---------------------    --------
------------------------    -----
-----                ------------
     -----------------------------
       X
Ja ei toimi jos:

Code: Select all

---------------------    --------
------------------------    -----
-----                ------------
     -----------------------------
------     -----------------------
       X
Ehkä ObjectSightkin voisi toimia, mutta ongelmaksi muodostuu se, että viholliset katsovat aina alussa oikealle, ja jos pelaaja tulee vasemmalta, näkeekö vihollinen pelaajaa...?

//Meinaan vihollisen toimimisella esim. sen suuntautumista pelaajaan ja ampumista...
jos nuo tekstissä olevat viivat ovat seiniä niin objectsight ei toimi tietääkseni.
objektien väliin pitää olla mahdollista vetää suora viiva että objectsight toteutuu.
Kannattaa tehdä niin että jos objektien välinen etäisyys on tarpeeksi pieni niin vihollinen alkaa "toimia"
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
cooliukkeli

Re: Tyhmät kysymykset (I/2011)

Post by cooliukkeli »

Tein .bmp kentän jossa on mustaa ja valkoista. Miten saisin tehtyä sillain että kun objekti osuu tuohon mustalle niin se pomppaa ja kun se on valkoisella ei osu mihinkään niin se vain tippuisi
CB-Nero
Newcomer
Posts: 23
Joined: Fri Apr 01, 2011 4:29 pm

Re: Tyhmät kysymykset (I/2011)

Post by CB-Nero »

timpe99 wrote: jos nuo tekstissä olevat viivat ovat seiniä niin objectsight ei toimi tietääkseni.
objektien väliin pitää olla mahdollista vetää suora viiva että objectsight toteutuu.
Kannattaa tehdä niin että jos objektien välinen etäisyys on tarpeeksi pieni niin vihollinen alkaa "toimia"
Se onkin ihan hyvä, että se ei toimi jos on seinän takana. :)

//
cooliukkeli wrote:Tein .bmp kentän jossa on mustaa ja valkoista. Miten saisin tehtyä sillain että kun objekti osuu tuohon mustalle niin se pomppaa ja kun se on valkoisella ei osu mihinkään niin se vain tippuisi
Voitko kertoa pelistäsi esim. että onko se ylhäältä- vai sivultapäin kuvattu?
Jos se on tasohyppeli, niin sinun pitää pistää tilesterillä ne mustat kohdat kiinteiksi elikkä lataat kuvasi tilesteriin, laitat sen siihen tilesteriin ja menet hit-kohtaan ja näpytät niihin mustiin kohtiin hittiä. Siinä alkuun ohjeita. Jos nyt jotain tajusit...
En osaa koodata, mutta yritän silti.
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: Tyhmät kysymykset (I/2011)

Post by Timblex »

CB-Nero wrote: //
cooliukkeli wrote:Tein .bmp kentän jossa on mustaa ja valkoista. Miten saisin tehtyä sillain että kun objekti osuu tuohon mustalle niin se pomppaa ja kun se on valkoisella ei osu mihinkään niin se vain tippuisi
Voitko kertoa pelistäsi esim. että onko se ylhäältä- vai sivultapäin kuvattu?
Jos se on tasohyppeli, niin sinun pitää pistää tilesterillä ne mustat kohdat kiinteiksi elikkä lataat kuvasi tilesteriin, laitat sen siihen tilesteriin ja menet hit-kohtaan ja näpytät niihin mustiin kohtiin hittiä. Siinä alkuun ohjeita. Jos nyt jotain tajusit...
cooliukkelihan sanoi että kenttä on .bmp-kuva joten siihen ei voi tehdä mitään muutoksia.
kentän pitäisi olla .til tiedosto että siihen voisi laittaa hit-kerroksen.
Ja tuon saa tehtyä niin että ottaa aina pickcolorilla yhden pikselin pelihahmon jokaiselta sivulta ja sitten käyttää getrgb-funktiota selvittääkseen värin ja jos väri on musta niin laitetaan pelihahmo pomppaamaan
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus »

timpe99 wrote:
CB-Nero wrote: //
cooliukkeli wrote:Tein .bmp kentän jossa on mustaa ja valkoista. Miten saisin tehtyä sillain että kun objekti osuu tuohon mustalle niin se pomppaa ja kun se on valkoisella ei osu mihinkään niin se vain tippuisi
Voitko kertoa pelistäsi esim. että onko se ylhäältä- vai sivultapäin kuvattu?
Jos se on tasohyppeli, niin sinun pitää pistää tilesterillä ne mustat kohdat kiinteiksi elikkä lataat kuvasi tilesteriin, laitat sen siihen tilesteriin ja menet hit-kohtaan ja näpytät niihin mustiin kohtiin hittiä. Siinä alkuun ohjeita. Jos nyt jotain tajusit...
cooliukkelihan sanoi että kenttä on .bmp-kuva joten siihen ei voi tehdä mitään muutoksia.
kentän pitäisi olla .til tiedosto että siihen voisi laittaa hit-kerroksen.
Mitä ihmettä, bitmap-kuvaan voi kyllä tehdä muutoksia esim. Paintilla.

Uskoisin, että tuolla lihavoidulla kohdalla tarkoitettiin sitä, että käytetään sitä .bmp-kuvaa tilesettinä tilesterissä ja sitten tehdään tilesterissä siitä oikean näköinen tilemappi. Se on kuitenkin huono idea siksi, että koskaan ei kannata käyttää tilesteriä, jos sen vain pystyy jotenkin välttämään - TileGen on parempi ohjelma tilemappien tekemiseen.
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Viltzu »

Eihän cooliukkeli ole puhunut mitään, että haluaisi tehdä tilemapin siitä.

Jos haluat käyttää sitä karttana, katso ukkelin kohdalla oleva väri GetPixel komennolla esimerkiksi, ja sen mukaan sitten säädät. Tähän tarkoituksene sopivat ainakin seuraavat komennot: PickColor, PickImageColor, GetPixel ja GetPixel2. PickColoreistakin taisi olla toinen komento (PickColor2 jne), mutta muistaakseni niissä ei ollut huomattavaa nopeuseroa.
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: Tyhmät kysymykset (I/2011)

Post by Timblex »

Chaosworm wrote: Mitä ihmettä, bitmap-kuvaan voi kyllä tehdä muutoksia esim. Paintilla.
Oho oli tullut varmaan ajatuskatko :shock:
Tarkoitin siis että mitään muutoksia Tilesterillä
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
CB-Nero
Newcomer
Posts: 23
Joined: Fri Apr 01, 2011 4:29 pm

Re: Tyhmät kysymykset (I/2011)

Post by CB-Nero »

Miten voin tallentaa tiedostoon joukon vihollisia, niiden paikat ja elämät, kun ne on klooneja yhdestä objektista. (tehty typellä) Ne on määritelty data-kerroksen avulla. Jos tallentaa kesken pelin, ja on ympäriltä tuhonnut vihollisia, ettei sitten peliä ladatessa ole niiden vihollisten keskellä taas...
En osaa koodata, mutta yritän silti.
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus »

CB-Nero wrote:Miten voin tallentaa tiedostoon joukon vihollisia, niiden paikat ja elämät, kun ne on klooneja yhdestä objektista. (tehty typellä) Ne on määritelty data-kerroksen avulla. Jos tallentaa kesken pelin, ja on ympäriltä tuhonnut vihollisia, ettei sitten peliä ladatessa ole niiden vihollisten keskellä taas...
Käyt ne kaikki läpi.

Code: Select all

filu = OpenToWrite ("tallennus.txt")
For ivihu.vihut = Each vihut
    WriteLine filu, Str(ObjectX(ivihu\obj)
    WriteLine filu, Str(ObjectY(ivihu\obj)
    WriteLine filu, Str(ivihu\elämät)
Next ivihu
CB-Nero
Newcomer
Posts: 23
Joined: Fri Apr 01, 2011 4:29 pm

Re: Tyhmät kysymykset (I/2011)

Post by CB-Nero »

Chaosworm wrote:
CB-Nero wrote:Miten voin tallentaa tiedostoon joukon vihollisia, niiden paikat ja elämät, kun ne on klooneja yhdestä objektista. (tehty typellä) Ne on määritelty data-kerroksen avulla. Jos tallentaa kesken pelin, ja on ympäriltä tuhonnut vihollisia, ettei sitten peliä ladatessa ole niiden vihollisten keskellä taas...
Käyt ne kaikki läpi.

Code: Select all

filu = OpenToWrite ("tallennus.txt")
For ivihu.vihut = Each vihut
WriteLine filu, Str(ObjectX(ivihu\obj)
WriteLine filu, Str(ObjectY(ivihu\obj)
WriteLine filu, Str(ivihu\elämät)
Next ivihu
Mitenköhän lukeminen sitten onnistuu, kun rivien määrää ei tiedä ja jos sen jälkeen tulee vielä erilaisia vihollisia joita on myös tietämätön määrä...
En osaa koodata, mutta yritän silti.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by valscion »

CB-Nero wrote:
Chaosworm wrote:
CB-Nero wrote:Miten voin tallentaa tiedostoon joukon vihollisia, niiden paikat ja elämät, kun ne on klooneja yhdestä objektista. (tehty typellä) Ne on määritelty data-kerroksen avulla. Jos tallentaa kesken pelin, ja on ympäriltä tuhonnut vihollisia, ettei sitten peliä ladatessa ole niiden vihollisten keskellä taas...
Käyt ne kaikki läpi.

Code: Select all

filu = OpenToWrite ("tallennus.txt")
For ivihu.vihut = Each vihut
WriteLine filu, Str(ObjectX(ivihu\obj)
WriteLine filu, Str(ObjectY(ivihu\obj)
WriteLine filu, Str(ivihu\elämät)
Next ivihu
Mitenköhän lukeminen sitten onnistuu, kun rivien määrää ei tiedä ja jos sen jälkeen tulee vielä erilaisia vihollisia joita on myös tietämätön määrä...
Lukeminen onnistuu vastaavasti komennolla ReadLine. Kirjoita tallennustiedostoon viimeisen vihollisen jälkeen jokin tietty merkkijono, niin tiedät että olet lukenut kaikkien vihujen tiedot läpi. Voit myös tiedoston alkuun kirjoittaa vihujen määrän ja mitä ikinä haluatkaan. Jos käytät pelissä Rand- tai Rnd-funktioita, niin käytä ihan pelin alussa Randomize-komentoa ja ota talteen käyttämäsi siemenluku. Sitten tallentaessasi viet myös kyseisen siemenluvun muistiin ja ladatessasi tallennuksen käytät sitä arvoa uudelleen Randomize-komennossa. Jotenkuten näin:

Code: Select all

Global siemenluku // Että voi käyttää myös funktioissa
siemenluku = Timer()
Randomize siemenluku

Repeat
    ....peli....
    If KeyHit( cbKeyS ) Then tallennapeli()
    If KeyHit( cbKeyL ) Then lataapeli()
Forever

Function tallennapeli()
    f = OpenToWrite("tallennustiedosto.txt")
        WriteLine f, siemenluku
    CloseFile f
EndFunction

Function lataapeli()
    f = OpenToRead("tallennustiedosto.txt")
        siemenluku = Int( ReadLine(f) )
    CloseFile f
    // Alustetaan satunnaislukugeneraattori
    Randomize siemenluku
EndFunction 
Tällä tavalla saat siis vihollisten satunnaisen ilmestymisen toimimaan tallennetun pelin tapaisesti.
EDIT:

D'oh! Lukemisesta ehkäpä hieman parempi vinkki alta Sly_Jack0:lta...

Last edited by valscion on Mon Oct 10, 2011 9:16 pm, edited 1 time in total.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2011)

Post by Sly_Jack0 »

Tai hoida lukeminen

Code: Select all

f = OpenToRead("Tiedosto")

While Not Eof(f)
    //Lue tiedot
Wend
silmukassa.
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2011)

Post by jaahas »

Olen tekemässä Tower Defence tyyppistä peliä ja pitäisi mahdollisimman nopeasti ja helposti tarkistaa onko vihollisia tarpeeksi lähellä, jos on vihollisen id painetaan torniin muistiin, jotta se tunnistaisi seuraavalla kerralla saman vihollisen ja ampuisi sitä, mutta jos vihollinen kuolee tai lähtee tornin vaikutusalueelta pois pitää hankkia uusi kohde. Pelissä on siis 12 eri tornia ja 20 eri vihollista ja niiden välille pitäisi tehdä tarkistus. Miten onnistuisi?
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2011)

Post by Sly_Jack0 »

https://github.com/SlyJack0/CoolTD/blob ... s/tower.CB Tuolta, UpdateTowers()-funktiosta voit katsoa, mitenkä minä tein vastaavan systeemin.

Elikkä siis, jos ei koodista selviä tarpeeksi: tornit ovat TOWER typessä ja niillä on kenttä "targetId". Viholliset ovat typessä ENEMY ja niillä on kenttä "id", johon tallennetaan vihollista luotaessa vihollisen id, joka saadaan ConvertToInteger()-funktiolla. Jos tornilla ei ole vielä kohdetta (targetId = 0), käydään kaikki viholliset läpi ja jos vihollinen on tornin kantaman sisällä asetetaan tornin targetId vihollisen id:ksi (kyseisessä koodissa otetaan huomioon lentvät viholliset, mutta siitä ei tarvitse välittää). Sitten taas, jos tornilla on kohde (targetId <> 0) (ja se on vielä elossa), asetetaan tEnemy.ENEMY osoittamaan kyseiseen instanssiin ENEMY-typessä (ConvertToType()-funktio). Tässä kohdassa hoidetaan sitten tähtäys ja ampuminen. Sitten vielä tarkistetaan, että jos vihollinen on liikkunut tornin kantaman ulkopuolella, asetetaan tornin targetId nollaksi, jolloin se etsii taas uuden kohteen.
Locked