Problem mit Pygame

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Subanix
User
Beiträge: 1
Registriert: Dienstag 10. August 2021, 10:17

Guten Tag,
ich bin echt am verzweifeln ich will ein Game Programmieren was verschiedene Interaktionen mit mini games hat und dafür nutze ich einfach damit sich ein neues fenster öffnet die import variante also z.b if press[pygame.K_m]: import game wo dan das game statt findet aber jedes mal wenn ich dan wieder mit einer taste zurück gehe in die main.py und dan wieder in die game.py gehe stürzt das Programm ab und bringt die Fehlermeldung:"Traceback (most recent call last):
File "C:/Users/sebas/PycharmProjects/GameX/main.py", line 51, in <module>
game()
File "C:/Users/sebas/PycharmProjects/GameX/main.py", line 36, in game
import game
File "C:\Users\sebas\PycharmProjects\GameX\game.py", line 54, in <module>
from levels import snake
File "C:\Users\sebas\PycharmProjects\GameX\levels\snake.py", line 44, in <module>
screen.fill((0,0,0))
pygame.error: display Surface quit"
Und ich verstehe nicht warum weil das ist von großer wichtig keit das das funktioniert oder hat jemand eine bessere idee? Ich stell meine 2 Codes mal hier rein und hoffe mir kann jemand helfen
Die Main.py:

Code: Alles auswählen

import pygame
pygame.init()

#loaded things
start_screen = pygame.image.load('pictures/start_screen.png')
start_bg = pygame.image.load('pictures/start_background.png')
start_if = pygame.image.load('pictures/start_info.png')

#Display
size = width, height = 1280, 720
pygame.display.set_caption("GameX")
screen = pygame.display.set_mode((size),pygame.FULLSCREEN)
clock = pygame.time.Clock()
fps = 60

#pictures
start_bg = pygame.transform.scale(start_bg, (width,height))
start_screen = pygame.transform.scale(start_screen,(840 , 560))
start_if = pygame.transform.scale(start_if, (185,35))

#Def-Zone
def draw_start():
    screen.blit(start_bg, (0,0))
    screen.blit(start_screen, (200, -50))
    screen.blit(start_if,(530,350))
    pygame.display.flip()

def game():
    import game
    game.done = False

#Menu-Logic
done = False
while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    press = pygame.key.get_pressed()
    if press[pygame.K_ESCAPE]:
        done = True
    if press[pygame.K_SPACE]:
        done = True
        game()

    draw_start()
    clock.tick(fps)

pygame.quit()
Und die Game.py

Code: Alles auswählen

import pygame
pygame.init()

#Loaded things


#Display
pygame.display.set_caption("GameX")
screen = pygame.display.set_mode((0,0), pygame.FULLSCREEN)
clock = pygame.time.Clock()
fps = 60
wd = pygame.display.Info()
width = wd.current_w
height = wd.current_h

#Variabels
p_limitation_width = width - 52
p_limitation_height = height - 52
done = None
y_pos = 50
x_pos = 50
speed = 3

#Def-Zone
def draw_game():
    screen.blit(screen,(0,0))
    pygame.draw.rect(screen, 255, [x_pos, y_pos, 50, 50])
    pygame.display.update()
def menu_back():
    import main
    main.done = False

#Game-logic
done = False
while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    press = pygame.key.get_pressed()
    if press[pygame.K_BACKSPACE]:
        done = True
        menu_back()
    if press[pygame.K_ESCAPE]:
        done = True
    if press[pygame.K_1]:
        from levels import snake
        snake.done = False
    if press[pygame.K_w] and y_pos > 0:
        y_pos -= speed
    if press[pygame.K_s] and not y_pos > p_limitation_height:
        y_pos += speed
    if press[pygame.K_a] and x_pos > 0:
        x_pos -= speed
    if press[pygame.K_d] and not x_pos > p_limitation_width:
        x_pos += speed
    screen.fill((0,0,0))
    draw_game()
    clock.tick(fps)

pygame.quit()
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das funktioniert so nicht. Du kannst die Games nicht einfach per Import reinziehen, und die sind jeweils vollständig eigenständige Programme.

Du musst einfach ein pygame Gerüst drumrum legen, dass einmal alles aufsetzt (Display, Sound, input) und aus deinem Menü dann in ein entsprechendes Mini-Game verzweigen, zb mit einer eigenen Funktion.
Antworten