Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Nasse-setä
Member
Posts: 54
Joined: Fri Apr 03, 2009 8:12 pm
Location: Loviisa

Re: Tyhmät kysymykset

Post by Nasse-setä »

LittleGreen wrote:
Nasse-setä wrote:Tilesetin vaihtaminen lennossa, miten se tapahtuu yleensäkin ja onko jotain erityisjuttuja mitä pitää ottaa huomioon
Tilesetti on tietääkseni vain kuva, joten sen vaihtoon soveltuu PaintObject, mutta jos tarkoitit tilemappia, niin MultiMapSystemillä voi tallentaa monia tilemappeja ja vaihtaa niitä lennossa. Yksinkertaisempi DeleteMap + LoadMap voi hidastaa reaaliajassa käytettynä(?).
läpäläpä...
EDIT:Ei mitään googlella löytykin.
Osallistu suuren tilastoon -> viewtopic.php?f=13&t=1756
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset

Post by Hene »

Pystyykö CB:llä AddTextissä keskittämään tekstiä samalla tavalla, kuten HTML:ssä on "center" tagit?
"Baby," I said. "I'm a genius but nobody knows it but me."
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

Jep, käyttäen Locate-komentoa.
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset

Post by Hene »

Grandi wrote:Jep, käyttäen Locate-komentoa.

Voisitko vielä vääntää rautalangasta, ja kertoa miten tuo tehdään? : )
"Baby," I said. "I'm a genius but nobody knows it but me."
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset

Post by Awaclus »

Hene wrote:Voisitko vielä vääntää rautalangasta, ja kertoa miten tuo tehdään? : )
Näin:

Code: Select all

Locate 200, 150
AddText "* tähti on koordinaateissa 200|150"
Taatero
Advanced Member
Posts: 384
Joined: Tue May 27, 2008 6:06 pm

Re: Tyhmät kysymykset

Post by Taatero »

Hene wrote:
Grandi wrote:Jep, käyttäen Locate-komentoa.

Voisitko vielä vääntää rautalangasta, ja kertoa miten tuo tehdään? : )
Jos tarkoitat keskelle tasattua tekstiä, niin näin:

Code: Select all

teksti$="Hei! Olen keskitetty merkkijono"

Repeat

Locate (ScreenWidth()-TextWidth(teksti$))/2,ScreenHeight()/2-TextHeight(teksti$)/2
AddText ""+teksti$
 
DrawScreen
 
Forever
[color=#40BF00][u]koodaaja[/u][/color] wrote:Täyden turvan takaamiseksi avain olisi myös kuljetettava offlinenä suoraan tulevien viestien lähettäjältä niiden vastaanottajalle laitakaupungin hämärissä yöneljältä ja varmistettava, ettei kumpaakaan osapuolta seurata. Popliinitakkia suositellaan.
Luuster
Newcomer
Posts: 30
Joined: Mon Feb 23, 2009 7:04 pm
Location: #joku vika jossakin#

Re: Tyhmät kysymykset

Post by Luuster »

Milläs pirulla saan "Nuolen" lähtemään aina ukon kohalta. Jonkunsortin matemaattisella kaavalla tuolla functiossa?

Code: Select all

ukkox=25
ukkoy=200

Repeat



  Circle ukkox,200,15
  If KeyDown(203) Then ukkox = ukkox - 1
  If KeyDown(205) Then ukkox = ukkox + 1 
  If KeyDown(205) Then ukkoy = ukkoy + 1
  If KeyDown(203) Then ukkoy = ukkoy - 1
  If MouseHit(1)
    kivi(ukkox,ukkoy)
  EndIf  
  
  DrawScreen
  
Forever  



Function kivi(x,y)
    Repeat
    
    DrawScreen OFF
    
    Dot x,200-(-0.003*x^2+x)
    x=x+1    

    Until MouseHit(1)
EndFunction 
Nasse-setä
Member
Posts: 54
Joined: Fri Apr 03, 2009 8:12 pm
Location: Loviisa

Re: Tyhmät kysymykset

Post by Nasse-setä »

Miten saan tehtyä niin että objektini liikkuu vinosti toiseen ruutuun joka sijaitsee vinosti sen lähtöruudun vieressä(kartta ruudutettu tilejen rajojen mukaan) että sen liikkeen näkee (eli ei positionobject), mutta niin että itse kuva ei käänny. Toivottavasti tajusitte :oops: .
Osallistu suuren tilastoon -> viewtopic.php?f=13&t=1756
Luuster
Newcomer
Posts: 30
Joined: Mon Feb 23, 2009 7:04 pm
Location: #joku vika jossakin#

Re: Tyhmät kysymykset

Post by Luuster »

TranslateObject liikuta objectia kulmasta riippumatta.
Mr. Awell

Re: Tyhmät kysymykset

Post by Mr. Awell »

Pyydän pyhästi anteeksi etten lukenut jokaista 150 sivua...

Onko olemassa jokin helppo tapa säätää kahden objekstin etäisyyttä/estää objekteja menemästä liian kauas toisistaan?
Jonkinlaista köydelläheilumis systeemiä kehitän, enkä mitään kovin monimutkaista kaavaa jaksaisi keksiä.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset

Post by esa94 »

Mr. Awell wrote:Pyydän pyhästi anteeksi etten lukenut jokaista 150 sivua...

Onko olemassa jokin helppo tapa säätää kahden objekstin etäisyyttä/estää objekteja menemästä liian kauas toisistaan?
Jonkinlaista köydelläheilumis systeemiä kehitän, enkä mitään kovin monimutkaista kaavaa jaksaisi keksiä.
Awell, älä pyydä anteeksi; Käytä vain ensi kerralla aluksi hakua! Tyhmät kysymykset-ketju on nimenomaan näitä ärsyttäviä, mahdollisesti nopeita kysymyksiä varten. ;)

