Page 1 of 1

Valikko-ongelmia

Posted: Thu Feb 07, 2008 5:03 pm
by ihannyyppä
juu nyt alotinkin sit pienten kysymysten kyselyn kerralla rohkeasti ko en löytäny vastauksia foorumeilta
(oldforums ja tämä) ja kysymys kuuluu:
miten tehdä valikko?
siis tekoäly-, liikkumis- ja musansoitto harjoituksiahan oon tehny jo kauan ja ongelmakseni eteeni tuolta nurkan takaa putkahti
itse susi prkl,
MITEN TEHDÄ VALIKKO :)

Re: Valikko-ongelmia

Posted: Thu Feb 07, 2008 5:14 pm
by Pabnih
Löysin esimerkin koodivarastostani ja kommentoin sen.

Code: Select all

SCREEN 400,250 'Säädetään ikkunan kokoa

nappi=LoadObject("media\buttoni.bmp") 'Ladataan the nappi..

hiiri=LoadObject("Media\cursor.bmp") '..ja the hiiri

ShowMouse OFF  'Ei näytetä kauhistuttavaa windowshiirtä

Repeat

PositionObject hiiri,MouseWX(),MouseWY() 'Asetetaan oma hiiremme windowshiiren paikalle

'Jos hiiri ja nappula ovat päällekkäin ja nappia painetaan
'Ohjelma lopetetaan.
If ObjectsOverlap(hiiri,nappi) And MouseHit(1) Then 
End
EndIf 

DrawScreen 'DrawZcreenzzz
Forever

Re: Valikko-ongelmia

Posted: Thu Feb 07, 2008 5:43 pm
by Koodiapina
Funktiot kunniaan. Kommentteja ei ole paljoa mutta se ei toivottavasti haittaa.

Code: Select all

 
   repeat
        Button(100,100,100,20,"Pelaa")
        Button(100,130,100,20,"Asetukset")
        if Button(100,160,100,20,"Poistu") then
              end    // kun painetaan nappulaa
        endif
        drawscreen
   forever

   // x, y koordinaatit
   // w,h koko
   // t painikkeen teksti
   // s painikkeen pyöreys
   Function Button(x,y,w,h,t$,s=5)
        If MouseX()>x And MouseY()>y And MouseX()<x+w And MouseY()<y+h Then
            If MouseDown(1) Then Color 180,180,180 Else Color 240,240,240
            If MouseUp(1) Then Return True  
        Else
            Color 200,200,200
        EndIf          
            Box x+s,y,w-(s*2),h     
            Box x,y+s,w,h-(s*2)
            Circle x,y,s*2
            Circle x+w-s*2,y,s*2
            Circle x+w-s*2,y+h-s*2,s*2
            Circle x,y+h-s*2,s*2
            Color cbblack
            CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
    EndFunction 

Re: Valikko-ongelmia

Posted: Thu Feb 07, 2008 7:22 pm
by otto90x
Grandi wrote:Funktiot kunniaan.
Ehdottomasti, mutta esimerkkiin kyllä ymppäisin myös taulukot vaikka näin:

Code: Select all

valikkonappuloita = 3

//luodaan nappuloille taulukko jossa toisen ulottuvuus kertoo onko kyseessä  
//nappulan nimi (1) vai nappulafunktion palauttama arvo (0)

Dim valikkokohta(valikkonappuloita-1,1) As String 

//asetetaan nappuloille nimet, nämähän voidaan toki vaikka ladata ulkoisesta tiedostostakin
valikkokohta(0,1)="Uusi peli"
valikkokohta(1,1)="Asetukset"
valikkokohta(2,1)="Lopeta peli"
 
Repeat

    // tässä päivitetään kaikkien nappuloiden tila, jos nappula on alhaalla niin valikkokohta(i,0)="1" muutoin valikkokohta(i,0)="0"
    For i=0 To valikkonappuloita-1
        valikkokohta(i,0)=Button(100,100+30*i,100,20,valikkokohta(i,1))
    Next i

    //jos nappula numero 2 eli lopetus on alhaalla niin lopetetaan
    If Int(valikkokohta(2,0)) Then End 
    
    DrawScreen
