@ BlackJack: Naja, ich würde das ganze mit der Klasse ja auch gerne sein lassen. Deshalb hab ich ja auch 454 Zeilen in 10 Funktionen plus zwei Zeilen Hauptstrang...
Das Problem ist nur, dass ich über meine mainloop() momentan um die...ziemlich genau 9 Variablen an die jeweiligen von ihr, der mainloop(), aufgerufenen Funktionen übergebe.
Wen es interessiert, hier mal die letzten Zeilen meines Codes, das sind nur die beiden Hauptfunktionen main() und mainloop().
Der gesamte Teil der nun in der main() steckt, war vorher im Hauptstrang, da waren also u.a. die Soundfiles global, was sie jetzt nicht mehr sind. Und da ich, sollten mal, rein hypothetisch weitere Soundfiles hinzukommen, nicht auch noch diese Variablen jeweils an die Funktionen übermitteln möchte, dachte ich mir, wäre eine Klasse, die die Sounds ausgibt, vielleicht hilfreich..
Hier mal die letzten beiden Funktionen main() und mainloop().
Code: Alles auswählen
def mainloop(sound_on, fast_text, player_name):
'''Welcome to BrainBug ver. 0.0.
Where all is working and nothing is laggy.
If you arrived, you will recognize now, that the answer for everything,
nothing and the big whole everything is simple.
It's just: 42.
So we hope you have enjoyed this journey and that you had a nice ride
with _guessy_ and her HonkyTonky, rarely faboulous, alltimed famous and
incredibly unbelievable...
PHYSICA:LL:INES.'''
menu = 1
sound_sett = 1
cipher_band = 1
difficult = 1
while True:
if menu == 0:
mainmenue(menu, cipher_band, difficult, player_name)
menu = play_game(cipher_band, trials, fast_text, sound_on, menu,
player_name)
else:
mainmenue(menu, cipher_band, difficult, player_name)
cipher_band = set_range(fast_text, sound_on)
trials = bisect(cipher_band)
difficult = difficulty(cipher_band, trials, fast_text, sound_on)
sound_sett = sound_setting(sound_sett, sound_on)
menu = play_game(cipher_band, trials, fast_text, sound_on, menu,
player_name)
def main():
print('\n\
*********************************************\n\
******************* GUESS *******************\n\
*********************************************')
time.sleep(0.2)
player_name = input('>> Bitte geben Sie Ihren Namen ein: ')
print('Hallo', player_name, '!')
if player_name == 'TESTER':
fast_text = 1
else:
fast_text = 0
time.sleep(1.2)
while True:
try:
response_snd = int(input('Sound aktivieren? [1] JA | [0] NEIN '))
if response_snd == 1:
try:
noticed_snd = 'signatur-Dil-7491_hifi.mp3'
pygame.mixer.music.load(noticed_snd)
bkgrnd_people_snd = 'People_T-Doogens-8720_hifi.mp3'
pygame.mixer.music.load(bkgrnd_people_snd)
win_snd = 'Applause-SFXsourc-9027_hifi.mp3'
pygame.mixer.music.load(win_snd)
check_snd = 'plim-Gato_pre-7790_hifi.mp3'
pygame.mixer.music.load(check_snd)
print('Sounddateien erfolgreich geladen...')
sound_on = 1
break
except IOError:
print('''Sounddateien nicht gefunden!
Spiel wird ohne Sound fortgesetzt...''')
sound_on = 0
time.sleep(2.4)
break
elif response_snd == 0:
sound_on = 0
break
else:
print('''Bestätige [1] um den Sound zu aktivieren
[0] deaktiviert die Soundausgabe!''')
except ValueError:
print('''Bestätige [1] um den Sound zu aktivieren
[0] deaktiviert die Soundausgabe!''')
text_render(fast_text, beg=0, end=8)
print()
text_render(fast_text, beg=8, end=22)
if sound_on == 1:
pygame.mixer.music.load(bkgrnd_people_snd)
pygame.mixer.music.play()
print()
text_render(fast_text, beg=22, end=26)
text_render(fast_text, beg=26, end=40)
print()
mainloop(sound_on, fast_text, player_name)
close_game(player_name)
if __name__ == '__main__':
main()
Der DocString für die Main steht noch nicht, da ich den DocString gerne zum Schluß schreibe, da sich meist noch das ein oder andere ändert (hier zB die Soundausgabe...)
Der DocString für die Mainloop() sollte ursprünglich der letzte sein, daher ist er nicht ernst zu nehmen. Der war allerdings nur solange der letzte, bis ich mich entschied, gar keine globalen Variablen mehr benutzen zu wollen, sondern nur noch eine KONSTANTE (nicht im Code abgebildet...)
Daher der evtl. etwas komisch wirkende DocString...
@ Sirius3: Danke für den Code! Dabei ist mir grade wie Schuppen von den Augen gefallen, dass das ja gar keine variablen sondern KONSTANTEN sind, was die ganze Sache natürlich schon ganz anders aussehen lässt...
Hm, gut, die play()-Funktion kann ich zwar noch immer nicht nutzen, da Unterfunktionen sich sonst wieder selbst aufrufen würden ohne einen konkreten Rückgabewert zu liefern, ABER: Wozu die play()-Funktion? Das bisschen Code für "pygame.mixer.music.load()" und "pygame.mixer.music.play()" habe ich so oder so schon an den entsprechenden Stellen im Code stehen, nur die KONSTANTEN muss ich kurz definieren und dann SOLLTE es ja eigentlich laufen
Ich hab vor lauter Schleifen wohl vergessen, dass KONSTANTEN ruhig global sein dürfen
Danke