Forum » Programiranje » Return ne deluje[python]
Return ne deluje[python]
Jonatan ::
Hej! Sem nov v programiranuju in trenutno delam meni za svojo igro v pythonu. Vendar pa se mi je zapletlo pri preklapljanju med različnimi zasloni menija; preklop poteče namreč za manj kot sekundo, kar pa je občutno premalo, da bi bil meni kakorkoli uporaben. Return ki sem ga dodal funkcije ni ustavil, zato sem dodal še break, ki pa je preklop le znatno podaljšal, naredil pa ni ničesar uporabnega. Napako sem poskusil pogooglati, vendar brez uspeha. Napaka je verjetno v tej kodi:
Ne vem pa kje je napaka, zaradi katere return ne deluje, zato bi vas lepo prosil, če bi mi kdo lahko razložil, kaj sem naredil narobe?
def meni(): global run screen.blit(ozadje, (0, 0)) screen.blit(naslov_menija, (440, 210)) screen.blit(avtor, (450, 270)) #Prva števka je številka izbire, druga pa številka jezika. izbira10 = (440, 305, 210, 30) izbira11 = (440, 300, 280, 30) izbira20 = (440, 335, 140, 30) izbira21 = (440, 335, 173, 30) izbira30 = (440, 365, 70, 30) izbira31 = (440, 365, 90, 30) mouse = pygame.mouse.get_pos() if jezik == 0: screen.blit(singleplayer, (440, 300)) if mouse[0] > izbira10[0] and mouse[0] < izbira10[0] + izbira10[2]: if mouse[1] > izbira10[1] and mouse[1] < izbira10[1] + izbira10[3]: pygame.draw.rect(screen, rdeca, izbira10, 3) elif jezik == 1: screen.blit(enoigralski_nacin, (440, 300)) if mouse[0] > izbira11[0] and mouse[0] < izbira11[0] + izbira11[2]: if mouse[1] > izbira11[1] and mouse[1] < izbira11[1] + izbira11[3]: pygame.draw.rect(screen, rdeca, izbira11, 3) if jezik == 0: screen.blit(settings, (440, 330)) if mouse[0] > izbira20[0] and mouse[0] < izbira20[0] + izbira20[2]: if mouse[1] > izbira20[1] and mouse[1] < izbira20[1] + izbira20[3]: pygame.draw.rect(screen, rdeca, izbira20, 3) for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONDOWN: nastavitve() break return elif jezik == 1: screen.blit(nastavitve, (440, 330)) if mouse[0] > izbira21[0] and mouse[0] < izbira21[0] + izbira21[2]: if mouse[1] > izbira21[1] and mouse[1] < izbira21[1] + izbira21[3]: pygame.draw.rect(screen, rdeca, izbira21, 3) for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONDOWN: nastavitve() break return if jezik == 0: screen.blit(izhod1, (440, 360)) if mouse[0] > izbira30[0] and mouse[0] < izbira30[0] + izbira30[2]: if mouse[1] > izbira30[1] and mouse[1] < izbira30[1] + izbira30[3]: pygame.draw.rect(screen, rdeca, izbira30, 3) for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONDOWN: run = False elif jezik == 1: screen.blit(izhod2, (440, 360)) if mouse[0] > izbira31[0] and mouse[0] < izbira31[0] + izbira31[2]: if mouse[1] > izbira31[1] and mouse[1] < izbira31[1] + izbira31[3]: pygame.draw.rect(screen, rdeca, izbira31, 3) for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONDOWN : run = False pygame.display.update() def nastavitve(): #Številka pomeni številko jezika naslov0 = font1.render('SETTINGS', 1, crna) naslov1 = font1.render('NASTAVITVE', 1, crna) screen.blit(ozadje , (0, 0)) if jezik == 0: screen.blit(naslov0, (440, 250)) elif jezik == 1: screen.blit(naslov1, (440, 250)) pygame.display.update()
Ne vem pa kje je napaka, zaradi katere return ne deluje, zato bi vas lepo prosil, če bi mi kdo lahko razložil, kaj sem naredil narobe?
chort ::
Mislim, da moraš pri sebi najprej razčistit kaj točno počneta break in return.
Break ustavi izvajanje for zanke in nadaljuje z izvajanjem kode po njej, zato se ukaz return za ukazom break nikoli ne izvede. https://www.tutorialspoint.com/python/p...
Return ustavi izvajanje funkcije meni() in vrne spremenljivko, ki sledi ukazu return (naprimer "return jezik" vrne vrednost spremenljivke "jezik"). https://www.tutorialspoint.com/python/p...
Kaj točno bi rad naredil na mestu, kjer imaš sedaj break/return?
Break ustavi izvajanje for zanke in nadaljuje z izvajanjem kode po njej, zato se ukaz return za ukazom break nikoli ne izvede. https://www.tutorialspoint.com/python/p...
Return ustavi izvajanje funkcije meni() in vrne spremenljivko, ki sledi ukazu return (naprimer "return jezik" vrne vrednost spremenljivke "jezik"). https://www.tutorialspoint.com/python/p...
Kaj točno bi rad naredil na mestu, kjer imaš sedaj break/return?
Zgodovina sprememb…
- spremenilo: chort ()
Jonatan ::
Mislim, da moraš pri sebi najprej razčistit kaj točno počneta break in return.
Break ustavi izvajanje for zanke in nadaljuje z izvajanjem kode po njej, zato se ukaz return za ukazom break nikoli ne izvede. https://www.tutorialspoint.com/python/p...
Return ustavi izvajanje funkcije meni() in vrne spremenljivko, ki sledi ukazu return (naprimer "return jezik" vrne vrednost spremenljivke "jezik"). https://www.tutorialspoint.com/python/p...
Kaj točno bi rad naredil na mestu, kjer imaš sedaj break/return?
Rad bi, da se mi tam funkcija preneha izvajati, ker mi prestavi na nastavitve() samo za delček sekunde.
styrian ::
Jaz bi začel tako, da bi naredil funckcijo, ki preveri vsebnost koordinate v kliknjenem pravokotniku.
chort ::
Z uporabniškimi vmesniki v pythonu nimam izkušenj, zato bom morda ustrelil kozla, ampak če želiš da ostanejo nastavitve() aktivne dlje časa potrebno krivca iskati v kodi nastavitve(). V tvoji trenutni izvedbi se namreč nastavitve() zaženejo, izvedejo in nato vrnejo v kodo meni().
styrian ::
Svetujem mu naj ne izumlja tople vode.
Najdi si PyGame knjigo ali tutorial, ki ti je všeč in šele ko boš razumel kaj se dogaja, eksperimentiraj s svojimi spremembami.
Tole je odlična knjiga:
https://nostarch.com/pythoncrashcourse2e
Najdi si PyGame knjigo ali tutorial, ki ti je všeč in šele ko boš razumel kaj se dogaja, eksperimentiraj s svojimi spremembami.
Tole je odlična knjiga:
https://nostarch.com/pythoncrashcourse2e
Jonatan ::
Mislil sem da znam dovolj za tak projekt. Očitno ne
Čeprav ne vem če je vzrok problema ravno pygame...
Čeprav ne vem če je vzrok problema ravno pygame...
Zgodovina sprememb…
- spremenil: Jonatan ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Linux]mousewheel in slo tipkovnicaOddelek: Operacijski sistemi | 1233 (1149) | Quikee |
» | radeon 9200 suse10 brightness problemOddelek: Operacijski sistemi | 1954 (1770) | roli |
» | linux & mi?kin scrolOddelek: Operacijski sistemi | 1019 (938) | CCfly |
» | Problem z Linux Red Hat 9Oddelek: Operacijski sistemi | 1549 (1382) | root987 |
» | Suse 8.2 težave z grafično...Oddelek: Operacijski sistemi | 1789 (1677) | norvalk |