Mutta itse asiaan. Oliko tarkoitus pitää etäisyys vakiona (ts. esine pyörii toisen ympärilllä) vai pitää se korkeintaan tietyn mittaisena?
Mr. Awell

Re: Tyhmät kysymykset

Post by Mr. Awell »

Pitää korkeintaan tiettynä matkana.

En saanut muotoiltua hakuun...
User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

Re: Tyhmät kysymykset

Post by kaneli2000 »

Miten saa typen fieldin muuttujasta, joka on ladattu textitiedostosta?
Tyyliin:

Code: Select all

//joku1$ ja joku2$ ladataan tiedostosta

Type joku
Field joku1$
Field joku2$
EndType

[...]
I see the rainbow rising
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset

Post by MaGetzUb »

kaneli2000 wrote:Miten saa typen fieldin muuttujasta, joka on ladattu textitiedostosta?
Tyyliin:

Code: Select all

//joku1$ ja joku2$ ladataan tiedostosta

Type joku
Field joku1$
Field joku2$
EndType

[...]
Kirjoitat For Each silmukan sisällä olevat arvot tiedostoon.

Lasket eka "Typen field muuttujien" määrä näin:
For jku.joku = Each Joku
määrä = määrä + 1
Next jku


Kirjoitat tuon määrä muuttujan johonkin kohtaan tiedostoa.
Avatessasi tiedostoa luet tuon 'määrä' muutujan toiseen muuttujaan (määrä = ReadLine(f))
Sitten käyt läpi 0 määrää muuttujaan asti rivit näin:

Code: Select all

f = OpenToRead("lol.txt")
Määrä = ReadLine(f)
For i = 1 To Määrä 
jku.Joku = New(Joku)
jku\joku1$ =  ReadLine(f)
jku\joku2$ =  ReadLine(f)
Next i
CloseFile f
Jos oli epäselvää niin joku terveempi mielinen voi kirjoittaa koko höskän uusistaan.
Regaliksen The 14 Black Crusaden Kenttä editorissa oli tällä tyylillä tehty lataus/tallennus.

Täs nyt on lainattuna regaliksen tekemästä kenttäeditorista koodi.
viewtopic.php?f=11&t=519&start=60
regalis wrote:

Code: Select all

SCREEN 800, 600

Dim scenery(500)
Dim scenerynames(500) As String
Dim rain(500, 5) As Float

Type SCENERYOBJECTS
    Field sceX      As Float
    Field sceY      As Float
    Field layer     As integer
    Field name      As String
End Type

