Valikko-ongelmia

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
ihannyyppä
Newcomer
Posts: 47
Joined: Tue Oct 16, 2007 5:28 pm
Location: Varkaus
Contact:

Valikko-ongelmia

Post 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 :)
Valmiit pelit: 0 muahaha
Projekteina:
Vivarium (beta saattaa tulla lähi-aikoina)
Crusher Bastard (vasta suunnitteluvaiheessa)
Rattijuoppo (Projekti jäässä)
Pabnih
Newcomer
Posts: 34
Joined: Thu Sep 20, 2007 3:15 pm
Location: Hirvas

Re: Valikko-ongelmia

Post 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
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Valikko-ongelmia

Post 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 
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Valikko-ongelmia

Post 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 
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Lexi_

Re: Valikko-ongelmia

Post by Lexi_ »

Miten saa sitten niin että kun painan nappia josta peli käynnistyisi että se käynnistäisi vaikka sen exen? ;D
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Valikko-ongelmia

Post 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 ;)
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
Lexi_

Re: Valikko-ongelmia

Post by Lexi_ »

Miten saan silleen että kun painan ''Pelaa'' nappia niin peli alkaa eikä käynnisty.. :D
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Valikko-ongelmia

Post by Awaclus »

Esim. Gotolla.
Lexi_

Re: Valikko-ongelmia

Post by Lexi_ »

Mistäs nään miten tuo toimii? :D
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Valikko-ongelmia

Post 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.
Lexi_

Re: Valikko-ongelmia

Post 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 
MrMonday
Advanced Member
Posts: 378
Joined: Fri Oct 10, 2008 2:35 pm

Re: Valikko-ongelmia

Post 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 ;)

User avatar
Kokkelkhan
Newcomer
Posts: 6
Joined: Tue Mar 15, 2011 9:25 pm
Location: Pk-seutu

Re: Valikko-ongelmia

Post 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...
Päräjää...!
User avatar
Combatti
Active Member
Posts: 101
Joined: Fri Jun 29, 2012 6:23 pm
Location: Kuhmo

Re: Valikko-ongelmia

Post 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: ;)
~Yhteiskuntaan kyllästynyt koodari.
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Valikko-ongelmia

Post 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ä
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.

I know not what I know, but I do know that it's not beautiful.
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: Valikko-ongelmia

Post 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.
Locked