Tyhmät kysymykset (II/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Tuxi
Active Member
Posts: 190
Joined: Wed Jan 21, 2009 10:25 pm
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Tuxi »

Yritin jonkinlaista reittialgoritmia tehdä. Aluksi lähdetään aloituspisteestä lopetuspistettä kohti. Jos törmätään esteeseen, yritetään kiertää sen vastapuolelle ja jatkaa sieltä matkaa loppua kohden. Tietyissä tapauksissa tuo tekee reitin erittäin typerästi. Se saattaa olla monta kertaa lyhintä mahdollista pidempi. Sitäpaitsi siinä on pari bugia ja se ei tunnista sitä, jos mahdollista reittiä ei olekkaan. Tuossa kummiski koodi:

Code: Select all

SCREEN 800,600

// Alustetaan kartta:¨
Global Tilesize,WayPoints,UnDoMove,WayPoints2,WayPoints3
Tilesize = 20

MapX = 39
MapY = 29
Dim map(MapX,MapY)

For i = 0 To MapX
    map(i,0) = 1
Next i
For i = 0 To MapX
    map(i,MapY) = 1
Next i
For i = 0 To MapY
    map(0,i) = 1
Next i
For i = 0 To MapY
    map(MapX,i) = 1
Next i

// Alustetaan funktiot:
Dim Moved(4)
Dim Waypoint(2000,2,1)

Waypoint(0,0,0) = -1

Halft = (Tilesize/4)   

Repeat
    For x = 0 To MapX
    For y = 0 To MapY
        If map(x,y) Then
            Color 0,155,155 
        Else
            Color 255,255,255
        EndIf
        Box x*Tilesize,y*Tilesize,Tilesize,Tilesize
        Color 0,0,0
        Box x*Tilesize,y*Tilesize,Tilesize+1,Tilesize+1,0
    Next y
    Next x
    
    If MouseDown(1) Then
        map(MouseX()/Tilesize,MouseY()/Tilesize) = 1
    ElseIf MouseDown(2)
        map(MouseX()/Tilesize,MouseY()/Tilesize) = 0
    EndIf

    whX = 1
    whY = 1
    toX = MapX-1
    toY = MapY-1
    If KeyDown(28) Then  
        OperTime = Timer()
        FindWay(whX,whY,toX,toY)
        OperTime = Timer() - OperTime
    EndIf
    
    Color 255,0,0
    For i = 0 To 600
        If Waypoint(i,0,0) = -1 Then Exit
        Box Waypoint(i,0,0)*Tilesize+Halft,Waypoint(i,0,1)*Tilesize+Halft,Tilesize-Halft*2,Tilesize-Halft*2
        If i > 0 Then
            Line Waypoint(i,0,0)*Tilesize+Halft*2,Waypoint(i,0,1)*Tilesize+Halft*2,Waypoint(i-1,0,0)*Tilesize+Halft*2,Waypoint(i-1,0,1)*Tilesize+Halft*2
        EndIf
    Next i 
    
    DrawScreen
Forever

Function FindWay(FX,FY,EX,EY)
    For i = 0 To 200
        Waypoint(i,0,0) = -1
        Waypoint(i,0,1) = -1
        Waypoint(i,1,0) = -1
        Waypoint(i,1,1) = -1
        Waypoint(i,2,0) = -1
        Waypoint(i,2,1) = -1
    Next i 
    Color 255,0,0
    Box 1+fx*Tilesize,1+fy*Tilesize,Tilesize-1,Tilesize-1
    Box 1+ex*Tilesize,1+ey*Tilesize,Tilesize-1,Tilesize-1
    SX = FX
    SY = FY
    Halft = (Tilesize/4)
    WayPoints = 0
    SaveWayPoint(FX,FY)
    While (SX = EX And SY = EY) = False
        avavs = 1
        If SX < EX And Moved(0) = 0 And Moved(1) = 0 Then 
            If Moved(1) = 0
                SX + 1
                Moved(0) = 1
                Moved(1) = 2
            Else
                avavs = 0
            EndIf
            avavs = 0
        EndIf
        If SX > EX And Moved(0) = 0 And Moved(2) = 0 Then 
            If Moved(2) = 0
                SX - 1
                Moved(0) = 1
                Moved(2) = 2
            Else
                avavs = 0
            EndIf
        EndIf
        If SY < EY And Moved(0) = 0 And Moved(3) = 0 Then 
            If Moved(3) = 0
                SY + 1
                Moved(0) = 1
                Moved(3) = 2
            Else
                avavs = 0
            EndIf
        EndIf
        If SY > EY And Moved(0) = 0 And Moved(4) = 0 Then 
            If Moved(4) = 0
                SY - 1
                Moved(0) = 1
                Moved(4) = 2
            Else
                avavs = 0
            EndIf
        EndIf 
        
        If map(SX,SY) = 1 Then
            For i = 1 To 4
                If Moved(i) = 2 Then UnDoMove = i
            Next i 
            If Gogigator = 0 Then   
                Select UnDoMove 
                Case 1 
                    SX - 1
                Case 2
                    SX + 1
                Case 3 
                    SY - 1
                Case 4 
                    SY + 1
                End Select
                SX2 = SX
                SY2 = SY
                SX3 = SX
                SY3 = SY
                SaveWayPoint(SX,SY)
                Gogigator = 1
                Turna2 = 1
                Turna3 = -1
                Select UnDoMove 
                Case 1 
                    SX + 1
                    Pra2 = 1
                    Pra3 = 3
                Case 2
                    SX - 1
                    Pra2 = 3
                    Pra3 = 1
                Case 3 
                    SY + 1
                    Pra2 = 2
                    Pra3 = 4
                Case 4 
                    SY - 1
                    Pra2 = 4
                    Pra3 = 2
                End Select
            EndIf
        Else
            avavs = 0
            If Gogigator = 1 Then
                For i = 0 To 200
                    Waypoint(i,1,0) = -1
                    Waypoint(i,1,1) = -1
                    Waypoint(i,2,0) = -1
                    Waypoint(i,2,1) = -1
                Next i 
                WayPoints2 = 0
                WayPoints3 = 0
                While ((SX2 = SX And SY2 = SY) Or (SX3 = SX And SY3 = SY)) = False
                    Pra2 = Pra2 + minuser
                    If Pra2 > 4 Then Pra2 - 4
                    If Pra2 < 1 Then Pra2 + 4
                    Color 255,0,0
                    minuser = 0
                    Select Pra2
                    Case 1 
                        If map(SX2,SY2-1) = 0 Then SY2 - 1
                        If map(SX2+Turna2,SY2) = 0 Then
                            minuser = minuser + Turna2
                            SaveWayPoint(SX2,SY2,1)
                        ElseIf map(SX2,SY2-1) = 1 Then
                            minuser = minuser - Turna2
                            SaveWayPoint(SX2,SY2,1)
                        EndIf
                    Case 2
                        If map(SX2+1,SY2) = 0 Then SX2 + 1
                        If map(SX2,SY2+Turna2) = 0 Then
                            minuser = minuser + Turna2
                            SaveWayPoint(SX2,SY2,1)
                        ElseIf map(SX2+1,SY2) = 1 Then
                            minuser = minuser - Turna2
                            SaveWayPoint(SX2,SY2,1)
                        EndIf
                    Case 3 
                        If map(SX2,SY2+1) = 0 Then SY2 + 1
                        If map(SX2-Turna2,SY2) = 0 Then
                            minuser = minuser + Turna2
                            SaveWayPoint(SX2,SY2,1)
                        ElseIf map(SX2,SY2+1) = 1 Then
                            minuser = minuser - Turna2
                            SaveWayPoint(SX2,SY2,1)
                        EndIf
                    Case 4
                        If map(SX2-1,SY2) = 0 Then SX2 - 1
                        If map(SX2,SY2-Turna2) = 0 Then
                            minuser = minuser + Turna2
                            SaveWayPoint(SX2,SY2,1)
                        ElseIf map(SX2-1,SY2) = 1 Then
                            minuser = minuser - Turna2
                            SaveWayPoint(SX2,SY2,1)
                        EndIf
                    End Select
                    
                    Pra3 = Pra3 + minuser2
                    If Pra3 > 4 Then Pra3 - 4
                    If Pra3 < 1 Then Pra3 + 4
                    Color 255,0,0
                    minuser2 = 0
                    Select Pra3
                    Case 1 
                        If map(SX3,SY3-1) = 0 Then  SY3 - 1
                        If map(SX3+Turna3,SY3) = 0 Then
                            minuser2 = minuser2 + Turna3
                            SaveWayPoint(SX3,SY3,2)
                        ElseIf map(SX3,SY3-1) = 1 Then
                            minuser2 = minuser2 - Turna3
                            SaveWayPoint(SX3,SY3,2)
                        EndIf
                    Case 2
                        If map(SX3+1,SY3) = 0 Then SX3 + 1
                        If map(SX3,SY3+Turna3) = 0 Then
                            minuser2 = minuser2 + Turna3
                            SaveWayPoint(SX3,SY3,2)   
                        ElseIf map(SX3+1,SY3) = 1 Then
                            minuser2 = minuser2 - Turna3
                            SaveWayPoint(SX3,SY3,2)
                        EndIf
                    Case 3 
                        If map(SX3,SY3+1) = 0 Then SY3 + 1
                        If map(SX3-Turna3,SY3) = 0 Then
                            minuser2 = minuser2 + Turna3
                            SaveWayPoint(SX3,SY3,2)
                        ElseIf map(SX3,SY3+1) = 1 Then
                            minuser2 = minuser2 - Turna3
                            SaveWayPoint(SX3,SY3,2)
                        EndIf
                    Case 4 
                        If map(SX3-1,SY3) = 0 Then SX3 - 1
                        If map(SX3,SY3-Turna3) = 0 Then
                            minuser2 = minuser2 + Turna3
                            SaveWayPoint(SX3,SY3,2)
                        ElseIf map(SX3-1,SY3) = 1 Then
                            minuser2 = minuser2 - Turna3
                            SaveWayPoint(SX3,SY3,2)
                        EndIf
                    End Select
                    
                    colo = Timer() Mod 255
                    Color colo,colo,colo
                    Box 1+sx2*Tilesize,1+sy2*Tilesize,Tilesize-1,Tilesize-1
                    Box 1+sx3*Tilesize,1+sy3*Tilesize,Tilesize-1,Tilesize-1  
                    DrawScreen OFF
                Wend
                If SX2 = SX And SY2 = SY Then
                    For i = 0 To WayPoints2 
                        If Waypoint(i,1,0) = -1 Then Exit
                        SaveWayPoint(Waypoint(i,1,0),Waypoint(i,1,1))
                    Next i
                    SaveWayPoint(SX2,SY2)
                EndIf
                
                If SX3 = SX And SY3 = SY Then
                    For i = 0 To WayPoints3
                        If Waypoint(i,2,0) = -1 Then Exit
                        SaveWayPoint(Waypoint(i,2,0),Waypoint(i,2,1))
                    Next i
                    SaveWayPoint(SX3,SY3)
                EndIf          
            Else
                SaveWayPoint(SX,SY)
            EndIf
            Gogigator = 0
        EndIf
        For i = 0 To 4
            If Moved(i) > 0 Then Moved(i) = Moved(i) - 1
        Next i 
        
        colo = Timer() Mod 255
        Color colo,colo,colo
        If Gogigator = 0 Then Box 1+sx*Tilesize,1+sy*Tilesize,Tilesize-1,Tilesize-1
        DrawScreen OFF
    Wend  
    SaveWayPoint(EX,EY) 
End Function

Function SaveWayPoint(X,Y,Space=0)
    Select Space
    Case 0
        Waypoint(WayPoints,Space,0) = X
        Waypoint(WayPoints,Space,1) = Y
        WayPoints + 1
    Case 1
        Waypoint(WayPoints2,Space,0) = X
        Waypoint(WayPoints2,Space,1) = Y
        WayPoints2 + 1
    Case 2
        Waypoint(WayPoints3,Space,0) = X
        Waypoint(WayPoints3,Space,1) = Y
        WayPoints3 + 1
    End Select
End Function
Mistä pitäs lähtä parantelemaan vai kannattaisko tehdä koko juttu eri tavalla?

Edit: Enteristä laskee reitin ja hiirellä voit luoda ja poistaa esteitä
Projektit:
Jotain pientä (Ehkä vähän suurempaakin)

-Tuxi- (myös Tuxi4321)
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

cool-driver wrote: Eli siis ideani tuohon uudisrakennukseen:
- pelaaja valitsee tia sitten kirjoittaa kaikki matkustajat, hyttipaikat, autot jne.
- tämän jälkeen hän alkaa etsiä telakoilta tarjouksia, joita siis voisi olla vaikka viisi
- kaikki telakat eivät välttämättä tee tarjousta
- kun rakennussopimus on tehty, kestäisi vaikka kaksi vuotta, ennen kuin alus on valmis
- vesillelaskupäivänä alukselle pitäisi valita nimi kirjoittamalla se Inputtiin
- tilaus voisi myöhästyä, telakka voisi mennä konkurssiin, tilauksen hinta voisi nousta
- jos telakka vaikka menisi konkurssiin pitäisi päättää mitä tekee uudisrakennuksellaan, eli myykö pois, jatkaako rakentamista toisella telakalla ja jne.
Onko tähän mitään ratkaisua?
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset (II/2009)

Post by TheFish »

cool-driver wrote:
cool-driver wrote: Eli siis ideani tuohon uudisrakennukseen:
- pelaaja valitsee tia sitten kirjoittaa kaikki matkustajat, hyttipaikat, autot jne.
- tämän jälkeen hän alkaa etsiä telakoilta tarjouksia, joita siis voisi olla vaikka viisi
- kaikki telakat eivät välttämättä tee tarjousta
- kun rakennussopimus on tehty, kestäisi vaikka kaksi vuotta, ennen kuin alus on valmis
- vesillelaskupäivänä alukselle pitäisi valita nimi kirjoittamalla se Inputtiin
- tilaus voisi myöhästyä, telakka voisi mennä konkurssiin, tilauksen hinta voisi nousta
- jos telakka vaikka menisi konkurssiin pitäisi päättää mitä tekee uudisrakennuksellaan, eli myykö pois, jatkaako rakentamista toisella telakalla ja jne.
Onko tähän mitään ratkaisua?
Jaa mihin? En näe tuossa quotessa mitään kysymystä.
CoolBasic henkilökuntaa
Kehittäjä
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

TheFish wrote:
cool-driver wrote:
cool-driver wrote: Eli siis ideani tuohon uudisrakennukseen:
- pelaaja valitsee tia sitten kirjoittaa kaikki matkustajat, hyttipaikat, autot jne.
- tämän jälkeen hän alkaa etsiä telakoilta tarjouksia, joita siis voisi olla vaikka viisi
- kaikki telakat eivät välttämättä tee tarjousta
- kun rakennussopimus on tehty, kestäisi vaikka kaksi vuotta, ennen kuin alus on valmis
- vesillelaskupäivänä alukselle pitäisi valita nimi kirjoittamalla se Inputtiin
- tilaus voisi myöhästyä, telakka voisi mennä konkurssiin, tilauksen hinta voisi nousta
- jos telakka vaikka menisi konkurssiin pitäisi päättää mitä tekee uudisrakennuksellaan, eli myykö pois, jatkaako rakentamista toisella telakalla ja jne.
Onko tähän mitään ratkaisua?
Jaa mihin? En näe tuossa quotessa mitään kysymystä.
Että saako tuon jotenkin toteutettua?
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (II/2009)

Post by Latexi95 »

cool-driver wrote: Että saako tuon jotenkin toteutettua?
Tietysti, mutta tolkuttoman monta If lauseketta se vaatii. :lol:
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

Latexi95 wrote:
cool-driver wrote: Että saako tuon jotenkin toteutettua?
Tietysti, mutta tolkuttoman monta If lauseketta se vaatii. :lol:
Ei mitään väliä :D Peleissäni on niitä jo valmiiksi.
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
11v
Member
Posts: 73
Joined: Wed Jun 10, 2009 10:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by 11v »

Latexi95 wrote:
cool-driver wrote: Että saako tuon jotenkin toteutettua?
Tietysti, mutta tolkuttoman monta If lauseketta se vaatii. :lol:


Älä kuutele häntä :twisted: , voit tehdä sen aina SELECT:illä

Tässä pieni esimerkki, siinä on vähän bugeja :oops: , kun tein sen HYVIN nopeasti!!

Code: Select all


 Repeat 'Tekee silmukan
 
 Nimi$ = Input (" Laivan nimi on ") ' Tehdään muuttuja nimi$
 DrawScreen
 
 Until KeyHit (28) 'Silmukka loppuu kun painetaan enteriä
 
 
 CloseInput
 
 Tarjoukset = Rnd (1,4) 'Arvotaan tarjoukset
 
 
 
 
 Select Tarjoukset 'Toivottavasti tiedät selectin, laita manuaalin hakuun, jos et tiedä.
 
 Case 1 ' Jos Tarjoukset 1 sitten:
 
 maksu1 = Rnd (10000,100000) ' Arvotaan maksu
 AddText " 1 OY1 tarjoaa " + maksu1 + "$" 
 maksu2 = Rnd (10000,100000)
 AddText " 2 OY2 tarjoaa " + maksu2 + "$"
 DrawScreen
 
  
 Case 2 ' Jos Tarjoukset 2 sitten:
 
 maksu2 = Rnd (10000,100000)
 AddText " 2 OY2 tarjoaa " + maksu2 + "$"
 DrawScreen
 
 Case 3 ' Jos Tarjoukset 3 sitten:
 
 maksu3 = Rnd (10000,100000)
 AddText " Tarjousta ei tullut "
 DrawScreen
 
 Case 4 ' Jos Tarjoukset 4 sitten:
 
 maksu3 = Rnd (10000,100000)
 AddText " 3 OY3 tarjoaa " + maksu3 + "$"
 maksu1 = Rnd (10000,100000)
 AddText " 1 OY1 tarjoaa " + maksu1 + "$"
 maksu2 = Rnd (10000,100000)
 AddText " 2 OY2 tarjoaa " + maksu2 + "$"
 DrawScreen
 
 EndSelect
 



 
 Repeat ' Tehdään silmukka
 
 Tarjous_otettu = Input (" Otat tarjouksen numero: ")
 DrawScreen ' TÄRKEIN
 
 Until KeyHit (28) 'lopeettaa enteristä
 
 CloseInput ' sulkee inputin
 
 
 Select Tarjous_otettu ' Tekee taas selectin
 
 Case 1
 AddText "Sinulta veloitettiin " + maksu1 + "$"
 
 Case 2
 AddText "Sinulta veloitettiin " + maksu2 + "$"
 
 Case 3
 AddText "Sinulta veloitettiin " + maksu3 + "$"
 
 Default
 AddText " Valitettavasti tuolaista tarjousta ei ollut"
 
 EndSelect
 
 DrawScreen
 
 
 WaitKey
 
 End
 
 
 ' "Ja niin edes päin" 
Black city peleistä parhain
Phons as guest

Re: Tyhmät kysymykset (II/2009)

Post by Phons as guest »

Problem: Viimeinen select ei toimi koska:
1. Tuota tarjous_otettu ei ole olemassa enää sen jälkeen kun käsket CloseInput. Eli työnnä se toiseen muuttujaan ennen sulkemista.
11v
Member
Posts: 73
Joined: Wed Jun 10, 2009 10:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by 11v »

Phons as guest wrote:Problem: Viimeinen select ei toimi koska:
1. Tuota tarjous_otettu ei ole olemassa enää sen jälkeen kun käsket CloseInput. Eli työnnä se toiseen muuttujaan ennen sulkemista.
ÄLÄ valehtele se toimii,ainakin mulla. Inputia ei ole olemassa, mutta muutuja määriteltiin jo. Jos luit minun viestin houmasit, että se oli
esimerkki. Kokeilitko ohjelmaa, kun silmä määräisesti katsoo se näyttää aivan ********, mutta se toimii osittain, tarpeeksi hyvin esimerkiksi.
Black city peleistä parhain
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (II/2009)

Post by esa94 »

11v wrote:
Phons as guest wrote:Problem: Viimeinen select ei toimi koska:
1. Tuota tarjous_otettu ei ole olemassa enää sen jälkeen kun käsket CloseInput. Eli työnnä se toiseen muuttujaan ennen sulkemista.
ÄLÄ valehtele se toimii,ainakin mulla. Inputia ei ole olemassa, mutta muutuja määriteltiin jo. Jos luit minun viestin houmasit, että se oli
esimerkki. Kokeilitko ohjelmaa, kun silmä määräisesti katsoo se näyttää aivan ********, mutta se toimii osittain, tarpeeksi hyvin esimerkiksi.
Tuliko mieleesi, että CloseInput saattaa tyhjentää sen muuttujan? Kokeilepa ehdotettua toimenpidettä. Möy.
Jos olen väärässä, älä vinee : )
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

