Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Tyhmät kysymykset

Post by -Z- »

project coder wrote:
-Z- wrote:
project coder wrote: Onko DUDE ja MOVEGRID luotuna, koska kolmannelle riville pääsee vain, jos molempia on vähintään yksi.
Juu, eli sehän toimii, kiitos kovin. Teen nyt koodissa sillä tavalla, että koodin alussa ja aina kun kaikki movegridit poistetaan, luodaan uusi jonnekkin periferiaan. Toimiiko tämä parhaiten, vai onko jotain muuta, vähemmän purkkaista syteemiä?
Siirrät sen MOVEGRIDin luonnin sen ekan silmukan alkuun:

Code: Select all

For soldier.DUDE = Each DUDE

        If MouseWX()>ObjectX(soldier\obj)-15 And MouseWX()<ObjectX(soldier\obj)+15 And MouseWY()<ObjectY(soldier\obj)-15 And MouseWY()>ObjectY(soldier\obj)+15 Then        
            If MouseHit(1) Then                
                For i = 1 To 4
                newmgrid.MOVEGRID = New(MOVEGRID)
                newmgrid\obj = CloneObject(greengrid)
                CloneObjectPosition  newmgrid\obj, soldier\obj
                RotateObject newmgrid\obj, rotation
                MoveObject newmgrid\obj, 30
                rotation + 90
                Next i
            EndIf
        EndIf

    For mgrid.MOVEGRID = Each MOVEGRID

        If MouseWX()>ObjectX(mgrid\obj)-15 And MouseWX()<ObjectX(mgrid\obj)+15 And MouseWY()>ObjectY(mgrid\obj)-15 And MouseWY()<ObjectY(mgrid\obj)+15 Then
            If MouseHit(1) Then
                CloneObjectPosition soldier\obj, mgrid\obj
                For grid.MOVEGRID = Each MOVEGRID
                    DeleteObject grid\obj
                    Delete grid   
                Next grid
                Exit
             EndIf
        EndIf
        
    Next mgrid  
    Next soldier
Olipa yksinkertainen juttu x) Kiitos kaunis vielä kerran.

Edit: lisää.

Jatkoin riemukkaana strategiapelini koodaamista kunnes tulin uuden ongelman eteen (vaihteeksi)

olin tekemässä systeemiä, jolla toisen lehmän päälle osuva "movegrid" poistettaisiin. Nyt kuitenkin, kun valitsee toisen lehmän vieressä olevan lehmän, movegrid "välähtää" lehmän päällä. Pieni mutta häiritsevä fiba. Yritin vaikka minkälaista sydeemiä, mutta ei onnannut. Koodaus on erityisen kivaa silloin kun sitä ei osaa.

Code: Select all

Type MOVEGRID
    Field obj
End Type

Type DUDE
    Field obj
    Field sel
End Type

SCREEN 400,301
ShowMouse OFF
ClsColor cbwhite
Color cbblack
cow=LoadObject("media/cow.bmp")
ShowObject cow, OFF
greengrid = LoadObject("media/movegrid.png")
ShowObject greengrid, OFF
rotation=0

