Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Jerbbuz

Re: Tyhmät kysymykset (I/2010)

Post by Jerbbuz »

Yuu. Mutta onko tota helpompaa tekniikkaa tehä ampumista???
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

buke44 wrote:
jaahas wrote: no kumpaa kannattaa käyttää jos tekee travian tyylistäpeliä?
Jos alat tekemään Travianin tyylistä peliä, niin käytä php:tä. Voit aloittaa php ohjelmoinnin lataamalla ohjelman Verigoserv. Koodaa php tiedostot aluksi vaikka notepadillä, saat ajettua ne selaimessa pistämällä ne verigoservin kansioon www, ja laittamalla selaimen osoiteriviin http://localhost/<sivusinimi>.php olettaen toki, että Verigoserv on päällä. Suomenkielinen opas itse kodaamiseen:
http://www.ohjelmointiputka.net/opas.php?tunnus=phpj (älä lataa muita ohjelmia kuin Verigoserv) En kyllä usko, että pystyt tekemään mitään selainpelin kaltaista mutta tossa on php:n alotusohjeet. Ja jos et osaa HTML:llää, niin kannattaa opetella se ensin.
mitä toi verigozerv tekee?
Jerbbuz

Re: Tyhmät kysymykset (I/2010)

Post by Jerbbuz »

Onko missään muutes Coolbasic Tutorial videoita...?
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

mistä saisin ilmasen php:ta tukevan nettisivun?
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by valscion »

jaahas wrote:mistä saisin ilmasen php:ta tukevan nettisivun?
http://www.jouluserver.com
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
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

Jerbbuz wrote:Yuu. Mutta onko tota helpompaa tekniikkaa tehä ampumista???
Ei ole, tuo on helpoin ja _erittäin_ helppo.
Jerbbuz

Re: Tyhmät kysymykset (I/2010)

Post by Jerbbuz »

Jaa että erittäin helppo? Sinä olet ammattilainen minä olen aloittelija.
Parasta mitä osaan tehdä on oma kenttä sinne ukko jolla voi liikkua ja vartija joka ampuu ukkoa kun menet esim.. 5m päähän vartija kääntyy myös ukkoon päin.
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: Tyhmät kysymykset (I/2010)

Post by Wingman »

Jerbbuz wrote:Jaa että erittäin helppo? Sinä olet ammattilainen minä olen aloittelija.
Parasta mitä osaan tehdä on oma kenttä sinne ukko jolla voi liikkua ja vartija joka ampuu ukkoa kun menet esim.. 5m päähän vartija kääntyy myös ukkoon päin.
jos ei heti aukea se esimerkki, niin katso se läpi komento komennolta, ja mieti, mitä jokainen tekee. sen jälkeen voit muuttaa jotain muuttujia. kiinnitä myös huomiota Type AMMUS-rivin jälkeiseen sisennykseen ja etsi fieldin jälkeen tuleva obj- muuttuja muualta koodista.

Tästä voi olla hyötyä: viewtopic.php?f=12&t=1618
- - - -
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Viltzu »

jaahas wrote:
VesQ wrote:
jaahas wrote: millä tallennan sen?
Voit yhä tallentaa sillä paintilla, mutta käytä muotona vaikka sitä PNG:tä, joka on häviötön pakkausmuoto. Voit myös käyttää BMP:tä.
oon kokkeilu png:tä ei toimi silläkään. moniväristä/bittistä bmp:tä?
Johtunee melko varmasti siitä, että olet muuttanut JPG -> PNG, jolloin noise jää siihen.
Jos sinulla ei ole muutakuin JPG kopio kuvasta joudut itse poistamaan noisen, zoomailet ja kynällä sitten klikkailet. Mutta Grandihan jo antoi jonkin version, en tarkistanut, että oliko ilman noisea mutta luottaisin Grandiin. Ihan hullu tyyppi. ;P
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

