Helppo päävalikko

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Helppo päävalikko

Post by Ilkka »

kaneli2000 wrote:Tuommoisen vähän perinteisemmän menun opin (viimeinkin!!!!!) tekemään:

Code: Select all

koodia..
Onhan se vähän kökkö, mutta hyvä aloittelijoille?

EDIT: Katsoin tuota Jonhun menua, ja se oli aikas hieno! Itsellä ei taidot riittäisi.
Joo. Käytän itekki tommosta valikkoa aina. se on yksinkertaisestit helpoin.
Image
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Helppo päävalikko

Post by Jonhu »

Värikäs wrote:
kaneli2000 wrote:Tuommoisen vähän perinteisemmän menun opin (viimeinkin!!!!!) tekemään:

Code: Select all

koodia..
Onhan se vähän kökkö, mutta hyvä aloittelijoille?

EDIT: Katsoin tuota Jonhun menua, ja se oli aikas hieno! Itsellä ei taidot riittäisi.
Joo. Käytän itekki tommosta valikkoa aina. se on yksinkertaisestit helpoin.
Nyt (kuukautta) myöhemmin katson tuota, ja sanon suoraan, että se on todella kökkö valikko..
Tässä yksinkertainen palikka valikko

Code: Select all

SCREEN 400,300
Repeat
    nappi(70,150,50,20,21,0,5,1)  
    nappi(70,50,50,20,0,60,5,1)  
    DrawScreen
Until EscapeKey()

// alkux=alku sijainti x-akselilla
// alkuy=alku sijainti y-akselilla
// kokox=koko x-akselilla
// kokoy=koko y-akselilla
// valiy=säätöpalkkien etäisyys toisistaan y-aksellilla
// valix=säätöpalkkien etäisyys toisistaan x-aksellilla
// maara= palkkien määrä
// tayte= 1 täysi neliö, 0 tyhjä nelio

Function nappi(alkux,alkuy,kokox,kokoy,valiy,valix,maara,tayte)   
    For a=0 To maara-1
        Color cbred
        Box alkux+valix*a,alkuy+valiy*a,kokox,kokoy,tayte
        If MouseX()>alkux+valix*a And MouseX()<alkux+valix*a+kokox And MouseY()<alkuy+valiy*a+kokoy And MouseY()>alkuy+valiy*a Then
            Color cbyellow
            Box alkux+valix*a,alkuy+valiy*a,kokox,kokoy,tayte
            If MouseDown(1) Then 
                MakeError "Painot nappia"+(a+1)
            EndIf
        EndIf
    Next a
EndFunction
Tekeillä pikkupelejä ja ohjelmia :)
Boxi
Newcomer
Posts: 15
Joined: Wed Aug 06, 2008 9:51 pm

Re: Helppo päävalikko

Post by Boxi »

kaneli2000 wrote:Tuommoisen vähän perinteisemmän menun opin (viimeinkin!!!!!) tekemään:

Code: Select all

'Lataa "New game" -nappula. Napissa on hyvä lukea "New game", mutta
'CoolBasicin "Media"-kansiossa ei ole moista namiskaa, ja sinun pitää
'piirtää se itse.
newgame=LoadObject("Media\buttoni.bmp")
PositionObject newgame,0,30

'Lataa "Exit" -nappula. Exit -napissa on hyvä lukea "Exit", mutta
'CollBasicin "Media"-kansiossa ei ole sellaistakaan namiskaa, ja sinun
'pitää piirtää sekin itse.
exitgame=LoadObject("Media\buttoni.bmp")
PositionObject exitgame,0,-30

'Lataa hiiri
hiiri=LoadObject("Media\crosshair.bmp")

'Pääsilmukka
Repeat

'Hiiriobjekti pistetään "oikean" hiiren päälle ja oikea hiiri piilotetaan
PositionObject hiiri,MouseWX(),MouseWY()
ShowMouse OFF

'Jos "valehiiri" on newgame -napin päällä ja hiiren vasenta nappulaa painetaan,
'mennään peliin.
If ObjectsOverlap(hiiri,newgame) And MouseHit(1) Then MakeError "Tässä on nyt se peli"

'Jos "valehiiri" menee exitgame -napin päälle ja painetaan hiiren vas. nappulaa,
'peli lopetetaan.
If ObjectsOverlap (hiiri,exitgame) And MouseHit(1) Then End

DrawScreen

Forever
Onhan se vähän kökkö, mutta hyvä aloittelijoille?