Forever

// x, y koordinaatit
// w,h koko
// t painikkeen teksti
// s painikkeen pyöreys
Function Button(x,y,w,h,t$,s=5)
    If MouseX()>x And MouseY()>y And MouseX()<x+w And MouseY()<y+h Then
        If MouseDown(1) Then Color 180,180,180 Else Color 240,240,240
        If MouseUp(1) Then Return True  
    Else
        Color 200,200,200
    EndIf          
        Box x+s,y,w-(s*2),h     
        Box x,y+s,w,h-(s*2)
        Circle x,y,s*2
        Circle x+w-s*2,y,s*2
        Circle x+w-s*2,y+h-s*2,s*2
        Circle x,y+h-s*2,s*2
        Color cbblack
        CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
EndFunction 

Re: Valikko-ongelmia

Posted: Sun Aug 14, 2011 10:01 am
by Lexi_
Miten saa sitten niin että kun painan nappia josta peli käynnistyisi että se käynnistäisi vaikka sen exen? ;D

Re: Valikko-ongelmia

Posted: Sun Aug 14, 2011 10:07 am
by axu
Lexi_ wrote:Miten saa sitten niin että kun painan nappia josta peli käynnistyisi että se käynnistäisi vaikka sen exen? ;D
Execute "ohjelma.exe"
Jos mietit miten toimii, lue manuaalista ;)

Re: Valikko-ongelmia

Posted: Wed Jan 18, 2012 7:15 pm
by Lexi_
Miten saan silleen että kun painan ''Pelaa'' nappia niin peli alkaa eikä käynnisty.. :D

Re: Valikko-ongelmia

Posted: Wed Jan 18, 2012 7:16 pm
by Awaclus
Esim. Gotolla.

Re: Valikko-ongelmia

Posted: Wed Jan 18, 2012 7:28 pm
by Lexi_
Mistäs nään miten tuo toimii? :D

Re: Valikko-ongelmia

Posted: Wed Jan 18, 2012 7:39 pm
by Latexi95
Lexi_ wrote:Mistäs nään miten tuo toimii? :D
Coolbasicin manuaalista. Kirjoita editoriin "Goto" ja tuplaklikkaa sitä, niin viereinen manuaali pitäisi avautua "Goton" kohdalta.

Re: Valikko-ongelmia

Posted: Wed Jan 18, 2012 7:59 pm
by Lexi_
Tämmösen ohjeen löysin

Code: Select all

Print "MOI"
GoTo yli

Print "Tätä riviä ei ikinä tulostu."

yli:
Print "Tänne hypättiin!"

WaitKey

ja käytin sitä näin : (sanokaa mikä on pielessä)

Code: Select all

SCREEN 640,480,0,cbfullscreen

 Repeat
        Button(100,100,100,20,"Pelaa") Then Goto yli
        Button(100,130,100,20,"Asetukset")
        if Button(100,160,100,20,"Poistu") Then 
              End    // kun painetaan nappulaa
        EndIf
        DrawScreen
   Forever

   // x, y koordinaatit
   // w,h koko
   // t painikkeen teksti
   // s painikkeen pyöreys
   Function Button(x,y,w,h,t$,s=5)
        If MouseX()>x And MouseY()>y And MouseX()<x+w And MouseY()<y+h Then
            If MouseDown(1) Then Color 180,180,180 Else Color 240,240,240
            If MouseUp(1) Then Return True 
        Else
            Color 200,200,200
        EndIf         
            Box x+s,y,w-(s*2),h     
            Box x,y+s,w,h-(s*2)
            Circle x,y,s*2
            Circle x+w-s*2,y,s*2
            Circle x+w-s*2,y+h-s*2,s*2
            Circle x,y+h-s*2,s*2
            Color cbblack
            CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
    EndFunction 


yli:
Const PAINOVOIMA = -0.1 

Re: Valikko-ongelmia

Posted: Wed Jan 18, 2012 8:25 pm
by MrMonday
Lexi_ wrote:Tämmösen ohjeen löysin