11v wrote:
Latexi95 wrote:
cool-driver wrote: Että saako tuon jotenkin toteutettua?
Tietysti, mutta tolkuttoman monta If lauseketta se vaatii. :lol:


Älä kuutele häntä :twisted: , voit tehdä sen aina SELECT:illä

Tässä pieni esimerkki, siinä on vähän bugeja :oops: , kun tein sen HYVIN nopeasti!!

Code: Select all


 Repeat 'Tekee silmukan
 
 Nimi$ = Input (" Laivan nimi on ") ' Tehdään muuttuja nimi$
 DrawScreen
 
 Until KeyHit (28) 'Silmukka loppuu kun painetaan enteriä
 
 
 CloseInput
 
 Tarjoukset = Rnd (1,4) 'Arvotaan tarjoukset
 
 
 
 
 Select Tarjoukset 'Toivottavasti tiedät selectin, laita manuaalin hakuun, jos et tiedä.
 
 Case 1 ' Jos Tarjoukset 1 sitten:
 
 maksu1 = Rnd (10000,100000) ' Arvotaan maksu
 AddText " 1 OY1 tarjoaa " + maksu1 + "$" 
 maksu2 = Rnd (10000,100000)
 AddText " 2 OY2 tarjoaa " + maksu2 + "$"
 DrawScreen
 
  
 Case 2 ' Jos Tarjoukset 2 sitten:
 
 maksu2 = Rnd (10000,100000)
 AddText " 2 OY2 tarjoaa " + maksu2 + "$"
 DrawScreen
 
 Case 3 ' Jos Tarjoukset 3 sitten:
 
 maksu3 = Rnd (10000,100000)
 AddText " Tarjousta ei tullut "
 DrawScreen
 
 Case 4 ' Jos Tarjoukset 4 sitten:
 
 maksu3 = Rnd (10000,100000)
 AddText " 3 OY3 tarjoaa " + maksu3 + "$"
 maksu1 = Rnd (10000,100000)
 AddText " 1 OY1 tarjoaa " + maksu1 + "$"
 maksu2 = Rnd (10000,100000)
 AddText " 2 OY2 tarjoaa " + maksu2 + "$"
 DrawScreen
 
 EndSelect
 



 
 Repeat ' Tehdään silmukka
 
 Tarjous_otettu = Input (" Otat tarjouksen numero: ")
 DrawScreen ' TÄRKEIN
 
 Until KeyHit (28) 'lopeettaa enteristä
 
 CloseInput ' sulkee inputin
 
 
 Select Tarjous_otettu ' Tekee taas selectin
 
 Case 1
 AddText "Sinulta veloitettiin " + maksu1 + "$"
 
 Case 2
 AddText "Sinulta veloitettiin " + maksu2 + "$"
 
 Case 3
 AddText "Sinulta veloitettiin " + maksu3 + "$"
 
 Default
 AddText " Valitettavasti tuolaista tarjousta ei ollut"
 
 EndSelect
 
 DrawScreen
 
 
 WaitKey
 
 End
 
 
 ' "Ja niin edes päin" 
