Pygame player datei importieren

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

Ich habe eine main datei und eine player datei und die main datei kann die player datei nicht richtig aufrufen.
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

Code: Alles auswählen

import pygame
from player import *

pygame.init()

window = pygame.display.set_mode((800,600))

pygame.display.set_caption("Window")

black = (0,0,0)
white = (255,255,255)
blue = (50,60,200)
green = (85,255,0,85)
yellow = (255,255,85)
red = (255,85,85)
orange = (255,170,0)

FPS = 60

clock=pygame.time.Clock()

player = Player(100,400,300,50,50)

gameLoop=True
while gameLoop:

    for event in pygame.event.get():

        if (event.type==pygame.QUIT):

            gameLoop=False

    window.fill(blue)

    player.render(window)

    clock.tick(FPS)
    pygame.display.flip()

pygame.quit()
Zuletzt geändert von N4SONIC am Sonntag 8. Februar 2015, 21:34, insgesamt 2-mal geändert.
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

Code: Alles auswählen

import pygame

class Player:
    def __init__(self, health, x, y, width, height):
        self.health = health
        self.x = x
        self.y = y
        self.width = width
        self.height = height

    def render(self, window):
        pygame.draw.rect(window, black, (self.x, self.y, self.width, self.height))
BlackJack

@N4SONIC: Und wo liegt jetzt das konkrete Problem? Bekommst Du eine Ausnahme? Explodiert Dein Rechner? Passiert etwas anderes als Du erwartet hast? Falls ja, was hast Du erwartet? Und was passiert stattdessen?
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

@BlackJack: Wenn ich die main ausführe dann öffnet sich kurz das fenster und geht wieder zu und dann kommt dieser Error.

"C:\Spiele und Programme\Python\python.exe" "C:/Users/N4SONIC/Desktop/Python Projekte/Test/main.py"
Traceback (most recent call last):
File "C:/Users/N4SONIC/Desktop/Python Projekte/Test/main.py", line 35, in <module>
player.render(window)
File "C:\Users\N4SONIC\Desktop\Python Projekte\Test\player.py", line 12, in render
pygame.draw.rect(window, black, (self.x, self.y, self.width, self.height))
NameError: global name 'black' is not defined

Process finished with exit code 1
BlackJack

@N4SONIC: Der Name `black` ist im `player`-Modul ja auch nirgends definiert. Und komm jetzt bloss nicht auf die Idee den aus dem `main`-Modul importieren zu wollen, denn dann hast Du einen zirkulären import und das funktioniert in den seltensten Fällen so wie man sich das vorstellt. Du müsstest also entweder die Farben, oder zumindest `black` in ein weiteres Modul auslagern aus dem sich dann das `main`- und das `player`-Modul die benötigten Farbwerte importieren, oder `Player` in das `main`-Modul verschieben und das `player`-Modul verwerfen.

Bei der Gelegenheit könntest Du dann auch die Namen für Konstante Werte komplett gross schreiben und das mit dem ``*`` beim ``import`` sein lassen.

Es könnte eventuell Sinn machen für `Player` die Klasse `pygame.sprite.Sprite` als Basisklasse zu verwenden. Oder zumindest `x`, `y`, `width`, und `height` durch ein `Rect`-Exemplar zu ersetzen.
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

Problem gelöst danke :)
Antworten