miten saisin tästä sellasen että jos painaa jotaki laatikkoa ja sitten jompikumpi kasarmi tai päärakennus jos ottaa kasarmin menee alkuun ja laittaa kasarmin kuvan siihen laatikkoon mistä paino tai sitten jos painaa päärakennusta niin tulee päärakennuksen kuvaa siihen laatikkoon

Code: Select all

ClsColor cbblack
Repeat
ShowMouse hiiri
DrawImage kylä,300,250

Color cbwhite
Box 397,315,22,22,OFF
If MouseX()>396 And MouseX()<419 And MouseY()>314 And MouseY()<337 Then
Color cbred
Box 397,315,22,22,OFF
If MouseHit(1) Then Goto yli
EndIf

Color cbwhite
Box 435,294,22,22,OFF
If MouseX()>434 And MouseX()<457 And MouseY()>293 And MouseY()<316 Then
Color cbred
Box 435,294,22,22,OFF
If MouseHit(1) Then Goto yli
EndIf

Color cbwhite
Box 383,264,22,22,OFF
If MouseX()>382 And MouseX()<405 And MouseY()>263 And MouseY()<286 Then
Color cbred
Box 383,264,22,22,OFF
If MouseHit(1) Then Goto yli
EndIf

Color cbwhite
Box 444,371,22,22,OFF
If MouseX()>443 And MouseX()<465 And MouseY()>370 And MouseY()<393 Then
Color cbred
Box 444,371,22,22,OFF
If MouseHit(1) Then Goto yli
EndIf

Color cbwhite
Box 457,331,22,22,OFF
If MouseX()>456 And MouseX()<479 And MouseY()>330 And MouseY()<353 Then
Color cbred
Box 457,331,22,22,OFF
If MouseHit(1) Then Goto yli
EndIf

Color cbwhite
Box 339,372,22,22,OFF
If MouseX()>338 And MouseX()<361 And MouseY()>371 And MouseY()<394 Then
Color cbred
Box 339,372,22,22,OFF
If MouseHit(1) Then Goto yli
EndIf

Color cbwhite
Box 351,325,22,22,OFF
If MouseX()>350 And MouseX()<373 And MouseY()>324 And MouseY()<347 Then
Color cbred
Box 351,325,22,22,OFF
If MouseHit(1) Then Goto yli
EndIf

Color cbwhite
Box 335,298,22,22,OFF
If MouseX()>334 And MouseX()<357 And MouseY()>297 And MouseY()<320 Then
Color cbred
Box 335,298,22,22,OFF
If MouseHit(1) Then Goto yli
EndIf

Color cbwhite
Box 378,396,22,22,OFF
If MouseX()>377 And MouseX()<400 And MouseY()>395 And MouseY()<418 Then
Color cbred
Box 378,396,22,22,OFF
If MouseHit(1) Then Goto yli
EndIf

DrawScreen
Forever

yli:
Repeat
SetFont ari
Color cbwhite
Text 350,100,"KASARMI"
Text 325,140,"PÄÄRAKENNUS"
If MouseX()>345 And MouseX()<427 And MouseY()>95 And MouseY()<120 Then
Color cbred
Text 350,100,"KASARMI"
If MouseHit(1) Then 
EndIf

If MouseX()>320 And MouseX()<450 And MouseY()>135 And MouseY()<160 Then
Color cbred
Text 325,140,"PÄÄRAKENNUS"
If MouseHit(1) Then  
EndIf

DrawScreen
Forever
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Viltzu »

jaahas sisennä koodisi, olisi auttajien mukavempi tutkia koodia jos se olisi sisennettyä.

Sisennä kaikki koodilohkot. For ... Next, While ... Wend, If ... EndIf, Function ... EndFunction etc...
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

Viltzu wrote:jaahas sisennä koodisi, olisi auttajien mukavempi tutkia koodia jos se olisi sisennettyä.

Sisennä kaikki koodilohkot. For ... Next, While ... Wend, If ... EndIf, Function ... EndFunction etc...
sisennetty?
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Viltzu »

jaahas wrote:
Viltzu wrote:jaahas sisennä koodisi, olisi auttajien mukavempi tutkia koodia jos se olisi sisennettyä.