Pitää testata.
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Feuer »

Miksi mavvaa? :( Voin myöntää, että tämä on ensimmäinen kerta kun käytän cbNetworkkiä... 8-)

Code: Select all

Include "cbNetwork.cb"

Code: Select all

Dim helppisivuyoolista As Integer

Code: Select all

    Case 4
        
       helppisivuyoolista = HTTPGet("http://yearofourlord.webs.com/help-dokumentaatio.htm",0 )

If helppisivuyoolista = 10060 Then MakeError "Yhteyden muodostus kesti liian kauan, yhteys katkaistiin"
If helppisivuyoolista = 404 Then MakeError "Sivua ei löydy palvelimelta. "
If helppisivuyoolista = Not 200 Then MakeError GetNetErrorString(helppisivuyoolista)
       
       HTTPSaveContent("C:\temp\temphelppityökkärikanta.htm")
       Execute Chr(34) + "C:\temp\temphelppityökkärikanta.htm" + Chr(34)
       DeleteFile "C:\temp\temphelppityökkärikanta.htm"
        End
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
11v
Member
Posts: 73
Joined: Wed Jun 10, 2009 10:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by 11v »

Tossa ei taida olla koko ohjelmaa ja mitä ton pitäisi tehdä ja tossa on ainakin 5 virhettä. En osaa auttaa, mutta GetNetErrorString(helppisivuyoolista) ei voi toimia sun antamassa ohjelmassa.
Black city peleistä parhain
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Feuer »

