Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

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ä
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

kiitos...

Miten päivitän Rand: it?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tyhmät kysymykset

Post by MAVmaggot »

Aina kun käytetään rand()-funktiota se se arpoo uuden luvun, eli luupissa se arpoo aina uudestaan.
Mr_Noob
Newcomer
Posts: 30
Joined: Tue Aug 28, 2007 1:05 pm
Location: koti
Contact:

Re: Tyhmät kysymykset

Post by Mr_Noob »

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ä

TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

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ä
Mr_Noob
Newcomer
Posts: 30
Joined: Tue Aug 28, 2007 1:05 pm
Location: koti
Contact:

Re: Tyhmät kysymykset

Post by Mr_Noob »

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ä

E.T.
Newcomer
Posts: 42
Joined: Thu Jul 03, 2008 9:33 am

Re: Tyhmät kysymykset

Post by E.T. »

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
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

Jos vois joku nyt hieman auttaa tässä

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..
Minkä takia siis raha ei muutu sadasta kahteenkymmeneen? Eikä tuo Reppu teksti ilmesty kun painetaan 1
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

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ä
Aaponator

Re: Tyhmät kysymykset

Post by Aaponator »

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()

User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

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 :|
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
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

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.
Siinähän on DrawScreen komennot... *mutinaa*
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

Jani wrote:
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.
Siinähän on DrawScreen komennot... *mutinaa*
Mitäs ne hyödyttää jos niitä ei suoriteta kuin kerran? Ja se drawscreen ei muutenkaan päivitä tekstejä, se vain piirtää ne.
CoolBasic henkilökuntaa
Kehittäjä
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

TheFish wrote:
Jani wrote:Siinähän on DrawScreen komennot... *mutinaa*
Mitäs ne hyödyttää jos niitä ei suoriteta kuin kerran? Ja se drawscreen ei muutenkaan päivitä tekstejä, se vain piirtää ne.
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.
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
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

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?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

Jani wrote: EDIT2: Kuinka teen tarkistuksen että jos esim. laseja ei ole ostettu niin reppu ei vie liikaa rahaa? Oliko hankala?
Sanoisinko, että suorastaan mahdoton. Ainakin jos et kerro asiasta tarkemmin.
CoolBasic henkilökuntaa
Kehittäjä
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

TheFish wrote:
Jani wrote: EDIT2: Kuinka teen tarkistuksen että jos esim. laseja ei ole ostettu niin reppu ei vie liikaa rahaa? Oliko hankala?
Sanoisinko, että suorastaan mahdoton. Ainakin jos et kerro asiasta tarkemmin.
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 hintaa :)
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

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ä
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset

Post by Jani »

Tässä on nyt hetkessä väsätty samanlainen:

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: 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

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
Aaponator

Re: Tyhmät kysymykset

Post by Aaponator »

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()

En millään keksi. Voisikohan joku fiksumpi nyt auttaa?
Locked