soldier.DUDE = New(DUDE)
soldier\obj = CloneObject(cow)
ScreenPositionObject soldier\obj, 15,15
soldier.DUDE = New(DUDE)
soldier\obj = CloneObject(cow)
ScreenPositionObject soldier\obj, 285,285
Repeat
    For i = 1 To 11
        Line x,0,x,300
        x+30
    Next i
    x=0
    For i = 1 To 11
        Line 0,y,300,y
        y+30
    Next i
    y=0

    For soldier.DUDE = Each DUDE

        If MouseWX()>ObjectX(soldier\obj)-15 And MouseWX()<ObjectX(soldier\obj)+15 And MouseWY()<ObjectY(soldier\obj)+15 And MouseWY()>ObjectY(soldier\obj)-15 Then          
            If MouseHit(1) Then
                For guy.DUDE = Each DUDE
                    guy\sel=0
                Next guy
                For grid.MOVEGRID = Each MOVEGRID 
                    DeleteObject grid\obj
                    Delete grid   
                Next grid
                soldier\sel=1
                For i = 1 To 4
                    mgrid.MOVEGRID = New(MOVEGRID)
                    mgrid\obj = CloneObject(greengrid)
                    CloneObjectPosition  mgrid\obj, soldier\obj
                    RotateObject mgrid\obj, rotation
                    MoveObject mgrid\obj, 30
                    rotation + 90
                Next i
            EndIf
        EndIf

    For mgrid.MOVEGRID = Each MOVEGRID
     
            If ObjectsOverlap(soldier\obj, mgrid\obj) Then 
                DeleteObject mgrid\obj
                Delete mgrid
                Exit
            EndIf

        

        If MouseWX()>ObjectX(mgrid\obj)-15 And MouseWX()<ObjectX(mgrid\obj)+15 And MouseWY()>ObjectY(mgrid\obj)-15 And MouseWY()<ObjectY(mgrid\obj)+15 And soldier\sel=1 Then
            If MouseHit(1) Then
                CloneObjectPosition soldier\obj, mgrid\obj
                For grid.MOVEGRID = Each MOVEGRID 
                    DeleteObject grid\obj
                    Delete grid   
                Next grid
                mgrid.MOVEGRID = New(MOVEGRID)
                mgrid\obj = CloneObject(greengrid)
                PositionObject mgrid\obj, 300,300
                Exit
            EndIf
        EndIf
    Next mgrid  
    Next soldier
               
    DrawGame 
    
    Color 100,100,100
    Box 301,0,100,301
    Color cbblack
    
    Text 302,2, MouseX()+":"+MouseY()
    
    Color cbred
    Dot MouseX(), MouseY()
    Dot MouseX()+1, MouseY()
    Dot MouseX()-1, MouseY()
    Dot MouseX(), MouseY()+1
    Dot MouseX(), MouseY()-1
    Color cbblack
    
    DrawScreen
Until EscapeKey()
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
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 »

-Z- wrote:multiquote- ja koodilootahirviö O:
Sanoakseni alkuun totuuden, itse tekisin koko systeemin kuvilla.

Sitten ratkaisuun: kokeilehan koodiasi, niin huomaat toisen lehmän toimivan mainiosti, toinen vain bugittaa. Tämä johtuu siitä, että toinen lehmä tarkistetaan ensin, ja toinen sitten. Koska jälkimmäisen ukon ympärille luotujen gridien ja ensimmäisen ukon tarkistus tulee vasta drawscreenin jälkeen seuraavassa loopissa, se ehtii välähtää. (<-turhaa selitystä >.<)

Laita siis törmäystarkistus jo luotaessa, pasteappa seuraavaa "rotation+90"-rivin jälkeen (ja koeta keksiä elegantimpi ratkaisu)

Code: Select all

For soldier2.DUDE = Each DUDE
    If ObjectsOverlap(soldier2\obj, mgrid\obj) Then 
        DeleteObject mgrid\obj
        Delete mgrid
        Exit
    EndIf
Next soldier2
User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Tyhmät kysymykset

Post by -Z- »

koodaaja wrote: Sitten ratkaisuun: kokeilehan koodiasi, niin huomaat toisen lehmän toimivan mainiosti, toinen vain bugittaa. Tämä johtuu siitä, että toinen lehmä tarkistetaan ensin, ja toinen sitten. Koska jälkimmäisen ukon ympärille luotujen gridien ja ensimmäisen ukon tarkistus tulee vasta drawscreenin jälkeen seuraavassa loopissa, se ehtii välähtää. (<-turhaa selitystä >.<)
Tuon huomasin itsekkin, mutta olen niin huono selittämään, etten siitä viitsinyt siitä ruveta pulisemaan :D

Mutta asiaan.
koodaaja wrote: Laita siis törmäystarkistus jo luotaessa, pasteappa seuraavaa "rotation+90"-rivin jälkeen (ja koeta keksiä elegantimpi ratkaisu)

Code: Select all

For soldier2.DUDE = Each DUDE
    If ObjectsOverlap(soldier2\obj, mgrid\obj) Then 
        DeleteObject mgrid\obj
        Delete mgrid
        Exit
    EndIf
Next soldier2
Qten arvata saattaa, lähti toimimaan. Kumastutti vain se, että kokeilin itsekkin ihan samanlaista systeemiä muttei toiminut O_O No, kokeillaans nyt koodata muutama rivi ilman foorumeilla kyselyä...