Ei ole ohjelmaa, vain yksi case suuresta select - rakenteesta. Jos lasketaan että tuossa olisi 5 virhettä, ja 5 riviä cbNetworkkiä, niin keskimääräisesti virhe/rivi, mikä tarkoittaa että pitäisi unohtaa koko juttu.

Edittiämuute, tarkoitus olisi siis ladata helppitiedosto webs.comin palvelimelta ja suorittaa se selaimessa. Loogistahan olisi suoraan execute "URL", mutta yritän samalla opetella noita cbNetworkin funktioita.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Tyhmät kysymykset (II/2009)

Post by Jani »

Feuer wrote:Miksi mavvaa? :( Voin myöntää, että tämä on ensimmäinen kerta kun käytän cbNetworkkiä... 8-)

Code: Select all

Include "cbNetwork.cb"

Code: Select all

Dim helppisivuyoolista As Integer

Code: Select all

    Case 4
        
       helppisivuyoolista = HTTPGet("http://yearofourlord.webs.com/help-dokumentaatio.htm",0 )

If helppisivuyoolista = 10060 Then MakeError "Yhteyden muodostus kesti liian kauan, yhteys katkaistiin"
If helppisivuyoolista = 404 Then MakeError "Sivua ei löydy palvelimelta. "
If helppisivuyoolista = Not 200 Then MakeError GetNetErrorString(helppisivuyoolista)
       
       HTTPSaveContent("C:\temp\temphelppityökkärikanta.htm")
       Execute Chr(34) + "C:\temp\temphelppityökkärikanta.htm" + Chr(34)
       DeleteFile "C:\temp\temphelppityökkärikanta.htm"
        End