Code: Select all

Print "MOI"
GoTo yli

Print "Tätä riviä ei ikinä tulostu."

yli:
Print "Tänne hypättiin!"

WaitKey

ja käytin sitä näin : (sanokaa mikä on pielessä)

Code: Select all

SCREEN 640,480,0,cbfullscreen

 Repeat
        Button(100,100,100,20,"Pelaa") Then Goto yli
        Button(100,130,100,20,"Asetukset")
        if Button(100,160,100,20,"Poistu") Then 
              End    // kun painetaan nappulaa
        EndIf
        DrawScreen
   Forever

   // x, y koordinaatit
   // w,h koko
   // t painikkeen teksti
   // s painikkeen pyöreys
   Function Button(x,y,w,h,t$,s=5)
        If MouseX()>x And MouseY()>y And MouseX()<x+w And MouseY()<y+h Then
            If MouseDown(1) Then Color 180,180,180 Else Color 240,240,240
            If MouseUp(1) Then Return True 
        Else
            Color 200,200,200
        EndIf         
            Box x+s,y,w-(s*2),h     
            Box x,y+s,w,h-(s*2)
            Circle x,y,s*2
            Circle x+w-s*2,y,s*2
            Circle x+w-s*2,y+h-s*2,s*2
            Circle x,y+h-s*2,s*2
            Color cbblack
            CenterText x+w/2,y+h/2-TextHeight(t)/2,t$
    EndFunction 


yli:
Const PAINOVOIMA = -0.1 
Ainakin sinulla puuttui "If" heti repeattia seuraavalla rivillä.. Ja ihan lopussa sinulla on määriteltynä vakio PAINOVOIMA, millä ei näytä olevan mitään tekemistä valikon kanssa :)
EDIT:

Varmaankin siis tarkoitti että siitä "peli" alkaa, tulkitsin hieman hätiköiden. Mutta tosiaan if paikoilleen ja hiiren olisi hyvä näkyä ruudulla, niin ei tarvitse sen sijaintia etsiä heiluttelemalla kunnes painikkeet välkkyvät ;)


Re: Valikko-ongelmia

Posted: Mon Jan 23, 2012 6:13 pm
by Kokkelkhan
Silmukoiden kanssa kikkailu on tosiaan hyvä opetella. Itse toteutan valikko ja pause systeemit jokseenkin tähän tyyliin:

Code: Select all

MENU:     'Valikon koodi
Repeat
	Text 10,10,"Menu"
	If Keyhit(CbKeyReturn) Then GoTo LOAD:     'Jos entteriä painetaan -> siirrytään lataus osioon
	If Keyhit(1) Then End     'Esc = lopetus
	
	Drawscreen
Forever

LOAD:     'Kuvien & objektien lataus
//Lataus hommelit
GoTo GAME     '...jonka jälkeen siirretään suoritus itse peliin

GAME:     'Pelin koodi
Repeat
	Text 10,10,"Game"
	If Keyhit(2) Then     'Jos '1' näppäintä painetaan... 
		ClearObjects     '-tyhjennetään muisti objekteista (lisää äänille & kuville omat poistot)
		GoTo MENU     'ja pompataan valikkoon
	Endif
	If Keyhit(CbKeySpace) Then GoSub PAUSE     'Välilyönti = suoritus siirtyy PAUSE silmukkaan

	Drawscreen
Forever

PAUSE:     'Pause osio, johon voidaan lisätä valikko
Repeat
	Text 10,10,"Pause"

	Drawscreen
Until KeyHit(CbKeySpace)     'välilyöntiä painetaan...
Return     'suoritus takaisin peliin
Jotenkin näin, en pääse testaamaan juuri nyt mutta pitäisi toimia...

Re: Valikko-ongelmia

Posted: Wed Jul 11, 2012 4:57 pm
by Combatti
Kokkelkhan wrote:Silmukoiden kanssa kikkailu on tosiaan hyvä opetella. Itse toteutan valikko ja pause systeemit jokseenkin tähän tyyliin:

Code: Select all

