Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja » Fri Mar 06, 2009 3:34 pm

Kassos värikäs.

Code: Select all

For panos.AMMUS = Each AMMUS
    If ObjectsOverlap(panos\obj,v\obj,2) Then v\hp-10:DeleteObject panos\obj:Delete panos
    If v\hp=0 Then DeleteObject v\obj:Delete v
Next panos
Jos objekti tuhotaan ylemmässä rivissä, mitä alempi tekee? Kyllä, se yrittää käyttää tyypin instanssia vaikka sitä ei enää ole. Homman saa siististi ilman kikkailua hoidettua esimerkiksi näin.

Code: Select all

For panos.AMMUS = Each AMMUS
    del = 0
    If ObjectsOverlap(panos\obj,v\obj,2) Then del = 1
    If v\hp=0 Then del = 1
    If del Then DeleteObject v\obj: Delete v
Next panos

User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset

Post by Ilkka » Fri Mar 06, 2009 3:43 pm

Koodaaja: Mutta eihän tuo auta mitään. Minulla ainaki mavittaa ku ampuu pallon.
Image

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Tyhmät kysymykset

Post by Jani » Fri Mar 06, 2009 3:47 pm

Aivan koska puuttuu ns. tuhottu-muuttuja.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Fri Mar 06, 2009 4:02 pm

Miten saan osumis animaation pyörimään oikealle viholliselle?

Code: Select all

//ALIENIT

   

    
    If luo>80
        newAlien.vihut= New(vihut)
        newAlien\obj=CloneObject(vihollinen1)
       ScreenPositionObject newAlien\obj,Rand(0,ScreenWidth()),Rand(0,screenheight())
       ObjectOrder newalien\obj,-1
       

        newAlien\id=Rand(1,3)
        Select newAlien\id  'käytä mielummin selectiä on selvempi
            Case 1
                newAlien\hp=Rand(130,190):newAlien\dmg=Rand(2,5):newAlien\score=Rand(10,30)
            Case 2
                PaintObject newAlien\obj,vihollinen2
                newAlien\hp=Rand(300,320):newAlien\dmg=Rand(5,8):newAlien\score=Rand(15,35)
            Case 3
                PaintObject newAlien\obj,vihollinen3
                newAlien\hp=Rand(280,340):newAlien\dmg=Rand(7,9):newAlien\score=Rand(35,50)
            Default
                MakeError "Annetulle IDlle ei ole asetettu toimintoa"
        EndSelect

        luo=0         
    EndIf
   
    luo+1
               
      
               
    For iAlien.vihut= Each vihut'Aloitetaan zombien läpikäynti
    

   
        If iAlien\ID>0 Then ' jos on elossa
       
            sidle=Rand(-20,20)
       
            If CountCollisions(iAlien\obj) Then MoveObject iAlien\obj,0,sidle
            If ObjectSight (iAlien\obj,pelaaja) Then MoveObject iAlien\obj,1 Else MoveObject iAlien\obj,0
            PointObject iAlien\obj,pelaaja'zombi tähtää pelaajaan
            If ObjectsOverlap(iAlien\obj,pelaaja) Then hp-iAlien\dmg
       
          For ibullet.bullets=Each bullets
                If ObjectsOverlap(ibullet\obj,iAlien\obj) Then
                    newanim.animaatio= New(animaatio)
                    newanim\obj=CloneObject(osuma)
                    ObjectOrder newanim\obj,1
                    CloneObjectPosition newanim\obj,newalien\obj   
                     
                    PlayObject newanim\obj,2,11,0.25
                    ObjectLife newanim\obj,700
                    PlaySound osui,50
                    iAlien\hp-ibullet\dmg
                         
                EndIf
            Next ibullet
                   
            If ObjectsOverlap (pelaaja,iAlien\obj) Then iAlien\hp-4
       
            If iAlien\hp<0 Then 'jos zombin energiat loppuu, niin tapetaan se ja annetaan pisteet
                tapotpisteet+1
                tapot+1
           
               If Timer()>record+100 Then 
        blink=Not blink
        record=TIMER()
    EndIf

           
        If ObjectsOverlap (pelaaja,Ialien\obj) Then
           ShowObject osuma,ON 
                      PlaySound vihollinen,250
           PlayObject osuma,2,11,0.25
           CloneObjectPosition osuma,pelaaja
           If  Timer()>aika+500 Then
           ShowObject osuma,OFF 
           aika=TIMER()

         EndIf
         EndIf 
        
           



             
           
                /////////////////////////////////
                ////////// RUUMIIN TEKO /////////
                /////////////////////////////////
               
                xx=ObjectX(iAlien\obj)
                yy=ObjectY(iAlien\obj)
                ShowObject iAlien\obj, OFF
           
                iAlien\obj = CloneObject(ruumis)
                PositionObject iAlien\obj,xx,yy
                ShowObject iAlien\obj, ON
                ObjectOrder iAlien\obj,1
                iAlien\ID=-1 ' estetään toiminnot
                ObjectLife iAlien\obj,300 'poistetaan tietyn ajan kuluttua
                ObjectOrder ruumis,-1
               
            EndIf
        EndIf 
    Next iAlien
               
    For iBullet.BULLETS= Each BULLETS
        If CountCollisions(ibullet\obj) Then ibullet\hp-32
        MoveObject iBullet\obj,6'llikutetaan luotia
        If Distance2(iBullet\obj,pelaaja)>200 Or ibullet\hp<0 Then 'jos...niin tuhotaan ammus
            DeleteObject iBullet\obj
            Delete iBullet
        EndIf
    Next iBullet
    
    