If helppisivuyoolista = 10060 Then MakeError "Yhteyden muodostus kesti liian kauan, yhteys katkaistiin"
If helppisivuyoolista = 404 Then MakeError "Sivua ei löydy palvelimelta. "
If helppisivuyoolista = Not 200 Then MakeError GetNetErrorString(helppisivuyoolista)

->
If Not helppisivuyoolista = 200 Then MakeError GetNetErrorString(helppisivuyoolista)
Näin nopeasti katsottuna taas...

öö.. helppisivuyoolista = HTTPGet("http://yearofourlord.webs.com/help-dokumentaatio.htm",0 ) -> helppisivuyoolista = HTTPGet("http://yearofourlord.webs.com/help-dokumentaatio.htm")
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

1. Miten saan tehtyä sen, että kun olet kirjoittanut Inputtiin yhtiösi nimen, niin se tulee tekstiksi text komennolla?
2. Onko mahdollisista, että peli luo ssuorituksen aikan uusia muuttujia ja uusia paikkoja?
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by Jonez »

1, näin:

Code: Select all

Repeat
    a$ = Input( ": " )
    
    Text 20, 20, "Säilötään muuttujaan a$: " + a$
    DrawScreen
Forever
2:
Taulukoiden ja tyyppikokoelmien avulla voit helposti luoda "uusia asioita", joilla saattaa olla keskenään erilaista tietoa. Esimerkkinä ammukset (ks. oppitunnit 17 ja 18), joista jokaisella on yksilölliset tiedot mm. suunnasta ja sijainnista.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