MENU:     'Valikon koodi
Repeat
	Text 10,10,"Menu"
	If Keyhit(CbKeyReturn) Then GoTo LOAD:     'Jos entteriä painetaan -> siirrytään lataus osioon
	If Keyhit(1) Then End     'Esc = lopetus
	
	Drawscreen
Forever

LOAD:     'Kuvien & objektien lataus
//Lataus hommelit
GoTo GAME     '...jonka jälkeen siirretään suoritus itse peliin

GAME:     'Pelin koodi
Repeat
	Text 10,10,"Game"
	If Keyhit(2) Then     'Jos '1' näppäintä painetaan... 
		ClearObjects     '-tyhjennetään muisti objekteista (lisää äänille & kuville omat poistot)
		GoTo MENU     'ja pompataan valikkoon
	Endif
	If Keyhit(CbKeySpace) Then GoSub PAUSE     'Välilyönti = suoritus siirtyy PAUSE silmukkaan

	Drawscreen
Forever

PAUSE:     'Pause osio, johon voidaan lisätä valikko
Repeat
	Text 10,10,"Pause"

	Drawscreen
Until KeyHit(CbKeySpace)     'välilyöntiä painetaan...
Return     'suoritus takaisin peliin
Jotenkin näin, en pääse testaamaan juuri nyt mutta pitäisi toimia...
Muuten vaikuttaisi toimivan, mutta syntaksivirhe rivillä 4. Olet menossa labeliin LOAD, et labeliin LOAD: ;)

Re: Valikko-ongelmia

Posted: Wed Jul 11, 2012 4:59 pm
by skorpioni-cb
Combatti wrote:
Kokkelkhan wrote:Silmukoiden kanssa kikkailu on tosiaan hyvä opetella. Itse toteutan valikko ja pause systeemit jokseenkin tähän tyyliin:

Code: Select all

MENU:     'Valikon koodi
Repeat
	Text 10,10,"Menu"
	If Keyhit(CbKeyReturn) Then GoTo LOAD:     'Jos entteriä painetaan -> siirrytään lataus osioon
	If Keyhit(1) Then End     'Esc = lopetus
	
	Drawscreen
Forever

LOAD:     'Kuvien & objektien lataus
//Lataus hommelit
GoTo GAME     '...jonka jälkeen siirretään suoritus itse peliin

GAME:     'Pelin koodi
Repeat
	Text 10,10,"Game"
	If Keyhit(2) Then     'Jos '1' näppäintä painetaan... 
		ClearObjects     '-tyhjennetään muisti objekteista (lisää äänille & kuville omat poistot)
		GoTo MENU     'ja pompataan valikkoon
	Endif
	If Keyhit(CbKeySpace) Then GoSub PAUSE     'Välilyönti = suoritus siirtyy PAUSE silmukkaan

	Drawscreen
Forever

PAUSE:     'Pause osio, johon voidaan lisätä valikko
Repeat
	Text 10,10,"Pause"

	Drawscreen
Until KeyHit(CbKeySpace)     'välilyöntiä painetaan...
Return     'suoritus takaisin peliin
Jotenkin näin, en pääse testaamaan juuri nyt mutta pitäisi toimia...
Muuten vaikuttaisi toimivan, mutta syntaksivirhe rivillä 4. Olet menossa labeliin LOAD, et labeliin LOAD: ;)
Katsoppas milloin viimeinen viesti on lähetetty, ennen kuin lähetät uutta, ellei bumppaukselle ole järkevää syytä

Re: Valikko-ongelmia

Posted: Sat Jul 14, 2012 11:19 pm
by Jare
Pistetään lukkoon koko ketju ettei harhaudu aiheesta enempää. Jos joku haluaa tämän auki, voi vaikka raportoida tämän mun viestin ylläpidolle (avaamisen perustelu mukaan), niin joku moderaattoreista avaa tämän harkintansa mukaan.

Ja skorppari voi lopettaa sen "moderoinnin". Raportointinappulan painaminen on siistimpi tapa hoitaa asia kuin moderointi ilman oikeuksia.