User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset

Post by KillBurn » Fri Mar 06, 2009 4:43 pm

Värikäs wrote:Koodaaja: Mutta eihän tuo auta mitään. Minulla ainaki mavittaa ku ampuu pallon.
Hyvin olit piilottanut objektin tuhoamisen yhdelle riville :D
MAV tulee koska Ammus looppia ei suljeta kun ammus on tuhottu.
Näin pitäisi toimia.

Code: Select all

    For panos.AMMUS = Each AMMUS
        MoveObject panos\obj,6
    Next panos
    
    For v.VIHUT = Each VIHUT
        For panos.AMMUS = Each AMMUS
            If ObjectsOverlap(panos\obj,v\obj,2) Then v\hp-10:DeleteObject panos\obj:Delete panos
        Next panos'Suljetaan ammus looppi
        If v\hp<1 Then
            DeleteObject v\obj
            Delete v
        EndIf 
    Next v
Koodaajan del muuttuja on aika turha, koska panoksilla on energiat, joista saadaan selville koska ne pitää tuhota.
Sumu Games: Sam, Ur eye!

matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 9:37 pm

Re: Tyhmät kysymykset

Post by matti3 » Fri Mar 06, 2009 9:42 pm

Tälläne iha pikkune kysymys (sarkasmia)
Mistä ihmeestä tämä koodi bugaa? :O

http://paste.servut.us/plain/gkny

Se väittää, että siellä on ylimääräisiä EndIf kohtia, mutta ei siellä kyllä ole! En ainakaan itse huomaa :o
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja » Fri Mar 06, 2009 10:05 pm

Kah, en tosiaan lukenut koodia selvästi tarpeeksi tarkasti/juuri lainkaan. Pahoittelen.

@matti3: Silmukkaa ei oikein kuulu avata if-lauseen sisällä, ellei sitä myös lopeta siellä. Kokeilepa tällaista:

Code: Select all

Repeat
    If-lauseet
Until x

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset

Post by phons » Fri Mar 06, 2009 10:11 pm

öh sinulla on alaohjelma saksa ja sitten sanot että saksa=rand(1,10) niin eihän tuo alaohjelma saksa voi silloin toimia
Image

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Fri Mar 06, 2009 11:20 pm