Sisennä kaikki koodilohkot. For ... Next, While ... Wend, If ... EndIf, Function ... EndFunction etc...
sisennetty?
Ööh, koodisi ei ole sisennetty.
Käyppä tämä läpi: cbmanual/language/styles.html

Esimerkki sisennyksestä:

Code: Select all

Repeat
    Text 0,0,"..."
     If b = 3 Then
        If a = 2 Then
            Exit
        EndIf
        MakeError "asdf"
    EndIf
    DrawScreen
Forever
Paljon helpompi tarkistaa, että kaikille If-lauseikkeille on Endif, kuin jos koodi olisi tälläistä:

Code: Select all

Repeat
Text 0,0,"..."
If b = 3 Then
If a = 2 Then
Exit
EndIf
MakeError "asdf"
EndIf
DrawScreen
Forever
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Tyhmät kysymykset (I/2010)

Post by Jonhu »

Tein tälläisen yksinkertaisen automaatti sisentäjän, että saisi edes jotain tolkkua tuosta koodista :?

Sisentäjä:
Ei osaa tyhjiä yksirivisiä if-lauseita, kuten "if 0 then", mutta tuskin kukaan tälläisiä käyttää :?:

Myös Drawtoimage, Drawtoscreen, Lock ja Unlock komennot jätin huomioitta, mutta ne on helppo lisätä vain selectiin, jos huvittaa... Myös nuo kaikki tutkittavat sanat kannattaisi kirjoittaa isoilla kirjaimilla, koska muuten saattaa komento jäädä sisentäjältä huomioimatta, mutta en nyt jaksanut alkaa säätämään...

Code: Select all


lahde$ = "sotku.cb"
kohde$ = "sotku2.cb"

Print "Sisentää tiedostoa " + lahde$
Sisenna( lahde$, kohde$ )
Print "Tiedosto "+ lahde$ + " sisennetty kohteeseen: "+kohde 
WaitKey


Function Sisenna( file1$, file2$ )
    
    If FileExists( file1$ ) = 0 Then MakeError "Tiedostoa "+file1+" ei loytynyt"
    
    r = OpenToRead( file1$ )
    w = OpenToWrite( file2$ )
    
    While Not EOF(r)
        
        rivi$ = ReadLine(r)

        muutos = Sisennys( rivi$ )
        
        If muutos < 0 Then sisennys_kohta = sisennys_kohta + muutos
        
        WriteLine w, GetVali( sisennys_kohta ) + Trim(rivi$)
        
        If muutos > 0 Then sisennys_kohta = sisennys_kohta + muutos
        
    Wend
    
    CloseFile w
    CloseFile r
EndFunction

Function GetVali( nro, vali$ = "    " )
    If nro = 0 Then Return ""
    For a=1 To nro
        vali2$ = vali2$ + vali$
    Next a
    Return vali2$
EndFunction


Function Sisennys( rivi$ )

    stri$ = Trim( GetWord( rivi$, 1, " ") )
    
    // tutkitaan selvät tapaukset
    Select stri$
        Case "For"    : Return 1
        Case "While"  : Return 1
        Case "Repeat" : Return 1
        Case "Function":Return 1
        Case "Else"   : Return 1
        Case "Type"   : Return 1
        
        Case "Next"   : Return -1
        Case "Wend"   : Return -1
        Case "Forever": Return -1
        Case "Until"  : Return -1
   EndSelect
   
   // Jos if sana joudutaan parsimaan yksiriviset iffit pidemmistä
   If stri$ = "If" Then
   
        sanoja = CountWords( rivi$, " " )
        
        For a = 1 To sanoja
            // jos then sana rivissä, niin...
            If Trim( GetWord( rivi$, a, " " ) ) = "Then" Then 
                // jos oli viimeinen sana rivissä sisennetään
                If a = sanoja Then Return 1 
                // muuten ei tapahdu mitään
                Return 0
            EndIf
        Next a
        // jos ei ollut then sanaa sisennetään...
        Return 1
   EndIf
   
   // joku end-alkuinen / end ( endif, endfunction, endtype, endselect... )
   If LSet(stri$,3) = "End" Then Return -1
   
   // ei löytynyt mitään sanaa jolla olisi merkitystä sisennyksen kanssa..
   Return False
   
