Ich bin ziemlich neu bei Python, und ich kann nicht herausfinden, was falsch ist. Ich versuche eine Kugel zu bekommen, die erscheint und sich bewegt, aber das wird nicht funktionieren, sie bleibt am Spieler hängen. Mein Code ist eine Art chaotisch, aber hier ist es:Pygame-Kugeln bewegen sich nicht, nachdem sie gezeichnet wurden
screen = pygame.display.set_mode((512,512))
pygame.display.set_caption('The Necromancer')
background = pygame.image.load('textures/background/background1.png')
titlecard = pygame.image.load('textures/title/titlecard0.png')
chars = pygame.image.load('textures/char/chardown1.png')
skeleton = pygame.image.load('textures/char/chardown2.png')
up = 0
down = 0
right = 0
left = 0
x = 64
y = 64
selected = 0
titletime = 0
level = 0
facing = 'down'
dir = "down"
ballx = x
bally = y
ballstage = 0
spacetimer = 0
ballon = 0
global ballon
global ballstage
global dir
global ballx
global bally
global facing
global x
global y
class char(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.imagedown = pygame.image.load('textures/char/chardown1.png').convert_alpha()
self.imagedown = pygame.transform.scale(self.imagedown, (64,64))
self.imageup = pygame.image.load('textures/char/charup1.png').convert_alpha()
self.imageup = pygame.transform.scale(self.imageup, (64,64))
self.imageleft = pygame.image.load('textures/char/charleft1.png').convert_alpha()
self.imageleft = pygame.transform.scale(self.imageleft, (64,64))
self.imageright = pygame.image.load('textures/char/charright1.png').convert_alpha()
self.imageright = pygame.transform.scale(self.imageright, (64,64))
self.rect = screen.get_rect()
def draw(self):
if facing == 'up':
screen.blit(self.imageup, (x,y))
if facing == 'down':
screen.blit(self.imagedown, (x,y))
if facing == 'left':
screen.blit(self.imageleft, (x,y))
if facing == 'right':
screen.blit(self.imageright, (x,y))
pygame.display.update()
class ball(pygame.sprite.Sprite):
def __init__(self, surface, bax, bay):
#pygame.sprite.Sprite.__init__(self)
self.surface = surface
self.x = bax
self.y = bay
self.image = pygame.image.load('textures/proj/purpball1.png').convert_alpha()
self.image = pygame.transform.scale(self.image, (64,64))
self.rect = screen.get_rect()
return
def update(self):
ballstage += 1
global ballstage
if ballstage == 20:
self.image = pygame.image.load('textures/proj/purpball1.png').convert_alpha()
if ballstage == 40:
self.image = pygame.image.load('textures/proj/purpball2.png').convert_alpha()
if ballstage == 60:
self.image = pygame.image.load('textures/proj/purpball3.png').convert_alpha()
if ballstage == 80:
self.image = pygame.image.load('textures/proj/purpball4.png').convert_alpha()
self.image = pygame.transform.scale(self.image, (64,64))
if ballstage == 100:
ballstage = 0
if dir == 'down':
self.y += 1
if dir == 'up':
self.y -= 1
if dir == 'right':
self.x += 1
if dir == 'left':
self.x -= 1
self.surface.blit(self.image, (self.x, self.y))
return
ballGroup = []
pygame.display.update()
while True: #Update
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
pygame.display.update()
while level == 1:
randx = random.randrange(0, 512, 64)
randy = random.randrange(0, 512, 64)
if dir == 'down':
bally += 1
if dir == 'up':
bally -= 1
if dir == 'right':
ballx += 1
if dir == 'left':
ballx -= 1
if x <= -1:
x = 0
if y <= -1:
y = 0
if x >= 449:
x = 448
if y >= 449:
y = 448
screen.blit(background, (0,0))
#screen.blit(skeleton, (randx,randy))
for ball in ballGroup:
Ball = ball(screen, 64,64).update()
char().draw()
skeleton = pygame.transform.scale(skeleton, (64, 64))
background = pygame.transform.scale(background,(512,512))
pygame.display.update()
if left != 0:
x += 1
left -= 8
if right != 0:
x -= 1
right -= 8
if up != 0:
y -= 1
up -= 8
if down != 0:
y += 1
down -= 8
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_d:
#char = pygame.image.load('textures/char/charright1.png')
facing = 'right'
left += 512
if event.key == K_a:
facing = 'left'
#char = pygame.image.load('textures/char/charleft1.png')
right += 512
if event.key == K_s:
facing = 'down'
#char = pygame.image.load('textures/char/chardown1.png')
down += 512
if event.key == K_w:
facing = 'up'
#char = pygame.image.load('textures/char/charup1.png')
up += 512
if event.key == K_SPACE:
if facing == 'down':
dir = 'down'
if facing == 'up':
dir = 'up'
if facing == 'left':
dir = 'left'
if facing == 'right':
dir = 'right'
#ballx = x
#bally = y
#spacetimer = 500
#ballon = 1
ballGroup.append(ball)
if spacetimer != 0:
spacetimer -= 1
ballon = 1
else:
ballon = 0
while level == 0:
#title screen
titletime += 1
screen.blit(titlecard, (0,0))
pygame.display.update()
if selected == -1:
selected = 0
if selected == 0:
titlecard = pygame.image.load('textures/title/titlecard0.png')
if selected == 1:
titlecard = pygame.image.load('textures/title/titlecard1.png')
if selected == 2:
titlecard = pygame.image.load('textures/title/titlecard2.png')
if selected == 3:
selected = 2
if selected == 4:
selected = 5
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_w:
selected -=1
if event.key == K_s:
selected +=1
if event.key == K_RETURN:
if selected == 0:
level = 1
if selected == 1:
titlecard = pygame.image.load('textures/title/credits.png')
selected = 4
if selected == 2:
sys.exit()
if selected == 5:
selected = 1
pygame.display.update()
wenn Name == 'Haupt': main()