Voiko joku auttaa tuossa ongelmassani?

(viesti on hieman ylempänä..)

matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 9:37 pm

Re: Tyhmät kysymykset

Post by matti3 » Fri Mar 06, 2009 11:44 pm

Kiitos PALJON auttajille. Molemmat olivat oikeassa vian suhteen :D

Kysyisin tälläistä, kun hajroittelin hieman grafiikallista ominaisuutta (aloittelija CB:ssä joten kaikkea tulee kokeiltua) niin miten saisin autolle hieman liikettä, kun nyt sillä voi ajaa vaikka 2 000 ja silti auto on kuin liimattu tiän pintaan. :D
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini

Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset

Post by Awaclus » Sat Mar 07, 2009 1:58 am

Näin saat auton ajelemaan ympäriinsä. Vaihda luvut sellaiseksi kun haluat (MoveObjectiin 1-5 taitaisi olla realistinen) ja siinäpä se sitten onkin.

Code: Select all

auto = LoadObject ("media\car.bmp",72) 'Ladataan objekti muuttujaan auto. Objekti on sitten tuossa polussa esiintyvä kuva car.bmp ja sen "kääntyvyys" on 72.
FrameLimit 50 'Ei tule kuin korkeintaan 50 kuvaa sekunnissa

Repeat 'Sanoo jossain vaiheessa tulevalle Foreverille tai Untilille: Hoi!

    If UpKey() Then MoveObject auto, 2000 'Jos funktio UpKey() palautti truen, eli siis jos painettiin ylänuolta, Autoa siirretään 2 000 pikseliä eteenpäin.
    If DownKey() Then MoveObject auto, -2000 ' Sama homma alanuolen ja taaksepäin siirtämisen kanssa. Eli luultavasti katoaa ruudusta kummassakin tapauksessa.
    If LeftKey() Then TurnObject auto, 5 'autoa käännetään luultavasti väärään suuntaan, hitsi kun ei muista
    If RightKey() Then TurnObject auto, 5 '  Ja toiseen suuntaan
    
    DrawScreen 'Piirtää ruudun

Forever 'Palataan kohtaan Repeat.
PS. Nämä tekevät saman asian. Kumpi on yksinkertaisempi?

Code: Select all

If saksa = 1 Or saksa = 2 Or saksa = 3 Or saksa = 4 Or saksa = 5 Or saksa = 6 Or saksa =  7 Or saksa = 8 Then

Code: Select all

If saksa > 0 And saksa < 9 Then

matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 9:37 pm

Re: Tyhmät kysymykset

Post by matti3 » Sat Mar 07, 2009 3:52 am

Anteeksi. Taisin muotoilla kysymyksen väärin. :)
Osaan laittaa auton liikkeelle jne. Tarkoitan, että auto lusuisi hieman tiellä eikä olisi ihan liimattuna tiähän :D
Siis tällä hetkellä käytössäni on engine joka aiheuttaa luisumisen, mutta se ei aiheuta sitä oikealla tavalla. Tarkoitus olisi, että jossain nopeudessa auto saattaa jopa pyörähtää ja pitää käyttää vasta käännöstä apuna hieman. ;)

En tiedä onko tuollaista kukaan vielä CB:ssä tehnyt, mutta toivoisin. Tai edes mahdollisimman realistinen auto fysiikka, kun olisi. :P
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset

Post by phons » Sat Mar 07, 2009 9:32 am

siis:?

Code: Select all

Const SBX = 0.03

nopeus#=0
car=LoadObject("media\car.bmp",72)

käännös=False

Repeat
    
    If UpKey() Then
        nopeus#+SBX
        käännös=True
    ElseIf nopeus#>0 Then
        nopeus#-SBX
        käännös=True
    Else
        käännös=False
    EndIf
    
    If LeftKey() And käännös=True Then TurnObject car,4
    If RightKey() And käännös=True Then TurnObject car,-4
    MoveObject car,nopeus#
    
    DrawScreen