Mutta ensin pitää pelata vähän half life 2:ta :mrgreen:
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
atomimalli
Moderator
Moderator
Posts: 227
Joined: Wed Aug 29, 2007 3:55 pm

Re: Tyhmät kysymykset

Post by atomimalli »

Kerta täällä oltiin tekstuurejen perään, niin tässä sitä piisaa.
Entistä parempana, teinhän minä siihen toiseenkin ne tekstuurit.

Code: Select all

Smooth2D ON'pehmennys päälle
kuva=LoadImage("media/tileset.bmp")'LoadImage("media/tileset.bmp")
tekstuuri=MakeImage(64,64)
DrawToImage tekstuuri
DrawImageBox kuva,0,0,160,32,32,32
DrawImageBox kuva,0,32,160,32,32,32
DrawImageBox kuva,32,0,160,32,32,32
DrawImageBox kuva,32,32,160,32,32,32
DrawToScreen
MaskImage tekstuuri,64,64,92
Dim tex(1000)
For i=1 To 1000 Step 2
tex(i)=CloneImage(tekstuuri)
ResizeImage tex(i),256,i
SetWindow i/10+"%"
Next i

map = LoadTIL("media/cdm2.til")
ObjectPickable map, ON

player = MakeObject()
ObjectRange player, 10

PositionObject player,2^12+16*4,2^12+16*4
PositionObject map,2^12+16*4,2^12+16*4


SetupCollision player, map, 1, 4, 2

Repeat


MoveObject player, (UpKey() - DownKey()) * 30
TurnObject player, (RightKey()-LeftKey()) * 3

DrawGame //piirretaan objektit (eli lähinnä kartta) ensin

cast(player, 400, 300, 60, 1)

Color cbred:Text 0,0,"FPS: "+FPS()
DrawScreen
Forever