EDIT: Katsoin tuota Jonhun menua, ja se oli aikas hieno! Itsellä ei taidot riittäisi.
Saako tuohon valikkoon mitenkään viritettyä Const komentoa? ainakaan tämä If ObjectsOverlap(hiiri,newgame) And MouseHit(1) Then mode = easy
ei toiminut. Tai saako tuohon mitään vastaavaa? tarkoitus olisi päästä tuosta valikosta toiseen valikkoon.
User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

Re: Helppo päävalikko

Post by kaneli2000 »

Boxi wrote:
kaneli2000 wrote:Tuommoisen vähän perinteisemmän menun opin (viimeinkin!!!!!) tekemään:

Code: Select all

'Lataa "New game" -nappula. Napissa on hyvä lukea "New game", mutta
'CoolBasicin "Media"-kansiossa ei ole moista namiskaa, ja sinun pitää
'piirtää se itse.
newgame=LoadObject("Media\buttoni.bmp")
PositionObject newgame,0,30

'Lataa "Exit" -nappula. Exit -napissa on hyvä lukea "Exit", mutta
'CollBasicin "Media"-kansiossa ei ole sellaistakaan namiskaa, ja sinun
'pitää piirtää sekin itse.
exitgame=LoadObject("Media\buttoni.bmp")
PositionObject exitgame,0,-30

'Lataa hiiri
hiiri=LoadObject("Media\crosshair.bmp")

'Pääsilmukka
Repeat

'Hiiriobjekti pistetään "oikean" hiiren päälle ja oikea hiiri piilotetaan
PositionObject hiiri,MouseWX(),MouseWY()
ShowMouse OFF

'Jos "valehiiri" on newgame -napin päällä ja hiiren vasenta nappulaa painetaan,
'mennään peliin.
If ObjectsOverlap(hiiri,newgame) And MouseHit(1) Then MakeError "Tässä on nyt se peli"

'Jos "valehiiri" menee exitgame -napin päälle ja painetaan hiiren vas. nappulaa,
'peli lopetetaan.
If ObjectsOverlap (hiiri,exitgame) And MouseHit(1) Then End

DrawScreen

Forever
Onhan se vähän kökkö, mutta hyvä aloittelijoille?

EDIT: Katsoin tuota Jonhun menua, ja se oli aikas hieno! Itsellä ei taidot riittäisi.
Saako tuohon valikkoon mitenkään viritettyä Const komentoa? Ainakaan tämä If ObjectsOverlap(hiiri,newgame) And MouseHit(1) Then mode = easy
ei toiminut. Tai saako tuohon mitään vastaavaa? tarkoitus olisi päästä tuosta valikosta toiseen valikkoon.
Kyllähän tuo toimii, mutta moden pitää joko olla jokin luku, esim. 1,2 tai 3. Mode -muuttujaa on helpomi käsitellä,kun se on numero.
I see the rainbow rising
Boxi
Newcomer
Posts: 15
Joined: Wed Aug 06, 2008 9:51 pm

Re: Helppo päävalikko

Post by Boxi »

kaneli2000 wrote:
Boxi wrote:
kaneli2000 wrote:Tuommoisen vähän perinteisemmän menun opin (viimeinkin!!!!!) tekemään:

Code: Select all

'Lataa "New game" -nappula. Napissa on hyvä lukea "New game", mutta
'CoolBasicin "Media"-kansiossa ei ole moista namiskaa, ja sinun pitää
'piirtää se itse.
newgame=LoadObject("Media\buttoni.bmp")
PositionObject newgame,0,30

'Lataa "Exit" -nappula. Exit -napissa on hyvä lukea "Exit", mutta
'CollBasicin "Media"-kansiossa ei ole sellaistakaan namiskaa, ja sinun
'pitää piirtää sekin itse.
exitgame=LoadObject("Media\buttoni.bmp")
PositionObject exitgame,0,-30

'Lataa hiiri
hiiri=LoadObject("Media\crosshair.bmp")

'Pääsilmukka
Repeat

'Hiiriobjekti pistetään "oikean" hiiren päälle ja oikea hiiri piilotetaan
PositionObject hiiri,MouseWX(),MouseWY()
ShowMouse OFF

'Jos "valehiiri" on newgame -napin päällä ja hiiren vasenta nappulaa painetaan,
'mennään peliin.
If ObjectsOverlap(hiiri,newgame) And MouseHit(1) Then MakeError "Tässä on nyt se peli"

'Jos "valehiiri" menee exitgame -napin päälle ja painetaan hiiren vas. nappulaa,
'peli lopetetaan.
If ObjectsOverlap (hiiri,exitgame) And MouseHit(1) Then End

DrawScreen

Forever
Onhan se vähän kökkö, mutta hyvä aloittelijoille?

