Pygame Programmcode Hilfe!

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
GoldenPrograms
User
Beiträge: 1
Registriert: Dienstag 25. März 2014, 17:24

Hallo erstmal.
Ich hab in Python mit Pygame einen kleinen code geschrieben aber er will irgendwie nicht funktionieren.

Code: Alles auswählen

markiert = 1
while not done:
    starten = pygame.font.Font(None, 100)
    optionen = pygame.font.Font(None, 100)
    hilfe = pygame.font.Font(None, 100)
    beenden = pygame.font.Font(None, 100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                done = True
            if event.key == pygame.K_w:
                markiert -= 1
            elif event.key == pygame.K_a:
                markiert += 1
    if(markiert == 0):
        markiert = 1
        starten = pygame.font.Font(None, 125)
    if(markiert == 1):
        starten = pygame.font.Font(None, 125)
    if(markiert == 2):
        optionen = pygame.font.Font(None, 125)
    if(markiert == 3):
        hilfe = pygame.font.Font(None, 125)
    if(markiert == 4):
        beenden = pygame.font.Font(None, 125)
    if(markiert == 5):
        markiert = 4
        beenden = pygame.font.Font(None, 125)
 
    startent = starten.render("Spiel starten",True,BLACK)
    optionent = optionen.render("Optionen",True,BLACK)
    hilfet = hilfe.render("Hilfe",True,BLACK)
    beendent = beenden.render("Spiel beenden",True,BLACK)
 
    screen.fill(WHITE)
    screen.blit(startent, [400,200])
    screen.blit(optionent, [400,300])
    screen.blit(hilfet, [400,400])
    screen.blit(beendent, [400,500])
    pygame.display.flip()
    clock.tick(30)
Ich will damit machen das wenn man w bzw. a drückt der jeweilige Button hervorgehoben wird.
Danke im Vorraus für Antworten.
Benutzeravatar
Madmartigan
User
Beiträge: 200
Registriert: Donnerstag 18. Juli 2013, 07:59
Wohnort: Berlin

GoldenPrograms hat geschrieben:...aber er will irgendwie nicht funktionieren.
Was genau funktioniert denn nicht? Ohne genauere Fehlerbeschreibung muss man immer raten.

Der langkettige if-Block ist sehr unschön, da würde sich die Verwendung eines dictionary anbieten.
Warum erzeugst du alle Objekte (starten, optionen, ...) in jedem Durchlauf der while-Schleife neu?
Deutsche Bezeichner sind unkonventionell und ich würde immer davon abraten.
MGS_Freak
User
Beiträge: 35
Registriert: Donnerstag 13. Januar 2011, 13:50
Wohnort: Schweiz

Was genau funktioniert denn nicht? Ohne genauere Fehlerbeschreibung muss man immer raten.
Starte es mal so wie es ist und da gehts in Zeile 2 mit dem ersten Fehler los:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Users\Reto\Documents\Notizen\python\Testing\forum.py", line 2, in <module>
    while not done:
NameError: name 'done' is not defined
done ist nämlich nicht definiert. Kleine Frage: ist das wirklich der ganze Code? Wie willst Du pygame verwenden ohne das Modul zu importieren? Den Rest hab ich gar noch nicht angeschaut
Benutzeravatar
Madmartigan
User
Beiträge: 200
Registriert: Donnerstag 18. Juli 2013, 07:59
Wohnort: Berlin

MGS_Freak hat geschrieben:Starte es mal so wie es ist und da gehts in Zeile 2 mit dem ersten Fehler los
Ich ging nicht davon aus, dass dies der komplette Code ist. :wink:

Nach korrekter pygame-Initialisierung funktioniert der Code bei mir (auch wenn er unsauber ist). Daher die Frage, was genau bei ihm nicht funktioniert.
MGS_Freak
User
Beiträge: 35
Registriert: Donnerstag 13. Januar 2011, 13:50
Wohnort: Schweiz

Madmartigan hat geschrieben:Ich ging nicht davon aus, dass dies der komplette Code ist. :wink:
Nach korrekter pygame-Initialisierung funktioniert der Code bei mir (auch wenn er unsauber ist). Daher die Frage, was genau bei ihm nicht funktioniert.
Haha ok, doch selbst wenn pygame initialisiert wird, so fehlt doch nach wie vor die Definition von done...oder BLACK oder WHITE...darum bitte ich darum mal den ganzen Code posten ;) Ah und der Code läuft bei mir nicht, haha wieso geht's bei Dir zum Geier nochmal, haste so viel nachkorrigiert?
Edit: Ok nach Einrückungskorrekturen konnte ich es auch ausführen - so was nicht geht ist wohl, dass Du w oder a drücken kannst doch trotzdem wird nichts "markiert"...müsste man dem Programm noch beibringen und da liegt IMO die Frage vom Ersteller
Benutzeravatar
Madmartigan
User
Beiträge: 200
Registriert: Donnerstag 18. Juli 2013, 07:59
Wohnort: Berlin

Ich habe nicht viel korrigiert, lediglich pygame initialisiert und done deklariert.
Bei mir funktioniert auch das "Markieren" der Menüpunkte, d.h. die Font wird größer bzw. wieder kleiner dargestellt.

Was genau funktioniert denn bei euch da nicht? :K
MGS_Freak
User
Beiträge: 35
Registriert: Donnerstag 13. Januar 2011, 13:50
Wohnort: Schweiz

Hmm nach Neustart meines Systems und somit Beruhigung des Python-Prozesses klappts bei mir komischerweise auch, hat sich wohl irgendwie aufgehängt. Verwirrt mich allerdings eher als dass es Wissen mit sich bringt ;).
Ja gut, de facto wissen wir beide immer noch nicht wo das Problem des Erstellers liegt...!
Antworten