Type WAYPOINTS
    Field Xcoord
    Field Ycoord
    Field speedX    As Float
    Field speedY    As Float
    Field speedX2    As Float
    Field speedY2    As Float    
    Field newX
    Field newY
    Field newX2
    Field newY2
End Type

Global backlayer

rainAmount = 500
raintype = 1

backvisible = True
hitvisible = True
overvisible = True 

circ = MakeImage(5,5)
DrawToImage circ
    Color cbdarkred
    Circle 0,0, 5
    Color cbred
    Circle 1,1, 3
DrawToScreen 
Color cbwhite

For i = 0 To RainAmount
    Rain(i,0) = Rand(1, 800)
    rain(i,01) = Rand(-600, 0)
Next i

AddText "Ladataan maastonkappaleita..."
DrawScreen 

ChDir "SCENERY"

StartSearch
    Repeat
        file$ = FindFile()
        If file$ = "" Then Exit
        AddText "file: " +file
        DrawScreen 
        If IsDirectory(file) = False And file <> "Thumbs.db" Then 
            scenery(maastonkappaleet) = LoadImage(file$)
            MaskImage scenery(maastonkappaleet), 0, 255, 0
            scenerynames(maastonkappaleet) = file$
            maastonkappaleet + 1
        EndIf 
    Forever
EndSearch

ChDir ".."
ChDir "MAPS"

Repeat
    ClearText
    LoadedMap$ = Input ("Karttatiedoston polku (jos tiedostoa ei ole olemassa, se luodaan): ")
    If KeyHit(cbkeyreturn) Then 
        If FileExists(loadedmap) Then
            kartanpolku$ = Loadedmap         
            Gosub mapload
            CloseInput
            Goto EDITOR
        Else
            kartanpolku$ = Loadedmap    
            CloseInput             
            Goto NEWLEVEL
        EndIf 
    EndIf 
    DrawScreen
Forever

NEWLEVEL:
ChDir "MAPS"

Repeat 
    texture$ = Input ("Tekstuuritiedoston polku: ")
    DrawScreen
Until KeyHit(cbkeyreturn)

MapTexture = LoadImage(texture) 
CloseInput 

Repeat 
    shape$ = Input ("Karttatiedoston polku: ")
    DrawScreen
Until KeyHit(cbkeyreturn)

MapShape = LoadImage(shape) 
CloseInput 

AddText "Luodaan karttaa..."
DrawScreen

MaskImage MapShape, 0, 255, 0
ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2

Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))

HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
DrawToImage HitLayer
    For x = 0 To Xkerroin
        For y = 0 To Ykerroin
            DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
        Next y
    Next x
DrawImage MapShape, 0, 0

BackLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))

DrawToScreen

EDITOR:

showpoints = True 

Repeat 