EDIT: Katsoin tuota Jonhun menua, ja se oli aikas hieno! Itsellä ei taidot riittäisi.
Saako tuohon valikkoon mitenkään viritettyä Const komentoa? Ainakaan tämä If ObjectsOverlap(hiiri,newgame) And MouseHit(1) Then mode = easy
ei toiminut. Tai saako tuohon mitään vastaavaa? tarkoitus olisi päästä tuosta valikosta toiseen valikkoon.
Kyllähän tuo toimii, mutta moden pitää joko olla jokin luku, esim. 1,2 tai 3. Mode -muuttujaa on helpomi käsitellä,kun se on numero.
joo kyllähän se nyt uuteen modeen meni, herjaa vielä kuitenkin mavia. Olen koittanut jotain ratkaisu tapoja saad aikaan, mikään ei ole kuitenkaan vielä ainakaan auttanut
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Helppo päävalikko

Post by Jani »

TheDuck, miten saisin sillain, että voisi ladata pelin jos se on. Ja tulisi ilmoitus "ei toimi vielä!" jos ei ole?

Tässä tää nykyinen valikko_

Code: Select all

//ASETUKSET!! SÄÄDÄ MIELEISIKSI//
Const VALIKKO_KOKO = 2 //taulukon koko, valintojen määrä -1 eli jos valintoja on 3 niin tähän tulee numero 2! TAULUKKO ALKAA NOLLASTA
//^^//

Dim valinta(VALIKKO_KOKO) As String //luodaan taulukko valinnoille
    valinta(0)="New game" //uus peli
    valinta(1)="Load game" //lataa peli
    valinta(2)="Exit" //ja poistu

//silmukka
While Not KeyHit(cbkeyreturn)
    For i=0 To VALIKKO_KOKO //käydään läpi kaikki valinnat
       Color cbred //vaihdetaan väri punaiseksi
       If i=p Then Box ScreenWidth()/2-(TextWidth(valinta(i))/2)-9,ScreenHeight()/2+i*TextHeight(valinta(i))*2-9,TextWidth(valinta(i))+18,TextHeight(valinta(i))+18,0 //piirretään laatikko valitun kohdan ympärille... - Matikkaa :)
       Color cbwhite //vaihdetaan väri valkoiseksi
       Text ScreenWidth()/2-(TextWidth(valinta(i))/2),ScreenHeight()/2+i*TextHeight(valinta(i))*2,valinta(i) //kirjoitetaan valinta ruudulle oikeaan kohtaan... - Matikkaa :)
    Next i
    If KeyHit(200) Then //jos painetaan näppäintä alas siirrytään valinnoissa alaspäin
        p-1 
    ElseIf KeyHit(208) Then //jos taas ylös niin ylöspäin
        p+1
    EndIf 
    If p>VALIKKO_KOKO Then p=0 //jos mennään yli vaointojen määrän palataan alkuun
    If p<0 Then p=VALIKKO_KOKO //jos mennään ali 0 mennään maksimivalintaan
    DrawScreen
Wend 

If p=0 Then Gosub alkaa //jos valittiin new game
If ("savegame.sab")=ON Then Gosub p12
p11:
If p=1 Then MakeError "Ei toimi vielä" //jos valittiin load game
p12:
If P=1 Then LoadProgram("savegame.sav")
If p=2 Then End //jos valittiin poistuminen
EDIT: oho! TheDuckiltahan mun piti kysyä
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
jesperx96
Active Member
Posts: 190
Joined: Sun Nov 23, 2008 9:35 am
Location: Lappajärvi

Re: Helppo päävalikko

Post by jesperx96 »

[quote="TheDuck"]

Code: Select all

//ASETUKSET!! SÄÄDÄ MIELEISIKSI//
Const VALIKKO_KOKO = 2 //taulukon koko, valintojen määrä -1 eli jos valintoja on 3 niin tähän tulee numero 2! TAULUKKO ALKAA NOLLASTA
//^^//

Dim valinta(VALIKKO_KOKO) As String //luodaan taulukko valinnoille
    valinta(0)="New game" //uus peli
    valinta(1)="Load game" //lataa peli
    valinta(2)="Exit" //ja poistu