Function cast(obj, w, h, fov, qlt#) //objekti josta raycasting tapahtuu, leveys, korkeus, näkökenttä, laatu (1 on paras, meinaa piirrettavan pystysuoran leveyttä)

oa# = ObjectAngle(obj) - fov * 0.5 //lasketaan vasemman reunimmaisen viivan kulma kamerasta(objektista) nähden

dpdist# = w * 0.5 / Tan(fov * 0.5) //dpdist aka DrawingPlaneDistance(kamerasta)

lines# = RoundUp(w / qlt#) //montako viivaa tarvitaan

For i = 0 To lines

RotateObject obj, oa# + fov * (i / lines#) //käännetään objekti oikeaan kulmaan; tasaisin välein käydään koko näkökenttä läpi
ObjectPick obj //suoritetaan poiminta

dist# = Distance(ObjectX(obj), ObjectY(obj), PickedX(), PickedY()) * Cos(fov * (i / lines#) - fov * 0.5)
//dist# = etäisyys poimittuun kohtaan * cos(poimintakulma objektista nähden)
//tuo * cos(..) poistaa sen kalansilmävääristymän biggrin.gif

If dist#>200 And dist#<455 Then
colorfact#=1.0-(dist-200)/255 //Piirretään "himmenys"
ElseIf dist#>455
'colorfact#=-1 //Ei pirretä
Else
colorfact#=1 //Normaali väri
EndIf
If colorfact>-1 //Pirretään jos ollaan näkökentän "Sisällä"
If PickedAngle() = 0 Or PickedAngle() = 180 Then //xsuuntaisista seinistä tehää vähän tummempia
Else

EndIf
Color cbwhite
lheight# = 32 / dist# * dpdist#*8 //viivan_korkeus = seinän_oikea_korkeus / etäisyys_seinästä * pelaajan_etäisyys_piirtotasosta
'Box w - i * qlt#, h / 2 - lheight# / 2, qlt#, lheight# //piirretään viiva
If 1000>lheight then DrawImageBox tex(RoundDown(lheight/2)*2+1),i * qlt#, h / 2 - lheight# / 2,Abs(PickedX() Mod 256 +PickedY() Mod 256)/2 Mod 128,0,1,lheight
'Box w - i * qlt#, h / 2 - lheight# / 2, qlt#, lheight# //piirretään viiva
EndIf
Next i

RotateObject obj, oa# + fov * 0.5 //käännetään objekti takaisin alkuperäiseen kulmaansa
End Function

Function LoadTIL(file$)
f=OpenToEdit(file)
SeekFile f,824
tw=ReadInt(f):th=ReadInt(f)
mw=ReadInt(f):mh=ReadInt(f)
SeekFile f,FileOffset(f)+4+(mw*mh*4)+4
mappi=MakeMap(mw,mh,tw*8,th*8)
For y=1 To mh
For x=1 To mw
EditMap mappi,2,x,y,ReadInt(f)
Next x
Next y
CloseFile f
Return mappi
End Function
Tekstuuri luotiin vähn hassusti drawtoimagella, mutta sen voi tehdä ihan tekstuuri=loadimage("kiva kuva")

Ensin ajattelin tehdä niin, että tekstuurina toimisi tilemapin tile joka tilelle, mutta muistia kului liikaa, noin 8 gigaa olisi kulunut, ja gigan kohdalla tuli mavi. Ensinnäkin läheskään kaikissa koneissa ei riitä sellaiseen muisti.

Vastapainoksi sille, ettei tullut montaa tekstuuria, kasvatin resoluutiota, miatä juontaa latausaika.

Tämä oli pikaiden esimerkki, jossa ei tullut paljoa kommentteja laitettua. Joku voi ottaa tehtäväkseen parannella, jos huvittaa.
EDIT:

Törmäys näemmä katosi jossain vaiheessa jonnekkin.

Last edited by atomimalli on Sun Dec 30, 2007 12:06 pm, edited 1 time in total.
AllAh -Guest

Re: Tyhmät kysymykset

Post by AllAh -Guest »

Kun aloittelen sitä RPG:täni kohta niin kertokaapas minulle yksi asia.
Nyt teen ensimmäistä kertaa grafiikat gimpillä. Voinkait laittaa sen giffikuvana(vai mikä se tiedostomuoto oli kun haluttiin saada animoitua?) eli suoraan animaationa,ei sillai niinkuin pitää säätää paintilla. Eli tasoissa,ei peräkkäin.
Kiitti tulevasta(ko?) vastauksesta tyhmimpään kysymykseen mitä täällä on nähty
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Tyhmät kysymykset

Post by Harakka »

AllAh -Guest wrote:Kun aloittelen sitä RPG:täni kohta niin kertokaapas minulle yksi asia.
Nyt teen ensimmäistä kertaa grafiikat gimpillä. Voinkait laittaa sen giffikuvana(vai mikä se tiedostomuoto oli kun haluttiin saada animoitua?) eli suoraan animaationa,ei sillai niinkuin pitää säätää paintilla. Eli tasoissa,ei peräkkäin.
Kiitti tulevasta(ko?) vastauksesta tyhmimpään kysymykseen mitä täällä on nähty
Et voi ainakaan sisäänrakennetuilla komennoilla, mutta tästä kehittelemällä saattaisi onnistua.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
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 »

AllAh -Guest wrote:Kun aloittelen sitä RPG:täni kohta niin kertokaapas minulle yksi asia.
Nyt teen ensimmäistä kertaa grafiikat gimpillä. Voinkait laittaa sen giffikuvana(vai mikä se tiedostomuoto oli kun haluttiin saada animoitua?) eli suoraan animaationa,ei sillai niinkuin pitää säätää paintilla. Eli tasoissa,ei peräkkäin.
Kiitti tulevasta(ko?) vastauksesta tyhmimpään kysymykseen mitä täällä on nähty
Itse sanoisin, että vierekkäiset framet on selkein ja helpoin tapa, ja mikäli GIMP on niin laadukas ohjelma kuin sanotaan, kuvittelisi siitä löytyvän animaation exporttaus-ominaisuuden.
AllAh -Guest

Re: Tyhmät kysymykset

Post by AllAh -Guest »

koodaaja wrote:
AllAh -Guest wrote:Kun aloittelen sitä RPG:täni kohta niin kertokaapas minulle yksi asia.
Nyt teen ensimmäistä kertaa grafiikat gimpillä. Voinkait laittaa sen giffikuvana(vai mikä se tiedostomuoto oli kun haluttiin saada animoitua?) eli suoraan animaationa,ei sillai niinkuin pitää säätää paintilla. Eli tasoissa,ei peräkkäin.
Kiitti tulevasta(ko?) vastauksesta tyhmimpään kysymykseen mitä täällä on nähty
Itse sanoisin, että vierekkäiset framet on selkein ja helpoin tapa, ja mikäli GIMP on niin laadukas ohjelma kuin sanotaan, kuvittelisi siitä löytyvän animaation exporttaus-ominaisuuden.
Mutta kun niitä eri hahmoja ja muita tulee kuitenkin aika paljon niin välttyisi turhalta if keydown then anim then paskaa if lisää paskaa then-sähellykseltä :D
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 »

AllAh -Guest wrote:
koodaaja wrote:
AllAh -Guest wrote:Kun aloittelen sitä RPG:täni kohta niin kertokaapas minulle yksi asia.
Nyt teen ensimmäistä kertaa grafiikat gimpillä. Voinkait laittaa sen giffikuvana(vai mikä se tiedostomuoto oli kun haluttiin saada animoitua?) eli suoraan animaationa,ei sillai niinkuin pitää säätää paintilla. Eli tasoissa,ei peräkkäin.
Kiitti tulevasta(ko?) vastauksesta tyhmimpään kysymykseen mitä täällä on nähty
Itse sanoisin, että vierekkäiset framet on selkein ja helpoin tapa, ja mikäli GIMP on niin laadukas ohjelma kuin sanotaan, kuvittelisi siitä löytyvän animaation exporttaus-ominaisuuden.
Mutta kun niitä eri hahmoja ja muita tulee kuitenkin aika paljon niin välttyisi turhalta if keydown then anim then paskaa if lisää paskaa then-sähellykseltä :D
Niin jaa, oletin omia projektejani ajatellen tietysti heti, että teet isometristä. Siinähän tuonsorttiselta ei oikein voi välttyä.
AllAh -Guest

Re: Tyhmät kysymykset

Post by AllAh -Guest »

koodaaja wrote:
Niin jaa, oletin omia projektejani ajatellen tietysti heti, että teet isometristä. Siinähän tuonsorttiselta ei oikein voi välttyä.
Teen millintarkkaa grafiikkaa tähän peliin. Yritän sillä peittää sitä surkeaa pelimoottoria.
Katsos jos ei osaa koodata niin hyvin kuin kaikki koodaajat :mrgreen:
Quadron

Re: Tyhmät kysymykset

Post by Quadron »

Quadron wrote:Mahdollisesti erittäin tyhmä kysymys, mutta...

Ongelmani koskee koodin suorittamista. En pääse alkua pitemmälle koska ohjelma väittää koodin olevan jo suoritettavana. Miten pitäisi toimia?
Josko kerran vielä uskaltaisin toistaa tämän kysymyksen, ennen kuin annan koko asian olla. Jos minkäänlaisen ratkaisun tähän ongelmaan olisi joku keksinyt, olisin hyvin kiitollinen.
iTKEVAnAKKI
Advanced Member
Posts: 335
Joined: Tue Aug 28, 2007 3:55 pm
Location: Siellä jossain

Re: Tyhmät kysymykset

Post by iTKEVAnAKKI »

Quadron wrote:
Quadron wrote:Mahdollisesti erittäin tyhmä kysymys, mutta...

Ongelmani koskee koodin suorittamista. En pääse alkua pitemmälle koska ohjelma väittää koodin olevan jo suoritettavana. Miten pitäisi toimia?
Josko kerran vielä uskaltaisin toistaa tämän kysymyksen, ennen kuin annan koko asian olla. Jos minkäänlaisen ratkaisun tähän ongelmaan olisi joku keksinyt, olisin hyvin kiitollinen.
viewtopic.php?f=10&t=394 lueppa tuolta :)
Projektit:
Joku projekti meneillään... Mitähän siitäkin tulee ;)
Guest

