Objekt wird in 2 gespalten (PyGame)
Verfasst: Sonntag 16. Dezember 2007, 18:40
Hallo liebe Community,
ich poste erst den Code, dann folgt eine ausführliche Problembeschrteibung:
Also, es öffnet sich ein fenster, und der Spieler wie auch der Gegner stehen in der linken oberen Ecke. Das ist der erste Fehler, da der Gegner eigentlich in der Mitte stehen müsste. Inzwischen fand ich heraus, dass das daran liegt, dass der Hintergrund den gegner überdeckt. Nimmt man aber das blitten des Hintergrundes aus der endlosschleife heraus, so radieren die Spielfiguren ihn beim Bewegen weg. Und warum wird der Gegner an zwei verschiedenen Stellen auf einmal angezeigt? Das komische ist, dass sich nur das Bild von ihm das am Anfang in der Ecke steht, bewegen lässt.
ich poste erst den Code, dann folgt eine ausführliche Problembeschrteibung:
Code: Alles auswählen
import pygame, os, sys
from pygame.locals import*
pygame.init()landschaft = pygame.image.load('Soil01.bmp')
hintergrund = pygame.transform.scale(landschaft, (900, 700))
karte = hintergrund.get_rect()
spieler = pygame.image.load('Hopsy.bmp')
player = spieler.get_rect()
black = 0, 0, 0
size = width, height = 900,700
screen = pygame.display.set_mode(size)
screen.fill(black)
gegner1 = pygame.image.load('Kunst.jpg')
gegner1_rect = gegner1.get_rect()
move_up = False
move_down = False
move_right = False
move_left = False
stehen = True
munition = 5
screen.blit(gegner1, (350, 450))
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
if event.key == K_w:
move_down = False
move_right = False
move_left = False
move_up = True
stehen = False
if event.key == K_s:
move_up = False
move_right = False
move_left = False
move_down = True
stehen = False
if event.key == K_a:
move_down = False
move_up = False
move_right = False
move_left = True
stehen = False
if event.key == K_d:
move_down = False
move_up = False
move_left =False
move_right = True
stehen = False
if event.key == K_SPACE:
move_up = False
move_down = False
move_right = False
move_left = False
stehen = True
if event.key == K_f:
if stehen == True:
munition = 5
if move_up:
player = player.move(0, -1)
gegner1_rect = gegner1_rect.move(0, 1)
if move_down:
player = player.move(0, 1)
gegner1_rect = gegner1_rect.move(0, -1)
if move_right:
player = player.move(1, 0)
gegner1_rect = gegner1_rect.move(-1, 0)
if move_left:
player = player.move(-1, 0)
gegner1_rect = gegner1_rect.move(1, 0)
if event.type == MOUSEBUTTONDOWN:
isplaying = pygame.mixer.music.get_busy()
if isplaying == False:
if stehen == True:
if munition > 0:
pygame.mixer.music.load('shot1.wav')
pygame.mixer.music.play()
munition = munition - 1
screen.blit(spieler, player)
screen.blit(gegner1, gegner1_rect)
pygame.display.flip()