//silmukka
While Not KeyHit(cbkeyreturn)
    For i=0 To VALIKKO_KOKO //käydään läpi kaikki valinnat
       Color cbred //vaihdetaan väri punaiseksi
       If i=p Then Box ScreenWidth()/2-(TextWidth(valinta(i))/2)-9,ScreenHeight()/2+i*TextHeight(valinta(i))*2-9,TextWidth(valinta(i))+18,TextHeight(valinta(i))+18,0 //piirretään laatikko valitun kohdan ympärille... - Matikkaa :)
       Color cbwhite //vaihdetaan väri valkoiseksi
       Text ScreenWidth()/2-(TextWidth(valinta(i))/2),ScreenHeight()/2+i*TextHeight(valinta(i))*2,valinta(i) //kirjoitetaan valinta ruudulle oikeaan kohtaan... - Matikkaa :)
    Next i
    If KeyHit(200) Then //jos painetaan näppäintä alas siirrytään valinnoissa alaspäin
        p-1 
    ElseIf KeyHit(208) Then //jos taas ylös niin ylöspäin
        p+1
    EndIf 
    If p>VALIKKO_KOKO Then p=0 //jos mennään yli vaointojen määrän palataan alkuun
    If p<0 Then p=VALIKKO_KOKO //jos mennään ali 0 mennään maksimivalintaan
    DrawScreen
Wend 

If p=0 Then MakeError "Se onse uusi peli! :)" //jos valittiin new game
If p=1 Then MakeError "Ei tallennettuja pelejä..." //jos valittiin load game
If p=2 Then End //jos valittiin poistuminen
Saanko käyttää tätä pelissäni jos mainitsen sun nimes sitten lopputeksteissä?
We see the lines in chalk
The warning signs in where we walk
In the shadows of the cities maze
To try and fight for better days
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Helppo päävalikko

Post by Jonhu »

Hänkin on ottanut luultavasti tuon jostain aijemmasta, koska olen nähnyt tuon valikon jossain aikasemminkin. Sinun kannalta järkevämpää olisi tajuta, mitä se functio tekee ja pyrkiä tekemään ilman mallia samanlainen omilla ratkaisuilla. Niin opit parhaiten ja voisit pitää peliä kokonaan itse tehtynä.
jesperx96
Active Member
Posts: 190
Joined: Sun Nov 23, 2008 9:35 am
Location: Lappajärvi

Re: Helppo päävalikko

Post by jesperx96 »

Hmm... Se vois olla ihan järkevää.
We see the lines in chalk
The warning signs in where we walk
In the shadows of the cities maze
To try and fight for better days
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Helppo päävalikko

Post by Jani »

Kun huomasin että puhuttiin piirtokommennoilla tehdystä valikosta, niin ajattelin tehä sellasen. (Toimii sitten hiirellä)
kesti about 15min
(80-95% purkkaa)

Code: Select all

lopeta$="Lopeta"
aloita$="Aloita"

x=10 : y=10

Repeat

    Gosub tiedot
    Color cbred
    Box 9,9,laatikkox-1,laatikkoy-1,0
    Box 8,8,laatikkox-2,laatikkoy-2,0
    Color cbgreen
    Box 7,7,laatikkox-3,laatikkoy-3,0
    Box 6,6,laatikkox-4,laatikkoy-4,0
    Color cbred
    Box 5,5,laatikkox-5,laatikkoy-5,0
    Box 4,4,laatikkox-6,laatikkoy-6,0
    Color cbgreen
    Box 3,3,laatikkox-7,laatikkoy-7,0
    Box 2,2,laatikkox-8,laatikkoy-8,0
    Color cborange
    Box 10,10,laatikkox,laatikkoy
    Color cbblack
    Text 15,15,lopeta
    Color cbred
    Box 14,79,aloitax-1,aloitay-1,0
    Box 13,78,aloitax-2,aloitay-2,0
    Color cbgreen
    Box 12,77,aloitax-3,aloitay-3,0
    Box 11,76,aloitax-4,aloitay-4,0
    Color cbred
    Box 10,75,aloitax-5,aloitay-5,0
    Box 9,74,aloitax-6,aloitay-6,0
    Color cbgreen
    Box 8,73,aloitax-7,aloitay-7,0
    Box 7,72,aloitax-8,aloitay-8,0
    Color cborange
    Box 15,80,aloitax,aloitay
    Color cbblack
    Text 20,85,aloita
    
    If mx>4 And mx<laatikkox+10 And my>4 And my<laatikkoy+10
        Color cbblue
        Box 10,10,laatikkox,laatikkoy
        Color cbwhite
        Text 15,15,lopeta
        If MouseDown(1)
            Wait 500
            End
        EndIf
    Else
        ClearMouse
    EndIf
    
    If mx>15 And mx<aloitax+10 And my>80 And my<aloitay+80
        Color cbblue
        Box 15,80,aloitax,aloitay
        Color cbwhite
        Text 20,85,aloita
        If MouseDown(1)
            Wait 500
            MakeError "Tässä on se "+Chr(34)+"peli"+Chr(34)+" :)"
        EndIf
    Else
        ClearMouse
    EndIf
    
    DrawScreen