EndFunction
Sisennettynä koodisi:

Code: Select all

ClsColor cbblack
Repeat
    ShowMouse hiiri
    DrawImage kylä,300,250
    
    Color cbwhite
    Box 397,315,22,22,OFF
    If MouseX()>396 And MouseX()<419 And MouseY()>314 And MouseY()<337 Then
        Color cbred
        Box 397,315,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 435,294,22,22,OFF
    If MouseX()>434 And MouseX()<457 And MouseY()>293 And MouseY()<316 Then
        Color cbred
        Box 435,294,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 383,264,22,22,OFF
    If MouseX()>382 And MouseX()<405 And MouseY()>263 And MouseY()<286 Then
        Color cbred
        Box 383,264,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 444,371,22,22,OFF
    If MouseX()>443 And MouseX()<465 And MouseY()>370 And MouseY()<393 Then
        Color cbred
        Box 444,371,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 457,331,22,22,OFF
    If MouseX()>456 And MouseX()<479 And MouseY()>330 And MouseY()<353 Then
        Color cbred
        Box 457,331,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 339,372,22,22,OFF
    If MouseX()>338 And MouseX()<361 And MouseY()>371 And MouseY()<394 Then
        Color cbred
        Box 339,372,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 351,325,22,22,OFF
    If MouseX()>350 And MouseX()<373 And MouseY()>324 And MouseY()<347 Then
        Color cbred
        Box 351,325,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 335,298,22,22,OFF
    If MouseX()>334 And MouseX()<357 And MouseY()>297 And MouseY()<320 Then
        Color cbred
        Box 335,298,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 378,396,22,22,OFF
    If MouseX()>377 And MouseX()<400 And MouseY()>395 And MouseY()<418 Then
        Color cbred
        Box 378,396,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    DrawScreen
Forever

yli:
Repeat
    SetFont ari
    Color cbwhite
    Text 350,100,"KASARMI"
    Text 325,140,"PÄÄRAKENNUS"
    If MouseX()>345 And MouseX()<427 And MouseY()>95 And MouseY()<120 Then
        Color cbred
        Text 350,100,"KASARMI"
        If MouseHit(1) Then 
    EndIf
    
    If MouseX()>320 And MouseX()<450 And MouseY()>135 And MouseY()<160 Then
        Color cbred
        Text 325,140,"PÄÄRAKENNUS"
        If MouseHit(1) Then 
    EndIf
    
    DrawScreen
Forever
Jos nyt puututaan vain tuohon nappien päälle-pois ongelmaan, niin sen saat tämän tyylisellä rakenteella toteutettua:

Code: Select all

Repeat

    Color cbwhite
    Text 350,100,"KASARMI"
    Text 325,140,"PÄÄRAKENNUS"
    
    If MouseX()>345 And MouseX()<427 And MouseY()>95 And MouseY()<120 Then
        Color cbred
        Text 350,100,"KASARMI"
        If MouseHit(1) Then show = True
    EndIf
    
    If MouseX()>320 And MouseX()<450 And MouseY()>135 And MouseY()<160 Then
        Color cbred
        Text 325,140,"PÄÄRAKENNUS"
        If MouseHit(1) Then show = False
    EndIf
    
    // näytetään on 1 väri punaiseksi muuten valkoiseksi
    If show = True Then 
        Color cbred 
    Else 
        Color cbwhite
    EndIf
    
    // piirretään boksi
    Box 10,10,100,100

    DrawScreen
Forever
Tekeillä pikkupelejä ja ohjelmia :)
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

Jonhu wrote:Tein tälläisen yksinkertaisen automaatti sisentäjän, että saisi edes jotain tolkkua tuosta koodista :?

Sisentäjä:
Ei osaa tyhjiä yksirivisiä if-lauseita, kuten "if 0 then", mutta tuskin kukaan tälläisiä käyttää :?:

