Pygame player datei importieren
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.
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))
@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?
@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
"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
@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.
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.