Tyhmät kysymykset (I/2009)
Re: Tyhmät kysymykset
Muuta nuo lopetusehdot muotoon 'suurempi kuin' ja 'pienempi kuin', koska 255 ei ole jaollinen kahdella, eli 'yhtä kuin' ehdot eivät täyty koskaan.
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: Tyhmät kysymykset
kiitos...
Miten päivitän Rand: it?
Miten päivitän Rand: it?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Re: Tyhmät kysymykset
Aina kun käytetään rand()-funktiota se se arpoo uuden luvun, eli luupissa se arpoo aina uudestaan.
Re: Tyhmät kysymykset
Mikäs tässä koodissa on vikana?
Code: Select all
SCREEN 700,480
FrameLimit 40
map=LoadMap("data/map01.til","data/tileset.png")
alus=LoadObject("Data/Alus.Png")/////Mav katoaa,jos tämän rivin poistaa
Repeat
DrawScreen
Forever
programmer of DSG wrote:EDIT:aika hauska peli, vähän tylsä
Re: Tyhmät kysymykset
Ei tuossa kyllä mitään vikaa ole (paitsi tietenkin se, että se ei tee mitään, mutta oletan sen olevan vain ajan kysymys). Mitään mavia ei siis tullut itselleni (vaihdoin tietysti kuvan/kartan cb:n medioihin, mutta sen ei pitäisi vaikuttaa).
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: Tyhmät kysymykset
Hmm,Outoa että minulle tuosta koodista tulee mav. Mistähän se johtuu?
programmer of DSG wrote:EDIT:aika hauska peli, vähän tylsä
Re: Tyhmät kysymykset
Itselläni tuli tupla MAV. En tiedä syytä, mutta koodi toimi kun lisäsin loppuun rivin text 0,0,""
Quidquid latine dictum sit, altum videtur.
Voitot: Viikkokisa XVII
Voitot: Viikkokisa XVII
Re: Tyhmät kysymykset
Jos vois joku nyt hieman auttaa tässä
Minkä takia siis raha ei muutu sadasta kahteenkymmeneen? Eikä tuo Reppu teksti ilmesty kun painetaan 1
Code: Select all
Locate 20,20
AddText "Olet nyt kotona. Mitä otat mukaasi?"
Locate 320,340
AddText "Rahat: "+raha
DrawScreen
Locate 40,40
AddText "1. Repun"
Locate 40,60
AddText "2. Muuta tavaraa"
DrawScreen
Repeat
If KeyHit(79) Then Gosub repun
If KeyHit(cbkeyb) Then Gosub mt
Forever
repunm:
WaitKey
//Repun\\
repun:
Locate 300,360
AddText "Reppu"
raha=20
DrawScreen
Goto pa
//mt\\
mt:
..koodia..
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Re: Tyhmät kysymykset
Sinun pitää päivittää ne tekstit näytöllä, että näet rahan muuttumisen. Suosittelen käyttämään text:iä addtext:in sijasta. Ja gosub-lohkojen pitäisi loppua return:iin.
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: Tyhmät kysymykset
Miksei Ukko ammu?!
Code: Select all
SCREEN 420,300
Type AMMUS
Field obj
End Type
Type PORTAALI
Field obj
EndType
FrameLimit 40 'rajoita nopeutta
DrawToWorld ON
pum=LoadSound("media\gun 1.wav")
mortal=LoadImage("media\mortal.bmp")
SetWindow "Mortal",0,"Mahdatkohan nyt olla järjissäsi?!"
record=Timer()
Repeat
Color cblightgreen
Locate 0,0
AddText "Hyvää työtä, kohde 31455!"
DrawScreen
WaitKey
AddText "Valitettavasti minun täytyy nyt..."
DrawScreen
WaitKey
AddText "..kertoa sinulle testielämyksesi olevan lopussa."
DrawScreen
WaitKey
AddText "Nyt sinun täytyy pudottaa tuo hassu portaalipyssy."
DrawScreen
WaitKey
AddText "Selvä. Haluatko tietää, mitä tapahtuu jos et?"
DrawScreen
WaitKey
AddText "Sinua kidutetaan aina kuolemaasi asti."
DrawScreen
WaitKey
AddText "Joten, sinun täytyy pudottaa se!"
DrawScreen
WaitKey
AddText "PUDOTA SE!"
DrawScreen
WaitKey
AddText "Älä pelkää, sinua ei kiduteta."
DrawScreen
WaitKey
AddText "AINOASTAAN TAPETAAN!"
DrawScreen
WaitKey
PlaySound pum
ClearText
DrawImage mortal,0,0
DrawScreen
WaitKey
AddText "LADATAAN"
DrawImage mortal,0,0
DrawScreen
Goto peli
Forever
'##########################################################
peli:
ClearText
kartta=LoadMap("media\cdm2.til","media\tileset.bmp")
ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
keltport=LoadObject("media\kelt.png")
sinport=LoadObject("media\sin.png")
vihu=LoadObject("media\soldier.bmp",72)
ShowObject pati,OFF
ShowObject keltport,OFF
ShowObject sinport,OFF
kuva=1
eventtimer=0
vihuonkuollut=0
dialogitimer=Timer()
PositionObject sinport,-400,760
PositionObject keltport,-400,760
PositionObject vihu,-300,760
SetupCollision ukko, vihu, 2, 2, 2
SetupCollision ukko, kartta, 1, 4, 2
SetupCollision vihu, kartta, 1, 4, 2
AddText "Nuolista ohjaa, CTRL ampuu, space moraa"
Repeat
'dialogi
If dialogitimer+5000<Timer() Then
ClearText
AddText "Et voi paeta!"
AddText "Käytävillä on vartioita juuri sinua varten."
AddText "Älä yritäkkään!"
EndIf
If dialogitimer+10000<Timer() Then
ClearText
AddText "No yritit sitten"
AddText "Haluan vain kivuttomamman kuoleman sinulle"
AddText "Jos antaudut nyt, sinua ei kiduteta"
EndIf
If dialogitimer+20000<Timer() Then
ClearText
AddText "Eikä tapeta"
EndIf
If dialogitimer+25000<Timer() Then
ClearText
AddText "Äh. Keskustellaan siitä sitten joskus."
AddText "Nyt sinun on vain keskityttävä antautumaan"
EndIf
'Ohjaa ukkoa NUOLILLA
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
'näkeekö ukko vihun ja toisinpäin
If CanSee(ukko, vihu, 60) And vihuonkuollut=0 Or ObjectsOverlap (ukko,vihu,3) And vihuonkuollut=0 Then ShowObject vihu,ON Else ShowObject vihu,OFF
If CanSee(vihu, ukko, 60) And vihuonkuollut=0 Or ObjectsOverlap (ukko,vihu,3) And vihuonkuollut=0 Then PointObject vihu,ukko
'ukko moraa vihun
If CanSee(ukko, vihu, 60) And Distance2 (ukko,vihu)<50 And KeyHit(cbkeyspace) Then vihuonkuollut=1
If cansee(vihu,ukko,60) And vihuonkuollut=0 And Distance2 (ukko,vihu)>150 Then MoveObject vihu,1
If cansee(vihu,ukko,60) And vihuonkuollut=0 And Distance2 (ukko,vihu)<150 And GetMap(2,ObjectX(vihu),ObjectY(vihu))= 0 Then MoveObject vihu,-1
'teleporttaus
If ObjectsOverlap(ukko,sinport,3) And Timer() > eventtimer + 1000 Then
CloneObjectPosition ukko,keltport
eventtimer=Timer()
EndIf
If ObjectsOverlap(ukko,keltport,3) And Timer() > eventtimer + 1000 Then
CloneObjectPosition ukko,sinport
ShowObject keltport,ON
eventtimer=Timer()
EndIf
'###########################################
'VIHUN AMPUMISSYSTEEMI######################
'###########################################
'Ammu-systeemi. Vain, jos ase on ladattu
If CanSee(vihu, ukko, 60) And reload2=0 And vihuonkuollut=0 Then
PlaySound pum
luoti.AMMUS = New(AMMUS) 'luo uusi AMMUS
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,vihu
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,vihu
reload2=20 'aseen lataus
EndIf
'päivitä aseen lataaminen
If reload2>0 Then reload2=reload2-1
'Päivitä kaikki ammukset
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,10
If GetMap(2,ObjectX(luoti\obj),ObjectY(luoti\obj))= 1 Then
DeleteObject luoti\obj 'poista objekti
Delete luoti 'poista luoti kokonaan
EndIf
'###########################################
'UKON AMPUMISSYSTEEMI#######################
'###########################################
'Ammu-systeemi. Vain, jos ase on ladattu
If reload=0 And KeyDown (cbkeyrcontrol) Then
portal.PORTAALI = New(PORTAALI) 'luo uusi AMMUS
portal\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition portal\obj,ukko
'käännetään pati samaan suuntaan
CloneObjectOrientation portal\obj,ukko
reload=20 'aseen lataus
EndIf
'päivitä aseen lataaminen
If reload>0 Then reload=reload-1
'Päivitä kaikki ammukset
For portal.PORTAALI = Each PORTAALI
MoveObject portal\obj,6
If GetMap(2,ObjectX(portal\obj),ObjectY(portal\obj))= 1 Then
kuva=kuva*(-1) 'vaihdetaan keltport sinportin, tai toisinpäin
If kuva=1 Then CloneObjectPosition sinport,portal\obj
If kuva=1 Then ShowObject sinport,ON
If kuva=-1 Then ShowObject keltport,ON
If kuva=-1 Then CloneObjectPosition keltport,portal\obj
DeleteObject portal\obj 'poista objekti
Delete portal 'poista pluoti kokonaan
EndIf
Function ObjectDirection(_obj1, _obj2) 'näkyykö vihu
a# = GetAngle2(_obj1, _obj2) - ObjectAngle(_obj1)
If a > 180 Then a = a - 360
If a < -180 Then a = a + 360
Return a
EndFunction
Function CanSee(_obj1, _obj2, _fov)
// Ensin tarkistetaan että kakkonen on ykkösen näkökentässä
If Abs(ObjectDirection(_obj1, _obj2)) > _fov Then Return False
// Tarkistetaan ettei ole seinää välissä
Return ObjectSight(_obj1, _obj2)
EndFunction
Next portal
Next luoti
CloneCameraPosition ukko
DrawGame
DrawScreen
Until EscapeKey()
Re: Tyhmät kysymykset
Laita ainakin funktiot erikseen kaikkien looppien ulkopuolelle, hyvä tapa on sijoittaa ne koodin loppuun tai erilliseen tiedostoon. Toisin sanoen älä siis määrittele funktioita loopissa.
EDIT: Sitten tuo dialogitsydeemi: Eikös sen voisi tehdä jotenkin niin, että vain kerran lisättäisiin AddTextit eikä joka looppauskierroksella kun If-lausekkeen ehto täyttyy? Tuo nimittäin ainakin hidastaa peliä.
EDIT2: Ja korjaileppa hieman tuota sisennystä... se on lähes oikein, mutta ei vielä ihan kumminkaan
EDIT: Sitten tuo dialogitsydeemi: Eikös sen voisi tehdä jotenkin niin, että vain kerran lisättäisiin AddTextit eikä joka looppauskierroksella kun If-lausekkeen ehto täyttyy? Tuo nimittäin ainakin hidastaa peliä.
EDIT2: Ja korjaileppa hieman tuota sisennystä... se on lähes oikein, mutta ei vielä ihan kumminkaan
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
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Tyhmät kysymykset
Siinähän on DrawScreen komennot... *mutinaa*TheFish wrote:Sinun pitää päivittää ne tekstit näytöllä, että näet rahan muuttumisen. Suosittelen käyttämään text:iä addtext:in sijasta. Ja gosub-lohkojen pitäisi loppua return:iin.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Re: Tyhmät kysymykset
Mitäs ne hyödyttää jos niitä ei suoriteta kuin kerran? Ja se drawscreen ei muutenkaan päivitä tekstejä, se vain piirtää ne.Jani wrote:Siinähän on DrawScreen komennot... *mutinaa*TheFish wrote:Sinun pitää päivittää ne tekstit näytöllä, että näet rahan muuttumisen. Suosittelen käyttämään text:iä addtext:in sijasta. Ja gosub-lohkojen pitäisi loppua return:iin.
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: Tyhmät kysymykset
Niin, eli siis toisin sanoen AddText lisää tekstin näytölle eikä se muutu kutsumisen jälkeen. Se on ja pysyy samana kunnes ClearTextillä se poistetaan.TheFish wrote:Mitäs ne hyödyttää jos niitä ei suoriteta kuin kerran? Ja se drawscreen ei muutenkaan päivitä tekstejä, se vain piirtää ne.Jani wrote:Siinähän on DrawScreen komennot... *mutinaa*
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
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Tyhmät kysymykset
Järkevä kyselee taas...
Miten saan sillain et.. Jos teksti reppu ON jo pelissä, niin se sitten lukee siinä kun otetaan toinenkin tavara?
Ja jos sitä ei oo, niin sitten ei lue
EDIT: Keksin!
EDIT2: Kuinka teen tarkistuksen että jos esim. laseja ei ole ostettu niin reppu ei vie liikaa rahaa? Oliko hankala?
Miten saan sillain et.. Jos teksti reppu ON jo pelissä, niin se sitten lukee siinä kun otetaan toinenkin tavara?
Ja jos sitä ei oo, niin sitten ei lue
EDIT: Keksin!
EDIT2: Kuinka teen tarkistuksen että jos esim. laseja ei ole ostettu niin reppu ei vie liikaa rahaa? Oliko hankala?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Re: Tyhmät kysymykset
Sanoisinko, että suorastaan mahdoton. Ainakin jos et kerro asiasta tarkemmin.Jani wrote: EDIT2: Kuinka teen tarkistuksen että jos esim. laseja ei ole ostettu niin reppu ei vie liikaa rahaa? Oliko hankala?
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: Tyhmät kysymykset
Siis no sillain et jos alku rahat on vaikka 1000, niin ei lähde ylimääräistä. kun esim reppu maksa 80€ ja puhelin maksaa 200€ niin ei lähtis molempien hintaaTheFish wrote:Sanoisinko, että suorastaan mahdoton. Ainakin jos et kerro asiasta tarkemmin.Jani wrote: EDIT2: Kuinka teen tarkistuksen että jos esim. laseja ei ole ostettu niin reppu ei vie liikaa rahaa? Oliko hankala?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Re: Tyhmät kysymykset
Laita tavaroille oma muuttuja/kenttä (riippuen miten olet toteuttanut ne) joka kertoo onko se ostettu. Sitten otat hinnan pois vain jos se on ostettu. Tuon tarkempaa on mahdotonta sanoa, koska en tiedä mitään siitä miten olet toteuttanut systeemin.
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: Tyhmät kysymykset
Tässä on nyt hetkessä väsätty samanlainen:
EDIT: Tarvitsisin nopeuden...
EDIT"2: sain sen vähennyksen toimimaan. Mutta nyt tarvis apuu tässä:
siis nämä tekstit menee päällekkäin kun käytän komentoa Drawscreen OFF ja taskun käytän komentoa Drawscreen niin ne ostetut tavarat häipyy
Code: Select all
ClearText
Locate 20,360
Text 20,360,"Reppu"
raha= 100 - 80
DrawScreen
Goto pa
//mt\\
mt:
ClearText
Locate 40,40
AddText "1. Puhelin, Hinta 10e"
Locate 40,60
AddText "2. Aurinkolasit, Hinta 5e"
For i=1 To 1
Locate 320,340
AddText "Rahat: "+raha
DrawScreen
Next i
DrawScreen
Repeat
If KeyHit(79) Then Goto puhelin
If KeyHit(80) Then Goto aurinkolasit
DrawScreen
Forever
//Puhelin\\
puhelin:
ClearText
Locate 100,360
Text 100,360,"Puhelin"
raha = 10
DrawScreen
Goto pa
//Aurinkolasit\\
aurinkolasit:
ClearText
Text 200,360,"Aurinkolasit"
raha = -5
.........
EDIT"2: sain sen vähennyksen toimimaan. Mutta nyt tarvis apuu tässä:
siis nämä tekstit menee päällekkäin kun käytän komentoa Drawscreen OFF ja taskun käytän komentoa Drawscreen niin ne ostetut tavarat häipyy
Code: Select all
pa:
Color 255,255,255
Locate 20,20
AddText "Olet nyt kotona. Mitä otat mukaasi?"
Locate 320,340
For i=1 To 1
AddText "Rahat: " +raha
DrawScreen OFF
Next i
DrawScreen OFF
Locate 40,40
AddText "1. Repun, Hinta 80e"
Locate 40,60
AddText "2. Muuta tavaraa"
Locate 40,80
AddText "3. Lähdetään!"
DrawScreen OFF
Repeat
If KeyHit(79) Then Goto repun
If KeyHit(80) Then Goto mt
If KeyHit(81) Then Goto lähdetään1
DrawScreen OFF
Forever
WaitKey
//Repun\\
repun:
ClearText
Locate 20,360
Text 20,360,"Reppu"
raha - 80
DrawScreen OFF
Goto pa
//mt\\
mt:
ClearText
Locate 40,40
AddText "1. Puhelin, Hinta 10e"
Locate 40,60
AddText "2. Aurinkolasit, Hinta 5e"
For i=1 To 1
Locate 320,340
AddText "Rahat: "+raha
DrawScreen OFF
Next i
DrawScreen OFF
Repeat
If KeyHit(79) Then Goto puhelin
If KeyHit(80) Then Goto aurinkolasit
DrawScreen OFF
Forever
//Puhelin\\
puhelin:
ClearText
Locate 100,360
Text 100,360,"Puhelin"
raha - 10
DrawScreen OFF
Goto pa
//Aurinkolasit\\
aurinkolasit:
ClearText
Locate 200,360
Text 200,360,"Aurinkolasit"
raha - 5
DrawScreen OFF
Goto pa
lähdetään1:
...koodia...
Last edited by Jani on Sun Nov 09, 2008 1:42 pm, edited 1 time in total.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Re: Tyhmät kysymykset
En millään keksi. Voisikohan joku fiksumpi nyt auttaa?Aaponator wrote:Miksei Ukko ammu?!
Code: Select all
SCREEN 420,300 Type AMMUS Field obj End Type Type PORTAALI Field obj EndType FrameLimit 40 'rajoita nopeutta DrawToWorld ON pum=LoadSound("media\gun 1.wav") mortal=LoadImage("media\mortal.bmp") SetWindow "Mortal",0,"Mahdatkohan nyt olla järjissäsi?!" record=Timer() Repeat Color cblightgreen Locate 0,0 AddText "Hyvää työtä, kohde 31455!" DrawScreen WaitKey AddText "Valitettavasti minun täytyy nyt..." DrawScreen WaitKey AddText "..kertoa sinulle testielämyksesi olevan lopussa." DrawScreen WaitKey AddText "Nyt sinun täytyy pudottaa tuo hassu portaalipyssy." DrawScreen WaitKey AddText "Selvä. Haluatko tietää, mitä tapahtuu jos et?" DrawScreen WaitKey AddText "Sinua kidutetaan aina kuolemaasi asti." DrawScreen WaitKey AddText "Joten, sinun täytyy pudottaa se!" DrawScreen WaitKey AddText "PUDOTA SE!" DrawScreen WaitKey AddText "Älä pelkää, sinua ei kiduteta." DrawScreen WaitKey AddText "AINOASTAAN TAPETAAN!" DrawScreen WaitKey PlaySound pum ClearText DrawImage mortal,0,0 DrawScreen WaitKey AddText "LADATAAN" DrawImage mortal,0,0 DrawScreen Goto peli Forever '########################################################## peli: ClearText kartta=LoadMap("media\cdm2.til","media\tileset.bmp") ukko=LoadObject("Media\soldier.bmp",72) pati=LoadObject("Media\bullet.bmp") keltport=LoadObject("media\kelt.png") sinport=LoadObject("media\sin.png") vihu=LoadObject("media\soldier.bmp",72) ShowObject pati,OFF ShowObject keltport,OFF ShowObject sinport,OFF kuva=1 eventtimer=0 vihuonkuollut=0 dialogitimer=Timer() PositionObject sinport,-400,760 PositionObject keltport,-400,760 PositionObject vihu,-300,760 SetupCollision ukko, vihu, 2, 2, 2 SetupCollision ukko, kartta, 1, 4, 2 SetupCollision vihu, kartta, 1, 4, 2 AddText "Nuolista ohjaa, CTRL ampuu, space moraa" Repeat 'dialogi If dialogitimer+5000<Timer() Then ClearText AddText "Et voi paeta!" AddText "Käytävillä on vartioita juuri sinua varten." AddText "Älä yritäkkään!" EndIf If dialogitimer+10000<Timer() Then ClearText AddText "No yritit sitten" AddText "Haluan vain kivuttomamman kuoleman sinulle" AddText "Jos antaudut nyt, sinua ei kiduteta" EndIf If dialogitimer+20000<Timer() Then ClearText AddText "Eikä tapeta" EndIf If dialogitimer+25000<Timer() Then ClearText AddText "Äh. Keskustellaan siitä sitten joskus." AddText "Nyt sinun on vain keskityttävä antautumaan" EndIf 'Ohjaa ukkoa NUOLILLA If LeftKey() Then TurnObject ukko,5 If RightKey() Then TurnObject ukko,-5 If UpKey() Then MoveObject ukko,2 If DownKey() Then MoveObject ukko,-2 'näkeekö ukko vihun ja toisinpäin If CanSee(ukko, vihu, 60) And vihuonkuollut=0 Or ObjectsOverlap (ukko,vihu,3) And vihuonkuollut=0 Then ShowObject vihu,ON Else ShowObject vihu,OFF If CanSee(vihu, ukko, 60) And vihuonkuollut=0 Or ObjectsOverlap (ukko,vihu,3) And vihuonkuollut=0 Then PointObject vihu,ukko 'ukko moraa vihun If CanSee(ukko, vihu, 60) And Distance2 (ukko,vihu)<50 And KeyHit(cbkeyspace) Then vihuonkuollut=1 If cansee(vihu,ukko,60) And vihuonkuollut=0 And Distance2 (ukko,vihu)>150 Then MoveObject vihu,1 If cansee(vihu,ukko,60) And vihuonkuollut=0 And Distance2 (ukko,vihu)<150 And GetMap(2,ObjectX(vihu),ObjectY(vihu))= 0 Then MoveObject vihu,-1 'teleporttaus If ObjectsOverlap(ukko,sinport,3) And Timer() > eventtimer + 1000 Then CloneObjectPosition ukko,keltport eventtimer=Timer() EndIf If ObjectsOverlap(ukko,keltport,3) And Timer() > eventtimer + 1000 Then CloneObjectPosition ukko,sinport ShowObject keltport,ON eventtimer=Timer() EndIf '########################################### 'VIHUN AMPUMISSYSTEEMI###################### '########################################### 'Ammu-systeemi. Vain, jos ase on ladattu If CanSee(vihu, ukko, 60) And reload2=0 And vihuonkuollut=0 Then PlaySound pum luoti.AMMUS = New(AMMUS) 'luo uusi AMMUS luoti\obj=CloneObject(pati) 'tee klooni 'asetetaan pati samaan paikkaan CloneObjectPosition luoti\obj,vihu 'käännetään pati samaan suuntaan CloneObjectOrientation luoti\obj,vihu reload2=20 'aseen lataus EndIf 'päivitä aseen lataaminen If reload2>0 Then reload2=reload2-1 'Päivitä kaikki ammukset For luoti.AMMUS = Each AMMUS MoveObject luoti\obj,10 If GetMap(2,ObjectX(luoti\obj),ObjectY(luoti\obj))= 1 Then DeleteObject luoti\obj 'poista objekti Delete luoti 'poista luoti kokonaan EndIf '########################################### 'UKON AMPUMISSYSTEEMI####################### '########################################### 'Ammu-systeemi. Vain, jos ase on ladattu If reload=0 And KeyDown (cbkeyrcontrol) Then portal.PORTAALI = New(PORTAALI) 'luo uusi AMMUS portal\obj=CloneObject(pati) 'tee klooni 'asetetaan pati samaan paikkaan CloneObjectPosition portal\obj,ukko 'käännetään pati samaan suuntaan CloneObjectOrientation portal\obj,ukko reload=20 'aseen lataus EndIf 'päivitä aseen lataaminen If reload>0 Then reload=reload-1 'Päivitä kaikki ammukset For portal.PORTAALI = Each PORTAALI MoveObject portal\obj,6 If GetMap(2,ObjectX(portal\obj),ObjectY(portal\obj))= 1 Then kuva=kuva*(-1) 'vaihdetaan keltport sinportin, tai toisinpäin If kuva=1 Then CloneObjectPosition sinport,portal\obj If kuva=1 Then ShowObject sinport,ON If kuva=-1 Then ShowObject keltport,ON If kuva=-1 Then CloneObjectPosition keltport,portal\obj DeleteObject portal\obj 'poista objekti Delete portal 'poista pluoti kokonaan EndIf Function ObjectDirection(_obj1, _obj2) 'näkyykö vihu a# = GetAngle2(_obj1, _obj2) - ObjectAngle(_obj1) If a > 180 Then a = a - 360 If a < -180 Then a = a + 360 Return a EndFunction Function CanSee(_obj1, _obj2, _fov) // Ensin tarkistetaan että kakkonen on ykkösen näkökentässä If Abs(ObjectDirection(_obj1, _obj2)) > _fov Then Return False // Tarkistetaan ettei ole seinää välissä Return ObjectSight(_obj1, _obj2) EndFunction Next portal Next luoti CloneCameraPosition ukko DrawGame DrawScreen Until EscapeKey()