Forever
    
tiedot:

mx=MouseX() : my=MouseY()

aloitax=TextWidth(aloita)+15
aloitay=TextHeight(aloita)+15

laatikkox=TextWidth(lopeta)+15
laatikkoy=TextHeight(lopeta)+15
Return
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Helppo päävalikko

Post by Jonhu »

Tein samanlaisen, mutta käyttäen functioita ja alle 20 riviä koodia. Sinun kannattaisi opetella nuo functiot. :?
Tästäkin saisi vielä lyhemmän, jos nuo värit menisivät jonkun säännön mukaan. :roll:

Tässä 1 versio
EDIT: Jaa no poistin ne... :roll: , mutta tuskin 2 turhaa kertolaskua paljon ohjelmaa hidastaa..

Code: Select all

Repeat
    If aaa(50,50,80,20,5,"Aloita",cbred,cbGREEN,cborange,cbdarkblue)>0 Then MakeError "Valitettavasti peliä ei ole vielä tehty"
    If aaa(50,150,80,20,5,"Lopeta",cbred,cbGREEN,cborange,cbdarkblue)>0 Then End
    DrawScreen
Forever

Function aaa(x,y,kokox,kokoy,dis,txt$,r1,g1,b1,r2,g2,b2,r3,g3,b3,r4,g4,b4)
    If MouseX()>=x+dis*2 And MouseX()<=x+kokox+dis*2 And MouseY()>=y+dis*2 And MouseY()<=y+kokoy+dis*2 Then nappula=ON
    Color r1,g1,b1 : Box x,y,kokox,kokoy
    Color r2,g2,b2 : Box x+dis,y+dis,kokox,kokoy
    If nappula=0
        Color r3,g3,b3 : Box x+dis*2,y+dis*2,kokox,kokoy
        Color cbblack  : CenterText x+dis*2+kokox/2,y+dis*2+kokoy/6,txt$
    Else
        Color r4,g4,b4 : Box x+dis*2,y+dis*2,kokox,kokoy
        Color cbwhite  : CenterText x+dis*2+kokox/2,y+dis*2+kokoy/6,txt$
        If MouseDown(1) Then Return 1
    EndIf
EndFunction

// aloitetaan paikasta (x,y)
// piirretään (kokox,kokoy) kokoinen suorakulmio
// dis=kuinka suuri erkanema on neliöiden välillä
// kirjoitetaan teksti txt$ keskelle alinta suorakulmiota
// alin väri = r1,g1,b1 
// toisena värinä r2,g2,b2
// ylin väri, jos hiiri ei ole päällä: r3,g3,b3 muuten r4,g4,b4
Toinen versio, jossa vain on for lause mukana. Neliöiden määrän voi valita.. (keksin huonot nimet muuttujille, mutta nämähän ovat vain näitä viiden minutin ohjelmia..)

Code: Select all

Repeat
    If aaa(50,50,80,20,3,4,"Aloita",cbred,cbGREEN,cborange,cbdarkblue)>0 Then MakeError "Peli ei toimi vielä"
    If aaa(50,100,80,20,3,4,"Lopeta",cbred,cbGREEN,cborange,cbdarkblue)>0 Then End
    DrawScreen
Forever

Function aaa(x,y,kokox,kokoy,dis,mem,txt$,r1,g1,b1,r2,g2,b2,r3,g3,b3,r4,g4,b4)
    
    For a=0 To mem
        If (a Mod 2) Then 
            Color r1,g1,b1 : Box x+dis*a,y+dis*a,kokox,kokoy
        Else
            Color r2,g2,b2 : Box x+dis*a,y+dis*a,kokox,kokoy
        EndIf
    Next a
    
    If MouseX()>=x+dis*mem And MouseX()<=x+kokox+dis*mem And MouseY()>=y+dis*mem And MouseY()<=y+kokoy+dis*mem Then nappula=ON
    
    If nappula=0
        Color r3,g3,b3 : Box x+dis*mem,y+dis*mem,kokox,kokoy
        Color cbblack  : CenterText x+dis*mem+kokox/2,y+dis*mem+kokoy/6,txt$
    Else
        Color r4,g4,b4 : Box x+dis*mem,y+dis*mem,kokox,kokoy
        Color cbwhite  : CenterText x+dis*mem+kokox/2,y+dis*mem+kokoy/6,txt$
        If MouseDown(1) Then Return 1
    EndIf
    
EndFunction