Color cbwhite 

    ClearText
    AddText "FPS: " +FPS()
    AddText "Valitse tasojen näkyvyys A-, S- ja D-näppäimillä."
    AddText "Luo waypointeja klikkaamalla hiiren oikeaa painiketta."
    AddText "Valitse taustaväri painamalla control-näppäintä"
    AddText "Valitse sateen tyyppi 1, 2 tai 3 -näppäintä"
    AddText " "
    AddText "Taustakerros: " +backvisible
    
    If KeyHit(30) Then
        If backvisible = False Then backvisible = True Else backvisible = False
    EndIf
    If backvisible = True Then DrawImage backlayer, WorldToScreenX(0), WorldToScreenY(0)
    
    AddText "Törmäyskerros: " +hitvisible
    If KeyHit(31) Then
        If hitvisible = False Then hitvisible = True Else hitvisible = False
    EndIf     
    If hitvisible = True Then DrawImage hitlayer, WorldToScreenX(0), WorldToScreenY(0)    
    
    AddText "Päälliskerros: " +overvisible
    If KeyHit(32) Then
        If overvisible = False Then overvisible = True Else overvisible = False
    EndIf
    If overvisible = True Then DrawImage overlayer, WorldToScreenX(0), WorldToScreenY(0) 
    
    AddText ""
    AddText "Muokattava kerros: " + editedlayer
    
    If KeyHit(16) Then EditedLayer = 1
    If KeyHit(17) Then editedlayer = 2
    If KeyHit(18) Then editedlayer = 3
    
    TranslateCamera  RightKey() * 5 - LeftKey() * 5, UpKey() * 5 - DownKey() * 5
    
    if KeyHit(59) Then Gosub SaveMap
    
    If KeyHit(157) Then
        Repeat 
            ClearText
            AddText "colorsetup: " +colorsetup
            AddText "RED 1: " +r1
            AddText "GREEN 1: " + g1
            AddText "BLUE 1: " +b1
            AddText "RED 2: " +r2
            AddText "GREEN 2: " + g2
            AddText "BLUE 2: " +b2          
            Select colorsetup
                Case 0
                    If LeftKey() Then R1 - 1
                    If RightKey() Then R1 + 1
                Case 1
                    If LeftKey() Then G1 - 1
                    If RightKey() Then G1 + 1 
                Case 2
                    If LeftKey() Then B1 - 1
                    If RightKey() Then B1 + 1   
                Case 3
                    If LeftKey() Then R2 - 1
                    If RightKey() Then R2 + 1
                Case 4
                    If LeftKey() Then G2 - 1
                    If RightKey() Then G2 + 1 
                Case 5
                    If LeftKey() Then B2 - 1
                    If RightKey() Then B2 + 1 
                    If KeyHit(208) Then Exit                  
            End Select
            If KeyHit(200) Then colorsetup - 1
            If KeyHit(208) Then colorsetup + 1

            DrawScreen 
        Forever 
        MakeGradient(ImageWidth(backlayer) * 1.5, ImageHeight(backlayer) * 1.5, r1, g1, b1, r2, g2, b2)
    EndIf
    
    Select RainType
        Case 1
            For i = 0 To RainAmount
                If Rain(i,2) = 0 Then Rain(i,2) = Rnd(4,5)
                If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                Rain(i,0) = Rain(i,0) - rain(i, 2)
                Rain(i,1) = Rain(i,1) + rain(i, 3)
                
                Dot rain(i,0), rain(i,1)
                
                If Rain(i,1) > 800 Or rain(i,0) < 0 Then Rain(i,1) = 0 : Rain(i,0) = Rand(2,1800)
            Next i
        Case 2
            For i = 0 To RainAmount
                rain(i,2) = 0
                If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                Rain(i,0) = Rain(i,0) - rain(i, 2)
                Rain(i,1) = Rain(i,1) + rain(i, 3)
                
                Dot rain(i,0), rain(i,1)
                
                If Rain(i,1) > 800 Then Rain(i,1) = 0 : Rain(i,0) = Rand(0,800)
            Next i             
    End Select
        
    If KeyHit(cbkey1) Then raintype = 1
    If KeyHit(cbkey2) Then raintype = 2
    If KeyHit(cbkey3) Then raintype = 3
    
    If KeyHit(cbkeyZ) Then
        If showpoints = False Then showpoints = True Else showpoints = False
    EndIf 
    
    AddText "PlacingWaypoint: " +placingwaypoint
    
    If MouseHit(2) And placingwaypoint = False Then
        way.WAYPOINTS = New(WAYPOINTS)
        waypointAmount + 1
        way\Xcoord = MouseWX()
        way\Ycoord = MouseWY()
        PlacingWaypoint = True 
    EndIf    
    
    If PlacingWaypoint = True Then
        AddText "Klikkaamalla hiiren vasemmalla painikkeella saat valittua mihin suuntaan"
        AddText "botti lähtee tullessaan waypointille."
        AddText "Voit luoda toisen vaihtoehtoisen suunnan klikkaamalla hiiren keskimmäisellä"
        AddText "painikkeella. Tullessaan waypointille, johon on tallennettu kaksi suuntaa, "
        AddText "botti lähtee sattumanvaraisesti toiseen niistä."
        angle = GetAngle(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
        dist = Distance(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
        Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY()
        If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
        If MouseHit (1) Then 
            If Dist > 5 Then way\speedX = Cos(angle) : way\speedy = Sin(angle)
            way\newX = MouseWX()
            way\newY = MouseWY()            
            placingWaypoint = False
        EndIf 
        If MouseHit(3) Then
            If Dist > 5 Then way\speedX2 = Cos(angle) : way\speedY2 = Sin(angle)
            way\newX2 = MouseWX()
            way\newY2 = MouseWY()
        EndIf
    ElseIf showpoints = True
        For way.WAYPOINTS = Each WAYPOINTS
            DrawImage circ, WorldToScreenX(way\Xcoord) - 3, WorldToScreenY(way\Ycoord) - 3
            Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX), WorldToScreenY(way\newY)
            If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
        Next way
    EndIf 
    
    If placingScenery = ON Then
        DrawImage scenery(whatscenery), MouseX(), MouseY()
        If MouseHit(1) Then 
            If Editedlayer = 1 Then
                DrawToImage BackLayer
            ElseIf EditedLayer = 2
                DrawToImage HitLayer
            ElseIf EditedLayer = 3
                DrawToImage OverLayer
            EndIf 
            DrawImage scenery(whatscenery), MouseWX(), -MouseWY()
            DrawToScreen
            sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
            sce\sceX = MouseWX()
            sce\sceY = -MouseWY()
            sce\layer = editedlayer
            sce\name = scenerynames(whatscenery)
            sceneryamount + 1
            PlacingScenery = OFF
        EndIf 
    EndIf     
    
    For i = 0 To maastonkappaleet
        Text 650, i *10, scenerynames(i)
        If MouseX() > 650 Then 
            If MouseY() > i * 10 And MouseY() < 10 * i + 10 Then 
                Box 650, i * 10, 150, 10, 0
                If MouseHit(1) And scenery(i) <> 0 Then 
                    PlacingScenery = ON 
                    WhatScenery = i
                EndIf 
            EndIf
        EndIf 
    Next i

    DrawScreen
Forever

'******************************************************************************************

SAVEMAP:
ChDir "MAPS"
m = OpenToWrite (kartanpolku)
    WriteLine m, shape
    WriteLine m, texture
    WriteLine m, raintype
    WriteLine m, R1
    WriteLine m, G1    
    WriteLine m, B1    
    WriteLine m, R2
    WriteLine m, G2    
    WriteLine m, B2       
    
    WriteLine m, "************************ MAASTONKAPPALEET: ***************************"
    
    WriteLine m, sceneryamount
    For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
        WriteLine m, sce\name    
        WriteLine m, sce\sceX
        WriteLine m, sce\sceY
        WriteLine m, sce\layer
    Next sce
    
    WriteLine m, "***************************** WAYPOINTIT ****************************** "
    
    WriteLine m, waypointamount
    For way.WAYPOINTS = Each WAYPOINTS
        WriteLine m, way\Xcoord
        WriteLine m, way\Ycoord
        WriteLine m, way\speedX
        WriteLine m, way\speedY
        WriteLine m, way\speedX2
        WriteLine m, way\speedY2
    Next way
CloseFile m
Return

ChDir ".."

MAPLOAD:

    m = OpenToRead (kartanpolku)
        shape$ = ReadLine (m)
        texture$ = ReadLine (m)
        raintype = ReadLine (m)
        R1 = ReadLine (m)
        G1 = ReadLine(m)
        B1 = ReadLine(m)
        R2 = ReadLine(m)
        G2 = ReadLine(m)
        B2 = ReadLine(m)
        
        empty = ReadLine(m)
        
        sceneryamount = ReadLine (m)
        For i = 1 To sceneryamount
            sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
            sce\name = ReadLine (m)            
            sce\sceX = ReadLine (m)
            sce\sceY = ReadLine (m)
            sce\layer = ReadLine (m)
        Next i
        
        empty = ReadLine(m)        
        
        waypointamount = ReadLine (m)
        For i = 1 To waypointamount
            way.WAYPOINTS = New(WAYPOINTS)
            
            way\Xcoord = ReadLine (m)
            way\Ycoord = ReadLine (m)
            way\speedX = ReadLine (m)
            way\speedY = ReadLine (m)
            way\speedX2 = ReadLine (m)
            way\speedY2 = ReadLine (m)
            
        Next i
    CloseFile m
    
    ChDir "MAPS"    

    'luodaan layerit
    MapTexture = LoadImage(texture) 
    
    MapShape = LoadImage(shape) 
    
    MaskImage MapShape, 0, 255, 0
    ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2
    
    Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
    Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))
    
    HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    DrawToImage HitLayer
        For x = 0 To Xkerroin
            For y = 0 To Ykerroin
                DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
            Next y
        Next x
        DrawImage MapShape, 0, 0
    DrawToScreen 
    
    MapX = ImageWidth(MapShape)
    MapY = ImageHeight(MapShape)

    BackLayer = MakeImage (Mapx, MapY)
    
    OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    
    Color cbwhite
    
    'piirretään maasto
    For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
        If sce\layer = 1 Then 
            DrawToImage BackLayer
        ElseIf sce\layer = 2
            DrawToImage HitLayer
        ElseIf sce\layer = 3
            DrawToImage OverLayer
        EndIf
        
        For i = 0 To maastonkappaleet
            If scenerynames(i) = sce\name And sce\sceX < MapX And sce\sceX < MapY Then 
                DrawImage scenery(i), sce\sceX, sce\sceY
            EndIf 
        Next i

    Next sce
            
    DrawToScreen
    
    ChDir ".."
            