Tarvitsisin tuota uusien asioiden luomista noihin uudisrakennuksiin. Eli, että kun tilaat sen uudisrakennuksen, niin se luo uuden paikan sinne, missä on ne laivan tekniset tiedot ja kun se laiva on valmis, niin se luo reittimuuttujan ja sen uuden laivan muuttujan.
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
cool-driver
Active Member
Posts: 116
Joined: Sat Feb 14, 2009 7:47 am

Re: Tyhmät kysymykset (II/2009)

Post by cool-driver »

Ja miten saan tässä koodinpätkässä tehtyä sen, että vuodenvalinta numero ei enää tule Inputtiin

Code: Select all

ClearText
ClearKeys
CloseInput

ClsColor 0,164,255
Cls
Color 255,255,255


Repeat

    Text 0,0, "Täällä aloitat pelin."
    Text 0,22,"Ensiksi kijoira yhtiösi nimi. Nimessä ei saa olla numeroita!"
    Text 0,33,"Sitten valitset aloitusvuoden ja aloitat pelin."
    Locate 0,55
    nimi$ = Input("Kirjoita yhtiösi nimi ")
    Text 0,77,"Yhtiösi nimi on " + nimi$
    Text 0,88,"Valitse sen jälkeen aloitusvuosi."
    Text 0,99,"Valitse aloitusvuosi"
    Text 0,110,"1. 1950"
    Text 0,121,"2. 1960"
    Text 0,132,"3. 1970"
    Text 0,143,"4. 1980"
    Text 0,154,"5. 1985"
    Text 0,165,"6. 1990"
    Text 0,176,"7. 2000"
    Text 0,187,"8. 2005"
    Text 0,198,"9. Takaisin"
    If KeyHit(cbkey1) Then 
    vuosi = 1950
    Goto toimisto
    EndIf
    If KeyHit(cbkey2) Then 
    vuosi = 1960 
    Goto toimisto
    EndIf
    If KeyHit(cbkey3) Then 
    vuosi = 1970 
    Goto toimisto    
    EndIf
    If KeyHit(cbkey4) Then 
    vuosi = 1980 
    Goto toimisto
    EndIf
    If KeyHit(cbkey5) Then 
    vuosi = 1985 
    Goto toimisto  
    EndIf
    If KeyHit(cbkey6) Then 
    vuosi = 1990 
    Goto toimisto
    EndIf
    If KeyHit(cbkey7) Then 
    vuosi = 2000 
    Goto toimisto
    EndIf
    If KeyHit(cbkey8) Then 
    vuosi = 2005 
    Goto toimisto
    EndIf
    If KeyHit(cbkey9) Then Goto päävalikko
    