// aloitetaan paikasta (x,y)
// piirretään (kokox,kokoy) kokoinen suorakulmio
// dis = kuinka suuri erkanema on neliöiden välillä
// mem = määrä, kuinka monta suokakulmiota pistetään tekstin alle..
// kirjoitetaan teksti txt$ keskelle alinta suorakulmiota
// Värit joilla värjätään alimmat boxsit (r1,g1,b1)&(r2,g2,b2) alkaa väristä (r2,g2,b2)
// ylin väri, jos hiiri ei ole päällä: r3,g3,b3 muuten r4,g4,b4
Last edited by Jonhu on Sun Nov 30, 2008 10:03 am, edited 3 times in total.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Helppo päävalikko

Post by Jani »

osaan kyllä jotain functioista. ne ei kuirenkaan kovin mahu päähän :(


EDIT: Siis osaan tehdä yhden napin valikon functioilla mutta en kahen :?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Helppo päävalikko

Post by temu92 »

Jonhu wrote:(ja jos ihmettelette, miksi kerron 0:lla tai 1:llä tuossa functiossa, niin se on vain hionomman näköistä ja selvempää xD )[/size]
/disagree

Se on paljon hienompaa ja selkeämpää kun siihen ei laita yhtään mitään. Ei kannata opetella tuommoisia juttuja. Varsinkin kun tuo kai kuitenkin vie prosessoriaikaa jonkin verran vaikka tulos onkin aina 0.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Helppo päävalikko

Post by Character »

Tämmönen todella kehno valikko functio:

Code: Select all

Repeat

ClsColor cbwhite

nappi(10,10,"Aloita",255,0,0)
nappi(10,40,"Asetukset",255,0,0)
nappi(10,70,"Lopeta",255,0,0)
nappi(10,200,"Esimerkki teksti",255,0,0)

DrawScreen

Forever

Function nappi(x,y,teksti$,r,g,b)
lev=TextWidth(teksti$)
Color 0,255,0
Box x,y,lev+5,20
If MouseX()<x Or MouseX()>lev+x+3 Or MouseY()<y Or MouseY()>20+y Then
Color r,g,b
Box x,y,lev+5,20
EndIf
Color cbwhite
Text x,y+3,teksti$
Color cbblack
Box x,y,lev+5,20,0
End Function
Edit: Korjasin functiossa olevan virheen..
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: Helppo päävalikko

Post by Jani »

aah... Opin vihdoin (muutama viikkoa sitten) tekemään oikein monikäyttöisen valikon.

5 eri tapaa käyttää:

Code: Select all

Repeat

    If KlikkiLaatikko2(20,20,"Aloita")=1 Then MakeError "Aloita nappi" //Jos painetaan Aloita niin Error
    If KlikkiLaatikko2(20,50,"Lopeta",1,0,1,1,0,130,0)=2 Then End //Jos Lopeta nappi niin lopeta
    If KlikkiLaatikko2(20,80,"Lisä1",0,3)=3 Then MakeError "Koskit Lisä1 nappia" //Jos Lisä1 niin Error
    If KlikkiLaatikko2(20,110,"Lisä2",3,0,0,1,0,255,0,255)=4 Then MakeError "Onnittelut!" //Jos Lisä2 niin Error
    If KlikkiLaatikko2(20,140,"Toimimaton",0,0,0,0,1)=5 Then MakeError "Korjasit siis"

    DrawScreen
    
Forever

//Functiot

Function KlikkiLaatikko2(bx#,by#,txt$,lisa=0,klikki=0,clr=1,cl=1,error=0,vr=100,vg=255,vb=0) //KlikkiLaatikko2 Function
    x#=TextWidth(txt$) //x koordinaatti
    y#=TextHeight(txt$) //y koordinaatti
    If by#>ScreenHeight() Or bx#>ScreenWidth() Then error=1//koordit yli reunojen= error on 1
    Color 0,175,22
    If MouseX()>=bx# And MouseX()<=bx# +x# And MouseY()>=by# And MouseY()<=by# +y# //tarkastaa onko hiiri laatikossa
        If MouseDown(1) And cl=1 Then Color vr,vg,vb //jos painetaan niin muuta väriä
        If MouseUp(1) Then klikki+1 //kun päästetään irti niin lisää 1
        If MouseDown(1)=0 And MouseUp(1)=0 And clr=1 Then Color 0,200,150 //jos on niin värjää 0,200,150
    Else
        klikki=0
    EndIf
    Box bx#,by#,x#+6,y#+6 //laatikko
    Color cbblack
    Box bx#,by#,x#+7,y#+7,0 //reunat
    Text bx#+3,by#+3,txt$ //teksti
    If error=0 Then Return klikki+lisa //palautus
    If error Then Return 0 //jos error niin palauta 0
EndFunction
Function Kimalle(kerta,kerta2,bx,by)
    For i=1 To Rand(kerta,kerta2)
	Color Max(255-i*5,0),Max(255-i*5,0),0
        Box Rand(10,ScreenWidth()-10),Rand(10,ScreenHeight()-10),bx,by
    Next i
EndFunction
eli kosketus, painallus, eri väri, toimimaton... (Testatkaa niitä tuhansia muitakin ;) )

Esimerkki:

Code: Select all

Repeat
    
    If KlikkiLaatikko2(20,20,"Näyte")=1 Then mode$="Näyte"
    If KlikkiLaatikko2(20,40,"Tehtävä1")=1 Then mode$="Tehtävä1"
    
    DrawScreen
    
Until mode

x=ScreenWidth()
y=ScreenHeight()
Repeat

    //yläpalkki
    SetWindow " mode: "+mode+"     "+btext$

    //Piirrä Kimalteet
    If Timer()>en+500 Then blink=Not blink : en=Timer()
    If blink Then Kimalle(Rand(1,5),Rand(1,5),Rand(3,6),Rand(3,6)) : btext$="Kimalle" Else btext$="           "
    
    If mode$="Tehtävä1"
        Color cbwhite
        Text 1,1,"Koodaa Salainen napista samanlainen kuin muista"
        Text 1,11,"Ei riitä että se toimii kuin modella Näyte"
    EndIf
    
    //piirrä 4 rinkulaa ja niiden keskeltä viiva hiireen ja viivan kulma
    Color cbwhite
    Circle x/2-10,y/2-10,20,0
    Circle x/2-30,y/2-30,60,0
    Circle x/2-40,y/2-40,80,0
    Line x/2,y/2,MouseX(),MouseY()
    Circle x/2-20,y/2-20,40,0
    Text 0,y-TextHeight("Ku"),"Kulma: "+GetAngle(x/2,y/2,MouseX(),MouseY())
    DrawToWorld OFF

    //piirrä laatikot ja tarkasta ne
    If KlikkiLaatikko2(20,40,"Aloita",0,0,1,1,0,50,163,255)=1 Then MakeError "Painoit "+Chr(34)+"Aloita"+Chr(34)+" nappia" //jos Aloita niin Aloita Errori
    If KlikkiLaatikko2(20,70,"Lopeta",1,0,1,1,0,130,0)=2 Then End //jos Lopeta niin End
    If mode$="Tehtävä1"
        If KlikkiLaatikko2(200,100,"Salainen",2,0,0,0,1,255,255,255)=3 Then
            MakeError "Painoit "+Chr(34)+"Salainen"+Chr(34)+" nappia + Läpi meni!" //jos Salainen niin "Salainen" Errori
        EndIf
    ElseIf mode$="Näyte"
        If KlikkiLaatikko2(200,100,"Salainen",2,0,0,1,0,255,255,255)=3 Then MakeError "Painoit "+Chr(34)+"Salainen"+Chr(34)+" nappia" //--||--
    EndIf
    If KlikkiLaatikko2(200,200,"Normi",3)=4 Then MakeError "normaali painike" //jos Testi niin Errori

    //piirrä FPS
    Color cbwhite : Text ScreenWidth()/3-TextWidth(FPS())-60,ScreenHeight()/2-20,"FPS: "+FPS()
    
    DrawScreen
    
Forever

//itse se Funktio

Function KlikkiLaatikko2(bx#,by#,txt$,lisa=0,klikki=0,clr=1,cl=1,error=0,vr=100,vg=255,vb=0) //KlikkiLaatikko2 Function
    x#=TextWidth(txt$) //x koordinaatti
    y#=TextHeight(txt$) //y koordinaatti
    If by#>ScreenHeight() Or bx#>ScreenWidth() Then error=1//koordit yli reunojen= error on 1
    Color 0,175,22
    If MouseX()>=bx# And MouseX()<=bx# +x# And MouseY()>=by# And MouseY()<=by# +y# //tarkastaa onko hiiri laatikossa
        If MouseDown(1) And cl=1 Then Color vr,vg,vb //jos painetaan niin muuta väriä
        If MouseUp(1) Then klikki+1 //kun päästetään irti niin lisää 1
        If MouseDown(1)=0 And MouseUp(1)=0 And clr=1 Then Color 0,200,150 //jos on niin värjää 0,200,150
    Else
        klikki=0
    EndIf
    Box bx#,by#,x#+6,y#+6 //laatikko
    Color cbblack
    Box bx#,by#,x#+7,y#+7,0 //reunat
    Text bx#+3,by#+3,txt$ //teksti
    If error=0 Then Return klikki+lisa //palautus
    If error Then Return 0 //jos error niin palauta 0
EndFunction

Function Kimalle(kerta,kerta2,bx,by)
    For i=1 To Rand(kerta,kerta2)
	Color Max(255-i*5,0),Max(255-i*5,0),0
        Box Rand(10,ScreenWidth()-10),Rand(10,ScreenHeight()-10),bx,by
    Next i
EndFunction
Function GetFunctions(a=0,s=0,d=0,f=0,g=0,h=0)
    luku=a+s+d+f+g+h
    Return luku
EndFunction
Kun oppii niin voi testata kaikenlaisia sarjoja ;)
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Helppo päävalikko

Post by Character »

Tein nopeasti tämmösen hiirellä valittavan nappula funktion jossa on kaksi eri modea:

Code: Select all

Repeat

//uusi peli
If click(10,10,100,15,155,255,255,"Uusi peli",1,1) Then
MakeError "Peliä ei ole"
EndIf

//jatka peliä
If click(10,40,100,15,255,255,255,"Jatka peliä",0,0) then
MakeError "Et ole tallentanut peliä"
EndIf

//lopeta
If click(10,70,100,15,255,255,255,"Lopeta",1,1) Then End

DrawScreen

Forever

//mode: näytetäänkö teksti vasta kun kosketaan hiirellä
Function click(x,y,width,height,r,g,b,txt$,mode,fill=1)
    Color r,g,b
    Box x,y,width,height,fill
    If mode=0 Then
        Color r*2,g*2,b*2
        Text x,y,txt$
    EndIf
    If MouseX()>x And MouseX()<width+x And MouseY()>y And MouseY()<height+y Then
        Color r/2,g/2,b/2
        Box x,y,width,height,fill
        If MouseHit(1) Then Return 1
    Else
        Return 0
    EndIf
    If mode=1 Then
        Color r*2,g*2,b*2
        Text x,y,txt$
    EndIf
End Function
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Helppo päävalikko

Post by axu »

Character wrote:Tein nopeasti tämmösen hiirellä valittavan nappula funktion jossa on kaksi eri modea:

Code: Select all

Koodia...
Muuten ihan perus toimiva, mutta r,b ja g muuttujat olisit voinut jättää pois tuosta ja häiritsi vähän tuo napit missä ei näy teksti ennen kuin vie hiiren kohdalle.
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Helppo päävalikko

Post by Character »

Tein tuon lähinnä vain testatakseni funktioita ja laitoin ihan kokeilemalla tuon moden ja nuo rgb:t. Huomasin muuten tuosta vielä yhden pahan virheen.
Kun nappulan kokoa suurentaa niin teksti pysyy napin vasemmassa yläreunassa. :)
User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