Until EscapeKey()

Siitä tulikin aika hyvä.... No mutta tarkoititko siis tullaista "slowdown" juttua kun ei kaasu ole pohjassa?
EDIT:

Ja tuollaisia vastakäännös juttuja tuskin on tehty...

Image

matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 9:37 pm

Re: Tyhmät kysymykset

Post by matti3 » Sat Mar 07, 2009 1:38 pm

en. Sekin oli jo minulla. :D

Auton pitäisi edes hieman luistaa jottei se olisi tien pinnassa kuin liimattu. Peräpää luistelee. :D
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini

User avatar
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 » Sat Mar 07, 2009 5:09 pm

rami123 wrote:Miten saan osumis animaation pyörimään oikealle viholliselle?

Code: Select all

//ALIENIT

   

    
    If luo>80
        newAlien.vihut= New(vihut)
        newAlien\obj=CloneObject(vihollinen1)
       ScreenPositionObject newAlien\obj,Rand(0,ScreenWidth()),Rand(0,screenheight())
       ObjectOrder newalien\obj,-1
       

        newAlien\id=Rand(1,3)
        Select newAlien\id  'käytä mielummin selectiä on selvempi
            Case 1
                newAlien\hp=Rand(130,190):newAlien\dmg=Rand(2,5):newAlien\score=Rand(10,30)
            Case 2
                PaintObject newAlien\obj,vihollinen2
                newAlien\hp=Rand(300,320):newAlien\dmg=Rand(5,8):newAlien\score=Rand(15,35)
            Case 3
                PaintObject newAlien\obj,vihollinen3
                newAlien\hp=Rand(280,340):newAlien\dmg=Rand(7,9):newAlien\score=Rand(35,50)
            Default
                MakeError "Annetulle IDlle ei ole asetettu toimintoa"
        EndSelect

        luo=0         
    EndIf
   
    luo+1
               
      
               
    For iAlien.vihut= Each vihut'Aloitetaan zombien läpikäynti
    

   
        If iAlien\ID>0 Then ' jos on elossa
       
            sidle=Rand(-20,20)
       
            If CountCollisions(iAlien\obj) Then MoveObject iAlien\obj,0,sidle
            If ObjectSight (iAlien\obj,pelaaja) Then MoveObject iAlien\obj,1 Else MoveObject iAlien\obj,0
            PointObject iAlien\obj,pelaaja'zombi tähtää pelaajaan
            If ObjectsOverlap(iAlien\obj,pelaaja) Then hp-iAlien\dmg
       
          For ibullet.bullets=Each bullets
                If ObjectsOverlap(ibullet\obj,iAlien\obj) Then
                    newanim.animaatio= New(animaatio)
                    newanim\obj=CloneObject(osuma)
                    ObjectOrder newanim\obj,1
                    CloneObjectPosition newanim\obj,newalien\obj   
                     
                    PlayObject newanim\obj,2,11,0.25
                    ObjectLife newanim\obj,700
                    PlaySound osui,50
                    iAlien\hp-ibullet\dmg
                         
                EndIf
            Next ibullet
                   
            If ObjectsOverlap (pelaaja,iAlien\obj) Then iAlien\hp-4
       
            If iAlien\hp<0 Then 'jos zombin energiat loppuu, niin tapetaan se ja annetaan pisteet
                tapotpisteet+1
                tapot+1
           
               If Timer()>record+100 Then 
        blink=Not blink
        record=TIMER()
    EndIf

           
        If ObjectsOverlap (pelaaja,Ialien\obj) Then
           ShowObject osuma,ON 
                      PlaySound vihollinen,250
           PlayObject osuma,2,11,0.25
           CloneObjectPosition osuma,pelaaja
           If  Timer()>aika+500 Then
           ShowObject osuma,OFF 
           aika=TIMER()

         EndIf
         EndIf 
        
           



             
           
                /////////////////////////////////
                ////////// RUUMIIN TEKO /////////
                /////////////////////////////////
               
                xx=ObjectX(iAlien\obj)
                yy=ObjectY(iAlien\obj)
                ShowObject iAlien\obj, OFF
           
                iAlien\obj = CloneObject(ruumis)
                PositionObject iAlien\obj,xx,yy
                ShowObject iAlien\obj, ON
                ObjectOrder iAlien\obj,1
                iAlien\ID=-1 ' estetään toiminnot
                ObjectLife iAlien\obj,300 'poistetaan tietyn ajan kuluttua
                ObjectOrder ruumis,-1
               
            EndIf
        EndIf 
    Next iAlien
               
    For iBullet.BULLETS= Each BULLETS
        If CountCollisions(ibullet\obj) Then ibullet\hp-32
        MoveObject iBullet\obj,6'llikutetaan luotia
        If Distance2(iBullet\obj,pelaaja)>200 Or ibullet\hp<0 Then 'jos...niin tuhotaan ammus
            DeleteObject iBullet\obj
            Delete iBullet
        EndIf
    Next iBullet
    
    