Return 

'******************************************************************************************
Function ScreenToWorldX(sc)
  wc = CameraX() - ScreenWidth() / 2 + sc
  Return wc
End Function

Function ScreenToWorldY(sc)
  wc = CameraY() + ScreenHeight() / 2 - sc
  Return wc
End Function

Function WorldToScreenX(wc)
  sc = -CameraX() + ScreenWidth() / 2 + wc
  Return sc
End Function

Function WorldToScreenY(wc)
  sc = CameraY() + ScreenHeight() / 2 - wc
  Return sc
End Function

Function MakeGradient(width, height, R1#, G1#, B1#, R2#, G2#, B2#)
    Rdifference# = (Max(R1, R2) - Min(R1,R2)) / height
    Gdifference# = (Max(G1, G2) - Min(G1,G2)) / height
    Bdifference# = (Max(B1, B2) - Min(B1,B2)) / height
    DrawToImage BackLayer
    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 
EDIT:

Nimenomaan tässä on tallenus/lataus:

Code: Select all

'******************************************************************************************

SAVEMAP:
ChDir "MAPS"
m = OpenToWrite (kartanpolku)
    WriteLine m, shape
    WriteLine m, texture
    WriteLine m, raintype
    WriteLine m, R1
    WriteLine m, G1   
    WriteLine m, B1   
    WriteLine m, R2
    WriteLine m, G2   
    WriteLine m, B2       
   
    WriteLine m, "************************ MAASTONKAPPALEET: ***************************"
   
    WriteLine m, sceneryamount
    For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
        WriteLine m, sce\name   
        WriteLine m, sce\sceX
        WriteLine m, sce\sceY
        WriteLine m, sce\layer
    Next sce
   
    WriteLine m, "***************************** WAYPOINTIT ****************************** "
   
    WriteLine m, waypointamount
    For way.WAYPOINTS = Each WAYPOINTS
        WriteLine m, way\Xcoord
        WriteLine m, way\Ycoord
        WriteLine m, way\speedX
        WriteLine m, way\speedY
        WriteLine m, way\speedX2
        WriteLine m, way\speedY2
    Next way
CloseFile m
Return

ChDir ".."

MAPLOAD:

    m = OpenToRead (kartanpolku)
        shape$ = ReadLine (m)
        texture$ = ReadLine (m)
        raintype = ReadLine (m)
        R1 = ReadLine (m)
        G1 = ReadLine(m)
        B1 = ReadLine(m)
        R2 = ReadLine(m)
        G2 = ReadLine(m)
        B2 = ReadLine(m)
       
        empty = ReadLine(m)
       
        sceneryamount = ReadLine (m)
        For i = 1 To sceneryamount
            sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
            sce\name = ReadLine (m)           
            sce\sceX = ReadLine (m)
            sce\sceY = ReadLine (m)
            sce\layer = ReadLine (m)
        Next i
       
        empty = ReadLine(m)       
       
        waypointamount = ReadLine (m)
        For i = 1 To waypointamount
            way.WAYPOINTS = New(WAYPOINTS)
           
            way\Xcoord = ReadLine (m)
            way\Ycoord = ReadLine (m)
            way\speedX = ReadLine (m)
            way\speedY = ReadLine (m)
            way\speedX2 = ReadLine (m)
            way\speedY2 = ReadLine (m)
           
        Next i
    CloseFile m
   
    ChDir "MAPS"   

    'luodaan layerit
    MapTexture = LoadImage(texture)
   
    MapShape = LoadImage(shape)
   
    MaskImage MapShape, 0, 255, 0
    ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2
   
    Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
    Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))
   
    HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    DrawToImage HitLayer
        For x = 0 To Xkerroin
            For y = 0 To Ykerroin
                DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
            Next y
        Next x
        DrawImage MapShape, 0, 0
    DrawToScreen
   
    MapX = ImageWidth(MapShape)
    MapY = ImageHeight(MapShape)

    BackLayer = MakeImage (Mapx, MapY)
   
    OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
   
    Color cbwhite
   
    'piirretään maasto
    For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
        If sce\layer = 1 Then
            DrawToImage BackLayer
        ElseIf sce\layer = 2
            DrawToImage HitLayer
        ElseIf sce\layer = 3
            DrawToImage OverLayer
        EndIf
       
        For i = 0 To maastonkappaleet
            If scenerynames(i) = sce\name And sce\sceX < MapX And sce\sceX < MapY Then
                DrawImage scenery(i), sce\sceX, sce\sceY
            EndIf
        Next i

    Next sce
           
    DrawToScreen
   
    ChDir ".."
           