Re: Tyhmät kysymykset

Post by Guest »

Miten saan kuvan piirrettyä kauemmaksi kamerasta kuin toisen kuvan? Eli sivultapäin kuvatussa pelissä olisi tarkoitus saada tausta kauemmaksi kamerasta kuin muu maasto. Objekteillahan se onnistuu helposti, mutta mites kuvilla...?
Rufi
Member
Posts: 50
Joined: Fri Dec 21, 2007 11:12 am

Re: Tyhmät kysymykset

Post by Rufi »

Eipä mitään enään...


//offtopic
W00t, linkki, jossa näkyy minun komea avatarini ja nickini päällimmäisenä O.o (kts. ylempää ylempi viesti)
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.
Quadron

Re: Tyhmät kysymykset

Post by Quadron »

No nyt toimii. Olin tietysti unohtanut ajaa ohjelman järjestelmänvalvojana. Kiitos paljon!
Guest

Re: Tyhmät kysymykset

Post by Guest »

Yritin tehdä gradient-funktiota, mutta tässä on kyllä jotakin vikaa, koska gradienttiin tulee outoja raitoja. Kopiokaa koodi CB:seen ja kokeilkaa:

Code: Select all

menuback = MakeImage(ScreenWidth(), ScreenHeight())
MakeGradient(menuback, ScreenWidth(), ScreenHeight(), 0, 0, 0, 255, 255, 255)