User avatar
Rufi
Member
Posts: 50
Joined: Fri Dec 21, 2007 12:12 pm

Re: Tyhmät kysymykset

Post by Rufi » Sat Mar 07, 2009 7:28 pm

Miten kannattaisi toteuttaa kartan vaihto? Peligenrenä on RPG ja kartathan vaihtuisivat varmaan melko nopsaakin.
Yksi tapahan olisi vain poistaa vanha kartta ja ladata uusi. Mutta tämähän töksäyttää hieman peliä vaihdon aikana ja saattaisi käydä liiankin raskaaksi kaiken muun ohella.
Toinen tapa, mitä olen ajatellut ovat muistipalat. Mutta miten? Katsoisin .til tiedostojen sisällön jostakin(ei nyt sattunut löytymään, mutta tiedän sen olleen olemassa) ja kirjoittaisin kaiken muistiin? Sitten kokoaisin niistä kartan jotenkin? Äh...
Enlighten Me o/ (by Masterplan)
I'm gonna be the Pira... CoolBasic King!
D. Adams wrote:The knack of flying is learning how to throw yourself at the ground and miss.

User avatar
Substance
Active Member
Posts: 234
Joined: Fri Mar 14, 2008 6:48 pm

Re: Tyhmät kysymykset

Post by Substance » Sat Mar 07, 2009 7:48 pm

Rufi wrote: Toinen tapa, mitä olen ajatellut ovat muistipalat. Mutta miten? Katsoisin .til tiedostojen sisällön jostakin(ei nyt sattunut löytymään, mutta tiedän sen olleen olemassa) ja kirjoittaisin kaiken muistiin? Sitten kokoaisin niistä kartan jotenkin? Äh...
Enlighten Me o/ (by Masterplan)
No Valtzu on näköjään tehnyt jo tällaisen, pelin alussa vaan lataat kaikki kartat tällä systeemillä valmiiksi.
Aina kannattaa olla varma ettei ala keksimään pyörää uudestaan ;)

Code: Select all

//----------------------------------------//
//  MultiMapSystem by Valtzu (9.7.2007)  //
//----------------------------------------//


//Esimerkki

SCREEN 800,600

// Ladataan kartat muistiin
map1 = LoadMapToMem("Media\cdm2.til","Media\tileset.bmp")
map2 = LoadMapToMem("Media\testmap.til","Media\tileset.bmp")

// Ladataan ukko
ukko = LoadObject ("Media\guy.bmp",72)

AddText "Arrows to move, space to change map"