Return 
[/edit]
Last edited by MaGetzUb on Mon May 18, 2009 2:46 pm, edited 1 time in total.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Someday coder
Active Member
Posts: 106
Joined: Wed Jul 30, 2008 5:04 pm

Re: Tyhmät kysymykset

Post by Someday coder »

Onko kellään samanlaisia kokemuksia, että cb ohjelma varaa itsellee jatkuvasti lisää muistia? Minun musiikki playeri käyttää paria cbFUN:n funktioita ja tottakai, soittaa musiikkia. Suoraan kovalevyltä. Jostain syystä se kuitenkin haalii ~20kt lisää muistia joka sekuntti?
Guest

Re: Tyhmät kysymykset

Post by Guest »

Someday coder wrote:Onko kellään samanlaisia kokemuksia, että cb ohjelma varaa itsellee jatkuvasti lisää muistia? Minun musiikki playeri käyttää paria cbFUN:n funktioita ja tottakai, soittaa musiikkia. Suoraan kovalevyltä. Jostain syystä se kuitenkin haalii ~20kt lisää muistia joka sekuntti?
Veikkaisin muistivuotoa. Ohjelman pitäisi kaatua jossain vaiheessa, kun muistinkäyttö on liian suuri.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Tyhmät kysymykset

Post by axu »