Myös Drawtoimage, Drawtoscreen, Lock ja Unlock komennot jätin huomioitta, mutta ne on helppo lisätä vain selectiin, jos huvittaa... Myös nuo kaikki tutkittavat sanat kannattaisi kirjoittaa isoilla kirjaimilla, koska muuten saattaa komento jäädä sisentäjältä huomioimatta, mutta en nyt jaksanut alkaa säätämään...

Code: Select all

lahde$ = "sotku.cb"
kohde$ = "sotku2.cb"

Print "Sisentää tiedostoa " + lahde$
Sisenna( lahde$, kohde$ )
Print "Tiedosto "+ lahde$ + " sisennetty kohteeseen: "+kohde 
WaitKey


Function Sisenna( file1$, file2$ )
    
    If FileExists( file1$ ) = 0 Then MakeError "Tiedostoa "+file1+" ei loytynyt"
    
    r = OpenToRead( file1$ )
    w = OpenToWrite( file2$ )
    
    While Not EOF(r)
        
        rivi$ = ReadLine(r)

        muutos = Sisennys( rivi$ )
        
        If muutos < 0 Then sisennys_kohta = sisennys_kohta + muutos
        
        WriteLine w, GetVali( sisennys_kohta ) + Trim(rivi$)
        
        If muutos > 0 Then sisennys_kohta = sisennys_kohta + muutos
        
    Wend
    
    CloseFile w
    CloseFile r
EndFunction

Function GetVali( nro, vali$ = "    " )
    If nro = 0 Then Return ""
    For a=1 To nro
        vali2$ = vali2$ + vali$
    Next a
    Return vali2$
EndFunction


Function Sisennys( rivi$ )

    stri$ = Trim( GetWord( rivi$, 1, " ") )
    
    // tutkitaan selvät tapaukset
    Select stri$
        Case "For"    : Return 1
        Case "While"  : Return 1
        Case "Repeat" : Return 1
        Case "Function":Return 1
        Case "Else"   : Return 1
        Case "Type"   : Return 1
        
        Case "Next"   : Return -1
        Case "Wend"   : Return -1
        Case "Forever": Return -1
        Case "Until"  : Return -1
   EndSelect
   
   // Jos if sana joudutaan parsimaan yksiriviset iffit pidemmistä
   If stri$ = "If" Then
   
        sanoja = CountWords( rivi$, " " )
        
        For a = 1 To sanoja
            // jos then sana rivissä, niin...
            If Trim( GetWord( rivi$, a, " " ) ) = "Then" Then 
                // jos oli viimeinen sana rivissä sisennetään
                If a = sanoja Then Return 1 
                // muuten ei tapahdu mitään
                Return 0
            EndIf
        Next a
        // jos ei ollut then sanaa sisennetään...
        Return 1
   EndIf
   
   // joku end-alkuinen / end ( endif, endfunction, endtype, endselect... )
   If LSet(stri$,3) = "End" Then Return -1
   
   // ei löytynyt mitään sanaa jolla olisi merkitystä sisennyksen kanssa..
   Return False
   
EndFunction
Sisennettynä koodisi:

Code: Select all