Repeat
    If KeyHit(cbkeyspace) Or kartta=0 Then
        kumpiKartta = Not kumpiKartta // 0=>1,1=>0

        // Vaihdetaan karttaa
        If kumpiKartta Then kartta=UseMap(map1,kartta) Else kartta=UseMap(map2,kartta)

        // Kartta sisältää animoituja tilejä, joten karttaobjekti pitää animoida
        PlayObject kartta,0,0,1

        // Jokaisen kartan vaihdon jälkeen pitää asettaa törmäykset uudestaan
        SetupCollision ukko, kartta, 1, 4, 2
    EndIf

    // Ukon ohjaus
    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2

    UpdateGame

    CloneCameraPosition ukko

    DrawScreen

Forever


// ---- Funktiot ---- //

// Tämä funktio lataa kartan muistiin. Parametreina tilemapin tiedostopolku
// ja tilesetin tiedostopolku tai valmiiksi LoadImagella ladattu kuva
Function LoadMapToMem(_tilemap$,_tileset$)
    If Int(_tileset)=0 Then tileset=LoadImage(_tileset) Else tileset=Int(_tileset)
    f=OpenToRead(_tilemap)
        tmpMem=MakeMEMBlock(8)
        PokeByte tmpMem,0, 23
        PokeByte tmpMem,1, 40
        PokeByte tmpMem,2, 179
        PokeByte tmpMem,3,192
        PokeByte tmpMem,4,243
        PokeByte tmpMem,5,13
        PokeByte tmpMem,6,56
        PokeByte tmpMem,7,139
        For i = 0 To 3
            a=ReadByte(f)
            If a <> PeekByte(tmpMem,i*2) And a <> PeekByte(tmpMem,i*2+1) Then virhe=1:Exit
        Next i
        versio# = ReadFloat(f)
        If virhe Or versio <= 0.0 Or versio > 2.0 Then MakeError("Error! Invalid tilemap.")
        For i=1 To 128
            a=ReadInt(f)
        Next i
        maskr=ReadByte(f):maskg=ReadByte(f):maskb=ReadByte(f)
        For i=1 To 297
            a=ReadByte(f)
        Next i
        tileja=ReadInt(f)
        tileleveys=ReadInt(f)
        tilekorkeus=ReadInt(f)
        mapleveys=ReadInt(f)
        mapkorkeus=ReadInt(f)
        mapMem=MakeMEMBlock(27+(mapleveys*mapkorkeus*2*4)+(tileja*8))
        PokeInt mapMem,0, tileja
        PokeInt mapMem,4, tileleveys
        PokeInt mapMem,8, tilekorkeus
        PokeInt mapMem,12,mapleveys
        PokeInt mapMem,16,mapkorkeus
        PokeInt mapMem,20,tileset
        PokeByte tmpMem,0, 254
        PokeByte tmpMem,1, 45
        PokeByte tmpMem,2, 12
        PokeByte tmpMem,3,166
        offset=24
        For kerros=0 To 3
            If ReadByte(f) <> PeekByte(tmpMem,0) Or ReadByte(f) <> PeekByte(tmpMem,1) Or ReadByte(f) <> PeekByte(tmpMem,2) Or ReadByte(f) <> PeekByte(tmpMem,3) Then MakeError("Error! Invalid tilemap.")
            For y=1 To mapkorkeus
              For x=1 To mapleveys
                  PokeShort mapMem,offset,ReadInt(f):offset+2
              Next x
            Next y
            For i=0 To 3
                PokeByte tmpMem,i,PeekByte(tmpMem,i)-1
            Next i
        Next kerros
        If ReadByte(f) <> PeekByte(tmpMem,0) Or ReadByte(f) <> PeekByte(tmpMem,1) Or ReadByte(f) <> PeekByte(tmpMem,2) Or ReadByte(f) <> PeekByte(tmpMem,3) Then MakeError("Error! Invalid tilemap.")
        For tile=1 To tileja
            PokeInt mapMem,offset,ReadInt(f):offset+4
            PokeInt mapMem,offset,ReadInt(f):offset+4
        Next tile
        PokeByte mapMem,offset,maskr:offset+1
        PokeByte mapMem,offset,maskg:offset+1
        PokeByte mapMem,offset,maskb:offset+1
    CloseFile f
    DeleteMEMBlock tmpMem
    Return mapMem