Mr. Awell wrote:Pyydän pyhästi anteeksi etten lukenut jokaista 150 sivua...

Onko olemassa jokin helppo tapa säätää kahden objekstin etäisyyttä/estää objekteja menemästä liian kauas toisistaan?
Jonkinlaista köydelläheilumis systeemiä kehitän, enkä mitään kovin monimutkaista kaavaa jaksaisi keksiä.
Tässä on joskus muinoin tekemäni koodi tällaisia tilanteita varten ;)
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
Mr. Awell

Re: Tyhmät kysymykset

Post by Mr. Awell »

Kiitoksia.
Nyt kun täällä ollaan, voisiko joku antaa jonkinlaista osviittaa mikä tässä koodissa MAVittaa:

Code: Select all

For vihu1.Vihuu = Each Vihuu 
 
  ObjectPick ukko
    e=PickedObject()
    
 If e=vihu1\obj Then
        Color cbWhite
        Circle ObjectX(vihu1\obj),ObjectY(vihu1\obj),15,OFF
        Color cbWhite
        If KeyDown (57)  Then  
        Line ObjectX (ukko),ObjectY (ukko),ObjectX (vihu1\obj),ObjectY (vihu1\obj) 
        DeleteObject vihu1\obj 
        M+1
   EndIf
 EndIf

Next vihu1
Kaikki objektit on määritelty, mutta voihan vika olla muuallakin.
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 »

Muista deleteobjectin jälkeen poistaa myös tyypin instanssi deletellä, muuten se jää objektittomana kummittelemaan ja aiheuttaa hyvin herkästi mavin.
Kyselijä

Re: Tyhmät kysymykset

Post by Kyselijä »

voisiko joku kertoa cbn tavuista? miten ne toimii? :|
Locked