ich programmiere seit einiger Zeit mit Python bzw. pygame, seit kurzen habe ich ein seltsames Problem, wenn ich mein Spiel aus der Idle das 1.te mal starte
dann funktioniet alles, wenn ich es aber im gleichen durchlauf ein 2.tes mal starten will kommt nach kurzer zeit "Python funktioniert nicht mehr..."
Meine Frage, warum? bzw wie kann man das beheben
Hier der bisherige recht überschaubare Code:
Code: Alles auswählen
print("Load")
bif="bg_earth.jpg"
#Wichtige Kerndeklarationen!
print("load 40%")
mif="greenrunner_default.png"
bif="bg_stone.jpg"
leben = 100
intro_img="intro_lamp_improved.png"
light="light_default.png"
run2="kreuz.png"
auswahl_img="inventar_selection.png"
lebensleiste_img="lives_bar.png"
leben_full="live_full.png"
strength_image="strength.png"
while_register=0
jump_moved=0
inventar="inventar.png"
block1_image="block_1.png"
bullet_image="bullet.png"
maske_image="maske.png"
jh=60
lebenspunkte = 100
#array für x-koordinaten
arrayx = 200 , 220, 240, 260, 280, 300
#array für y-koordinaten
arrayy = 200 , 200, 200, 200, 200, 200
jh_caption=str(jh)
print("load 80%")
#imports setzen
import time
import math
import pygame, sys
import Tilemap
#import inventar_render
from pygame.locals import *
#/imports:D
pygame.init()
#BILDER KONVERTIEREN
screen=pygame.display.set_mode((640,480),0,32)
background=pygame.image.load(bif).convert()
player_char=pygame.image.load(mif).convert_alpha()
light_convert=pygame.image.load(light).convert_alpha()
run_rechts=pygame.image.load(run2).convert_alpha()
inventar_inv=pygame.image.load(inventar).convert_alpha()
inv_auswahl=pygame.image.load(auswahl_img).convert_alpha()
lebensleiste=pygame.image.load(lebensleiste_img).convert_alpha()
lebenvoll=pygame.image.load(leben_full).convert_alpha()
strength=pygame.image.load(strength_image).convert_alpha()
intro=pygame.image.load(intro_img).convert_alpha()
block1=pygame.image.load(block1_image).convert_alpha()
bullet=pygame.image.load(bullet_image).convert_alpha()
maske=pygame.image.load(maske_image).convert_alpha()
#FPS kontrollieren
clock = pygame.time.Clock()
print("loaded 100% completed")
#DEBUG MDOE kontrollieren
pygame.display.set_caption("Find it yourself!")
#POSIOTIONS bariablen setzen
x,y=60,120
movex, movey=0,0
#INVENTAR auswahl
auswahlx,auswahly=4,482
#INTRO
screen.blit(intro,(0,0))
font = pygame.font.Font(None, 33)
text = font.render('Find it yourself!', True, (255,
255, 255))
textRect = text.get_rect()
textRect.centerx = screen.get_rect().centerx
textRect.centery = screen.get_rect().centery
screen.blit(text, textRect)
pygame.display.update()
time.sleep(2)
#Menue anfang
xb = 2
xc = 2
while xb == 2:
screen.blit(intro,(0,0))
font2 = pygame.font.Font(None, 36)
text2 = font2.render('Hauptmenü:', True, (255,255, 255))
screen.blit(text2, (10,10))
font3 = pygame.font.Font(None, 36)
text3 = font3.render('[1]Spiel starten', True, (255,255, 255))
screen.blit(text3, (150,150))
font4 = pygame.font.Font(None, 36)
text4 = font4.render('[2]Spieleinstellungen', True, (255,255, 255))
screen.blit(text4, (150,200))
if xc == 3:
print("EINSTELLUNGEN AUFGERUFEN")
for event in pygame.event.get():
if event.type==KEYDOWN:
if event.key==K_1:
xb = 3
screen=pygame.display.set_mode((640,544),0,32)
if event.key==K_2:
xc = 3
time.sleep(0.05)
pygame.display.update()
#Menue ende
while True:
if x == 0:
x = 1
if y == 0:
y =1
if x==640:
x=120
lebenspunkte=-int(10)
if lebenspunkte<=70:
print("TOD")
if y>=480:
y=120
for event in pygame.event.get():
if event.type == QUIT:
font = pygame.font.Font(None, 33)
text = font.render('Vielen Dank fürs Spielen!', True, (255,
255, 255))
textRect = text.get_rect()
textRect.centerx = screen.get_rect().centerx
textRect.centery = screen.get_rect().centery
screen.blit(text, textRect)
pygame.display.update()
time.sleep(2)
pygame.quit()
sys.exit()
if event.type==KEYDOWN:
if event.key==K_SPACE:
movey*2
movex*2
player_char = pygame.transform.rotate(player_char, 90)
if event.key==K_LEFT:
movex=-0.5
while_register=0
elif event.key==K_RIGHT:
movex=+0.5
while_register=0
elif event.key==K_UP:
movey=-0.5
elif event.key==K_DOWN:
movey=+0.5
elif event.key==K_1:
auswahlx,auswahly=4,482
elif event.key==K_2:
auswahlx,auswahly=68,482
elif event.key==K_3:
auswahlx,auswahly=136,482
elif event.key==K_4:
auswahlx,auswahly=200,482
elif event.key==K_5:
auswahlx,auswahly=264,482
if event.type==KEYUP:
if event.key==K_LEFT:
movex=0
elif event.key==K_RIGHT:
movex=0
elif event.key==K_UP:
movey=0
elif event.key==K_DOWN:
movey=0
map = Tilemap.Tilemap
clock.tick(600)
x+=movex
y+=movey
screen.blit(background, (0,0))
screen.blit(player_char,(x,y))
#screen.blit(maske,(x,y))
#screen.blit(maske,(-x,-y))
screen.blit(light_convert, (0,0))
pygame.transform.rotate(player_char, 90)
screen.blit(inventar_inv, (0,480))
screen.blit(inv_auswahl, (auswahlx,auswahly))
screen.blit(lebensleiste,(6,448))
#==lebensanzeigerenderinhalt==
screen.blit(lebenvoll,(12,454))
screen.blit(lebenvoll,(34,454))
screen.blit(lebenvoll,(56,454))
screen.blit(lebenvoll,(78,454))
screen.blit(lebenvoll,(100,454))
screen.blit(lebenvoll,(122,454))
screen.blit(block1,(200,200))
#stärke
screen.blit(strength,(150,454))
screen.blit(strength,(172,454))
screen.blit(strength,(194,454))
screen.blit(strength,(216,454))
screen.blit(strength,(238,454))
#==ENDE render lebensanzeige inhalt==
'NOTHING TO RENDER AT THIS MOMENT'
#==Render blöcke bzw, versch. Blocktypen==
#Ende Render Blocktypen
#ITEM test vorbehalten: screen.blit(item_lamp,(6,484))
pygame.display.update()
Mit freundlichen Grüssen
paulkoch95