End Function


// UseMap()-funktio asettaa LoadMapToMem()-funktiolla ladatun kartan käyttöön.
// Toiseksi parametriksi syötetään viimeksi käytetty karttaobjekti
Function UseMap(mapMem,oldMap=0)
    If oldMap Then DeleteObject oldMap
    tileja=PeekInt(mapMem,0)
    tileleveys=PeekInt(mapMem,4)
    tilekorkeus=PeekInt(mapMem,8)
    mapleveys=PeekInt(mapMem,12)
    mapkorkeus=PeekInt(mapMem,16)
    tileset=PeekInt(mapMem,20)
    objMap=MakeMap(mapleveys,mapkorkeus,tileleveys,tilekorkeus)
    offset=24
    For kerros=0 To 3
        kerros2=kerros
        If kerros = 1 Then kerros2 = 2
        If kerros = 2 Then kerros2 = 1
        For y=1 To mapkorkeus
          For x=1 To mapleveys
              EditMap objMap,kerros2,x,y,Int(PeekShort(mapMem,offset)):offset+2
          Next x
        Next y
    Next kerros
    For tile=1 To tileja
        pituus=PeekInt(mapMem,offset):offset+4
        hitaus=PeekInt(mapMem,offset):offset+4
        SetTile tile,pituus,hitaus
    Next tile
    PaintObject objMap,tileset
    r=PeekByte(mapMem,offset):offset+1
    g=PeekByte(mapMem,offset):offset+1
    b=PeekByte(mapMem,offset):offset+1
    MaskObject objMap,r,g,b
    ObjectOrder objMap,-1
    Return objMap
End Function

// Poistaa LoadMapToMem()-funktiolla ladatun kartan muistista.
// Tämän käyttö ei ole välttämätöntä
Function DeleteMapFromMem(mapMem)
    DeleteMEMBlock mapMem
End Function
Substance aka LittleGreen
Red Encounter - shoot'em uppia - lataus

User avatar
Rufi
Member
Posts: 50
Joined: Fri Dec 21, 2007 12:12 pm

Re: Tyhmät kysymykset

Post by Rufi » Sat Mar 07, 2009 8:02 pm

Mutta tämähän on hieno löydös. Suurkiitokset sinulle ja vielä isommat Valtzulle, jos hän sattuu lukemaan tätä.
Harmi vain, kun koodia ei ole kommentoitu juuri lainkaan... Pitänee mennä tutkailemaan tuota.
Myöskin, jos jollakin sattuu linkki olemaan tallessa tuon .til tiedoston sisältö -info sivulle niin voisitko laittaa sen?
I'm gonna be the Pira... CoolBasic King!
D. Adams wrote:The knack of flying is learning how to throw yourself at the ground and miss.

m1c
Member
Posts: 65
Joined: Tue Aug 28, 2007 5:10 pm
Location: \o

Re: Tyhmät kysymykset

Post by m1c » Sat Mar 07, 2009 8:19 pm

Formaatin speksit löytyy tilesterin helpistä, Program Files/Tilester/Help/ jne.

User avatar
Mr_Noob
Newcomer
Posts: 30
Joined: Tue Aug 28, 2007 1:05 pm
Location: koti
Contact:

Re: Tyhmät kysymykset

Post by Mr_Noob » Sat Mar 07, 2009 10:16 pm

Image
Elikkä minulla on seuraavanlainen ohjelma johon pitäisi Muokata listasta valitulle nimelle aika. Sen jälkeen ohjelma lisää sijoituksen, nimen, ja ajan. Varsinainen kysymys onkin, Miten saan tehtyä tuon Punaisen listan(Joka on piirretty paintilla)
programmer of DSG wrote:
EDIT:

aika hauska peli, vähän tylsä


Locked