ClsColor cbblack
Repeat
    ShowMouse hiiri
    DrawImage kylä,300,250
    
    Color cbwhite
    Box 397,315,22,22,OFF
    If MouseX()>396 And MouseX()<419 And MouseY()>314 And MouseY()<337 Then
        Color cbred
        Box 397,315,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 435,294,22,22,OFF
    If MouseX()>434 And MouseX()<457 And MouseY()>293 And MouseY()<316 Then
        Color cbred
        Box 435,294,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 383,264,22,22,OFF
    If MouseX()>382 And MouseX()<405 And MouseY()>263 And MouseY()<286 Then
        Color cbred
        Box 383,264,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 444,371,22,22,OFF
    If MouseX()>443 And MouseX()<465 And MouseY()>370 And MouseY()<393 Then
        Color cbred
        Box 444,371,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 457,331,22,22,OFF
    If MouseX()>456 And MouseX()<479 And MouseY()>330 And MouseY()<353 Then
        Color cbred
        Box 457,331,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 339,372,22,22,OFF
    If MouseX()>338 And MouseX()<361 And MouseY()>371 And MouseY()<394 Then
        Color cbred
        Box 339,372,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 351,325,22,22,OFF
    If MouseX()>350 And MouseX()<373 And MouseY()>324 And MouseY()<347 Then
        Color cbred
        Box 351,325,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 335,298,22,22,OFF
    If MouseX()>334 And MouseX()<357 And MouseY()>297 And MouseY()<320 Then
        Color cbred
        Box 335,298,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    Color cbwhite
    Box 378,396,22,22,OFF
    If MouseX()>377 And MouseX()<400 And MouseY()>395 And MouseY()<418 Then
        Color cbred
        Box 378,396,22,22,OFF
        If MouseHit(1) Then Goto yli
    EndIf
    
    DrawScreen
Forever

yli:
Repeat
    SetFont ari
    Color cbwhite
    Text 350,100,"KASARMI"
    Text 325,140,"PÄÄRAKENNUS"
    If MouseX()>345 And MouseX()<427 And MouseY()>95 And MouseY()<120 Then
        Color cbred
        Text 350,100,"KASARMI"
        If MouseHit(1) Then 
    EndIf
    
    If MouseX()>320 And MouseX()<450 And MouseY()>135 And MouseY()<160 Then
        Color cbred
        Text 325,140,"PÄÄRAKENNUS"
        If MouseHit(1) Then 
    EndIf
    
    DrawScreen
Forever
Jos nyt puututaan vain tuohon nappien päälle-pois ongelmaan, niin sen saat tämän tyylisellä rakenteella toteutettua:

Code: Select all

Repeat

    Color cbwhite
    Text 350,100,"KASARMI"
    Text 325,140,"PÄÄRAKENNUS"
    
    If MouseX()>345 And MouseX()<427 And MouseY()>95 And MouseY()<120 Then
        Color cbred
        Text 350,100,"KASARMI"
        If MouseHit(1) Then show = True
    EndIf
    
    If MouseX()>320 And MouseX()<450 And MouseY()>135 And MouseY()<160 Then
        Color cbred
        Text 325,140,"PÄÄRAKENNUS"
        If MouseHit(1) Then show = False
    EndIf
    
    // näytetään on 1 väri punaiseksi muuten valkoiseksi
    If show = True Then 
        Color cbred 
    Else 
        Color cbwhite
    EndIf
    
    // piirretään boksi
    Box 10,10,100,100

    DrawScreen
Forever
miten niin ongelmaan? ei siinä mitään vikaa ola
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (I/2010)

Post by Hene »

Miten voisin luoda tietokannan, josta voi hakea esimerkiksi jääkiekkoilijoita nimen, numeron, tms. perusteella? Eli koodiin syötetään pelaajien tms. tietyt tiedot (Nyt vaikkapa nimi, pelinumero ja syntymävuosi) ja sen jälkeen luodaan systeemi, jossa käyttäjä voi hakea tietyllä ehdolla jotain pelaajaa ja ruutuun syötetään kaikki osumat.
(Sekavaa, maybe? Toivottavasti joku ymmärtää... ;P)
"Baby," I said. "I'm a genius but nobody knows it but me."
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by SPuntte »

Hene wrote:Miten voisin luoda tietokannan, josta voi hakea esimerkiksi jääkiekkoilijoita nimen, numeron, tms. perusteella? Eli koodiin syötetään pelaajien tms. tietyt tiedot (Nyt vaikkapa nimi, pelinumero ja syntymävuosi) ja sen jälkeen luodaan systeemi, jossa käyttäjä voi hakea tietyllä ehdolla jotain pelaajaa ja ruutuun syötetään kaikki osumat.
(Sekavaa, maybe? Toivottavasti joku ymmärtää... ;P)
Suosittelen, että luot tyyppikokoelman, jonka kenttinä ovat halutut tiedot.

