Tien rakennus

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
MrMonday
Advanced Member
Posts: 378
Joined: Fri Oct 10, 2008 2:35 pm

Tien rakennus

Post by MrMonday »

Eli tällä kertaa ongelmana on, että miten saisin tehtyä systeemin, jolla voisi luoda sulavamutkaista tietä? Kaiken näköistä on tullut yritettyä, mutta mitään toimivaa ei ole vielä tullut.
Tämän hetkinen tilanne:

Code: Select all

SCREEN 800,600

    map = MakeImage(ScreenWidth(),ScreenHeight()) 
    DrawToImage map

    For x = o To ImageWidth(map)
        For y = o To ImageHeight(map)
            Color 0,Rand(100,150),0
            Dot x,y
        Next y
    Next x

    DrawToScreen

Dim ROAD(360)

    road_img = MakeImage(100,25) 
    
    DrawToImage road_img

    For x = 0 To 19
        For y = 0 To 25
            brown = Rand(50,100)
            Color brown+100,brown+50,0
            Dot x,y
        Next y
    Next x
    
    For x = 20 To 39
        For y = 0 To 25
            brown = Rand(50,100)
            Color brown+50,brown,0
            Dot x,y
        Next y
    Next x
    
    For x = 40 To 59
        For y = 0 To 25
            brown = Rand(50,100)
            Color brown+100,brown+50,0
            Dot x,y
        Next y
    Next x
    
    For x = 60 To 79
        For y = 0 To 25
            brown = Rand(50,100)
            Color brown+50,brown,0
            Dot x,y
        Next y
    Next x
    
    For x = 80 To 100
        For y = 0 To 25
            brown = Rand(50,100)
            Color brown+100,brown+50,0
            Dot x,y
        Next y
    Next x
    
    DrawToScreen
    
RotateImage Road_img, 90

    For angle = 0 To 360
        ROAD(angle) = CloneImage(Road_img)
        RotateImage ROAD(angle), -angle
    Next angle
    
    ix# = ScreenWidth()/2
    iy# = ScreenHeight()/2
    
Repeat

    DrawImage map,0,0

    If KeyDown(203) Then angle = angle + 1
    If KeyDown(205) Then angle = angle - 1
    
    If angle < 0 Then angle = 360
    If angle > 360 Then angle = 0
    
    If t > 0 Then t = t - 1
    
    If KeyDown(57) And t = 0 Then
        t = 50
        DrawToImage map
            DrawImage ROAD(angle), ix#,iy#
            ix# = ix# + Cos(angle)*20
            iy# = iy# - Sin(angle)*20
        DrawToScreen
    EndIf
    
    DrawGame
    Color 255,0,0
    Text 0,0,"Angle = "+angle

    DrawScreen
    
Until KeyHit(1)
screenshot
screenshot
asd.png (414.65 KiB) Viewed 3840 times
Itse pääsilmukka on varsin lyhyt, ja kohtalaisen helposti ymmärrettävä viimeistään ajon jälkeen. Lähinnä kaipaisin vinkkejä, että miten systeemi olisi mahdollista toteuttaa niin, ettei mutkat jäisi noin ikävästi auki.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tien rakennus

Post by Jonez »

Piirrä käännettävä kulma hieman edellisen tiepalasen päälle niin että välejä ei näy. Eli siis piirrä niin, että kääntökulman koordinaatit ovat samat kuin edellisen palasen lähimmän kulman koordinaatit.

Huomaa että edellisen palan kulma vaihtelee yläkulman ja alakulman välillä riippuen siitä kumpaan suuntaan palaa käännät.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Tien rakennus

Post by axu »

Tai sitten ihan toisenlainen lähestymistapa (tämä on hieman aikaa vievä cb:llä, mutta lopputulos 100% varma): rajaa ensin radan viemä alue ja teksturoi se. Tarkemmat ohjeet alla.
  1. Lataa jokainen tekstuuri ja venytä (tai ennemmin lado vierekkäin) ne koko pelikentän kokoisiksi.
  2. Tee kentän kokoinen kuva, johon piirretään itse rata.
  3. Piirrä ensin radan reunat viivoilla (jos haluat useampaa tekstuuria kuten näyttämässäsi kuvassa, myös näiden rajat tulee piirtää).
  4. Täytä rajojen sisältä tietyllä värillä (tämä vaihe on se aikaavievä).
  5. Käytä maskivärinä tuota täyttöväriä ja piirrä kuva tekstuurikuvan päälle (jolloin täytetty alue saa tekstuurin).
  6. Kopioi viimeksi käytetty tekstuurikuva takaisin ratakuvaan (joko piirtämällä tämä kuva siihen, copyboxilla tai cloneimagella - sanoisin, että copybox lienee nopein).
  7. Toista kaikille tekstuureille vaiheet 4-6.
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
Post Reply