Repeat 
   DrawImage menuback, 0, 0
   DrawScreen 
Until KeyHit(cbkeyreturn) 

Function MakeGradient(Img, width, height, R1#, G1#, B1#, R2#, G2#, B2#)
    Rdifference# = (r1 - r2) / height
    Gdifference# = (g1 - g2) / height
    Bdifference# = (b1 - b2) / height
    DrawToImage Img
    For i = 1 To height
        Color R1 - Rdifference * i, G1 - Gdifference * i, B1 - Bdifference * i
        Line 0, i, width, i
    Next i
    DrawToScreen 
End Function 
Mistä nuo raidat voisivat johtua?
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 »

Vieras wrote:Yritin tehdä gradient-funktiota, mutta tässä on kyllä jotakin vikaa, koska gradienttiin tulee outoja raitoja. Kopiokaa koodi CB:seen ja kokeilkaa:

Code: Select all

koodia...
Mistä nuo raidat voisivat johtua?
Ei minulla ainakaan mitään raitoja tule, gradientti onnistui ihan täydellisesti.
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
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 »

Guest wrote:Yritin tehdä gradient-funktiota, mutta tässä on kyllä jotakin vikaa, koska gradienttiin tulee outoja raitoja. Kopiokaa koodi CB:seen ja kokeilkaa:

Code: Select all

menuback = MakeImage(ScreenWidth(), ScreenHeight())
MakeGradient(menuback, ScreenWidth(), ScreenHeight(), 0, 0, 0, 255, 255, 255)

Repeat 
   DrawImage menuback, 0, 0
   DrawScreen 
Until KeyHit(cbkeyreturn) 

Function MakeGradient(Img, width, height, R1#, G1#, B1#, R2#, G2#, B2#)
    Rdifference# = (r1 - r2) / height
    Gdifference# = (g1 - g2) / height
    Bdifference# = (b1 - b2) / height
    DrawToImage Img
    For i = 1 To height
        Color R1 - Rdifference * i, G1 - Gdifference * i, B1 - Bdifference * i
        Line 0, i, width, i
    Next i
    DrawToScreen 
End Function 
Mistä nuo raidat voisivat johtua?
Toki kun korkeus on yli 255, muutamasta vaakaraidasta tulee samanvärisiä. Mutta tätä on mahdotonta välttää, ainakaan CB:n keinoin. Muuten se toimi myös minulla täydellisesti.
Qesti

Re: Tyhmät kysymykset

Post by Qesti »

Mitenköhän saisi hahmon hidastumaan tietyn tilen päällä jos mappi on tehty tilesetistä? Että esim. hahmo liikkuu normaalisti 2 vauhtia, mutta ko. tilen päällä se liikkuisi vain 1:tä?
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 »

Qesti wrote:Mitenköhän saisi hahmon hidastumaan tietyn tilen päällä jos mappi on tehty tilesetistä? Että esim. hahmo liikkuu normaalisti 2 vauhtia, mutta ko. tilen päällä se liikkuisi vain 1:tä?
Pistät tilemapin data-kerrokseen tähän tileen jonkun arvon, vaikkapa 6. Sitten katsot mitä löytyy ukon alta tyyliin "GetMap(3,objectx(obj),objecty(obj))" ja jos tämä on 6, niin ukkoa hidastetaan.
Locked