Re: Helppo päävalikko

Post by kaneli2000 »

Olen lukenut näitä läpi ja huomannut, miksi ihmiset tekee objekteilla/kuvilla vaikoita. Haluatko tietää vastauksen?

Jos osaat koodata melko hyvin, vastaus on LAISKUUS!!!!
Jos taas olet aloittanut koodaamisen vasta kuukausia sitten, vastaus on harjoittelemisen puute (joka on ymmärrettävää kiireiden takia).
Jos taas olet aloittanut viikon sisään, vastaus on osaamisen puute, josta pääset helposti eroon.

Oli vaan pakko.
I see the rainbow rising
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Helppo päävalikko

Post by KilledWhale »

kaneli2000 wrote:Olen lukenut näitä läpi ja huomannut, miksi ihmiset tekee objekteilla/kuvilla vaikoita. Haluatko tietää vastauksen?

Jos osaat koodata melko hyvin, vastaus on LAISKUUS!!!!
Jos taas olet aloittanut koodaamisen vasta kuukausia sitten, vastaus on harjoittelemisen puute (joka on ymmärrettävää kiireiden takia).
Jos taas olet aloittanut viikon sisään, vastaus on osaamisen puute, josta pääset helposti eroon.

Oli vaan pakko.
Ja millä perusteella kuvien käyttö kertoo laiskuudesta? Sillähän saa vain valikosta näyttävämmän näköisen. Objektien avulla kikkailu on osittain laiskuutta mutta objektien poimintaominausiiksien takia siinä on hyviäkin puolia. Jos kaikki valikot olisivat puhtaasti piirtokomennoilla olevia nappulavalikoita eikö se olisi melko tylsää? NetMatch The Endin valikossa käytettiin kuvia, mutta vaikuttiko se laiskuudessa tehdyltä? Ei minustakaan.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Post Reply