DrawScreen
Forever 
Projektit:
Ships Income Liikenne Suomesta Beta 2: valmis. Lataa tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
Diktaattori Beta 2: valmis. Lataa Tästä Projekti keskeytetty. Tehdään loppuun uuden CoolBasicin tulon jälkeen.
11v
Member
Posts: 73
Joined: Wed Jun 10, 2009 10:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by 11v »

cool-driver wrote:2. Onko mahdollisista, että peli luo ssuorituksen aikan uusia muuttujia ja uusia paikkoja?
Tässä on sitten esimerkki, ettet ala tekee pidemmän kautta :lol:

Code: Select all

 
 Type LIIKKEET
 
 Field hinta
 Field nimi$
 
 EndType
 
 DrawScreen
 
 Kummitus$ = " Kummitus "
 
 
 Repeat
 
 Text 125,25," Paina Enter"
 Text 125,50," Paina Space"
 Text 125,0, "Olet luonut " + paina + " yhtiötä!"
 DrawScreen
 
 
     If KeyHit(28)  
     
        paina + 1
        Tyyppi.LIIKKEET = New(LIIKKEET)
        
        Liikkeen_arvonta = Rnd (1,2)
        
        
        Select Liikkeen_arvonta
        
        Case 1
        Tyyppi\nimi$ = Kummitus$
        
        Case 2
        Tyyppi\nimi$ = " Hautausmaa"
        
        EndSelect
        
        
        ClearText
        
     
    For Tyyppi.Liikkeet = Each Liikkeet
        AddText Tyyppi\nimi$
        Next Tyyppi
        
          EndIf
          
          
    If KeyHit (57) Then Gosub Nimi

    Until KeyHit (16)
    
    
    
    Nimi:
    
    Repeat
       
    kummitus$ = Input ("Tähän liikeen nimi ")
    DrawScreen
       
    Until KeyHit (28)
    CloseInput
    
    Return 
Black city peleistä parhain
Locked