Yksinkertaisin tapa on käyttää CB:n sisäistä tyyppi-instanssilistaa ja ajaa aina tietoja haettaessa se lineaarisesti läpi (For Each -silmukka). Hakusanaan sopivien instanssien kahva (ConvertToInteger-funktiolta) voidaan syöttää esimerkiksi dynaamisesti kokoaan muuttavaan muistipalaan. Lopuksi kaikki muistipalan instanssit tulostetaan käytäjälle. Tämä voi kuitenkin olla hidasta, mikäli listassa on paljon soluja.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (I/2010)

Post by Hene »

Miten olisi lyhyt esimerkkitunti for each -silmukan käytöstä tuossa kyseisessä koodissa? Itse en tajua miten for eachia voi käyttää tälläisessä koodissa... :/
"Baby," I said. "I'm a genius but nobody knows it but me."
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by SPuntte »

Väänsin sitten ihan kokonaisen hakuesimerkin. Dynaamisesti kokoaan muuttava muistipalalista ei näin yksinkertaisessa systeemissä oikein pääse oikeuksiinsa, mutta se tulee välttämättömäksi heti, kun hakutuloksille täytyy pystyä haun jälkeen tekemään jotakin. Tästä syystä eriytin niiden tulostuksen For Each -silmukasta.

Code: Select all

Type PELAAJA
	Field kahva%
	Field etu$
	Field suku$
	Field nro
	Field syntynyt
EndType

lisaaPelaaja("Antero", "Virtanen", 35, 1980)
lisaaPelaaja("Erkki", "Pitkäjalka", 12, 1986)
lisaaPelaaja("Petteri", "Tunari", 57, 1975)
lisaaPelaaja("Jussi", "Tappinen", 6, 1968)
lisaaPelaaja("Matti", "Eskola", 22, 2020)
lisaaPelaaja("Teppo", "Tiilikainen", 91, 1337)

SCREEN 950, 550, 0, 1
SAFEEXIT OFF
osumalista = MakeMEMBlock(4)

Repeat

	Locate 5, 5
	haku$ = Input("Anna hakusana >> ")
	If KeyHit(cbKeyReturn) Then CloseInput
	
	//Suoritetaan haku vain, jos hakusana on muuttunut
	If haku <> vanhahaku$ Then
		osumia% = 0
		
		//Lineaarinen haku PELAAJA-tyyppi-instanssilistaan
		For p.PELAAJA = Each PELAAJA
			If InStr(p\etu, haku) Or InStr(p\suku, haku) Or p\nro = Int(haku) Or InStr(Str(p\syntynyt), haku) Then
				osumia = osumia + 1
				ResizeMEMBlock osumalista, 4*osumia + 4
				PokeInt osumalista, 4*osumia, p\kahva
			EndIf
		Next p
		
		PokeInt osumalista, 0, osumia
	ElseIf haku = "" Then
		PokeInt osumalista, 0, 0
	EndIf
	
	osumia = PeekInt(osumalista, 0)
	
	Text 5, 30, "Hakusana: " + haku + "   Osumia: " + osumia
	
	For i = 1 To osumia
		p.PELAAJA = ConvertToType(PeekInt(osumalista, 4*i))
		Text 5, 35 + 13*i, "Nimi: " + p\etu + " " + p\suku + "   Pelinumero: " + p\nro + "   Syntymävuosi: " + p\syntynyt
	Next i
	
	DrawScreen
	vanhahaku$ = haku
Until EscapeKey()

DeleteMEMBlock osumalista
End

Function lisaaPelaaja(etunimi$, sukunimi$, numero%, svuosi%)
	Dim p.PELAAJA
	
	p = New(PELAAJA)
	p\kahva = ConvertToInteger(p)
	p\etu = etunimi
	p\suku = sukunimi
	p\nro = numero
	p\syntynyt = svuosi
EndFunction
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Jerbbuz

Re: Tyhmät kysymykset (I/2010)

Post by Jerbbuz »

Onko olemassa mitään Coolbasic kirjaa?
Locked