Python Pygame Kollision einbauen
Verfasst: Freitag 16. August 2019, 15:51
Guten Tag miteinander
Ich komme mit der Kollision nicht so draus. Ich weiss nicht wie man was anordnen muss, dass es in Klassen auch funktioniert.
import pygame, sys, time
from pygame.locals import *
pygame.init()
FPS=30
fpsClock=pygame.time.Clock()
width=1650
height=825
DISPLAYSURF=pygame.display.set_mode((width,height),0,32)
pygame.display.set_caption('Animation')
background=pygame.image.load('bg.png')
UP='up'
LEFT='left'
RIGHT='right'
DOWN='down'
sprite=pygame.image.load('down.png')
spritex=831
spritey=150
# Regale
regal=pygame.image.load('regal.png')
regalx=831
regaly=100
regal1=pygame.image.load('regal.png')
regal1x=831
regal1y=200
regal2=pygame.image.load('regal.png')
regal2x=831
regal2y=235
regal3=pygame.image.load('regal.png')
regal3x=831
regal3y=335
regal4=pygame.image.load('regal.png')
regal4x=831
regal4y=370
regal5=pygame.image.load('regal.png')
regal5x=831
regal5y=470
regal6=pygame.image.load('regal.png')
regal6x=831
regal6y=505
regal7=pygame.image.load('regal.png')
regal7x=831
regal7y=605
regal8=pygame.image.load('regal.png')
regal8x=831
regal8y=640
regal9=pygame.image.load('regal.png')
regal9x=831
regal9y=765
palette=pygame.image.load('palettelang.png')
palettex=397
palettey=104
paket=pygame.image.load('paket.png')
paketx=890
pakety=106
lkw=pygame.image.load('lkw.png')
lkwx=25
lkwy=115
run = True
while run:
DISPLAYSURF.blit(background,(0,0))
DISPLAYSURF.blit(sprite,(spritex,spritey))
DISPLAYSURF.blit(regal,(regalx,regaly))
DISPLAYSURF.blit(regal1,(regal1x,regal1y))
DISPLAYSURF.blit(regal2,(regal2x,regal2y))
DISPLAYSURF.blit(regal3,(regal3x,regal3y))
DISPLAYSURF.blit(regal4,(regal4x,regal4y))
DISPLAYSURF.blit(regal5,(regal5x,regal5y))
DISPLAYSURF.blit(regal6,(regal6x,regal6y))
DISPLAYSURF.blit(regal7,(regal7x,regal7y))
DISPLAYSURF.blit(regal8,(regal8x,regal8y))
DISPLAYSURF.blit(regal9,(regal9x,regal9y))
DISPLAYSURF.blit(palette,(palettex,palettey))
DISPLAYSURF.blit(paket,(paketx,pakety))
DISPLAYSURF.blit(lkw,(lkwx,lkwy))
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_LEFT]:
spritex -= 3
sprite=pygame.image.load('left.png')
elif keys_pressed[pygame.K_RIGHT]:
spritex += 3
sprite=pygame.image.load('right.png')
elif keys_pressed[pygame.K_UP]:
spritey -= 3
sprite=pygame.image.load('up.png')
elif keys_pressed[pygame.K_DOWN]:
spritey += 3
sprite=pygame.image.load('down.png')
pygame.display.update()
fpsClock.tick(FPS)
Ich habe es irgendwie so versucht, aber da kommt nur ein screen fenster heraus
import pygame, sys, time
from pygame.locals import *
import pygame
import random
BEIGE = pygame.Color('beige')
WIDTH = 480
HEIGHT = 600
FPS = 60
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = player_img
self.rect = self.image.get_rect()
self.x=0
self.y=0
def update(self):
self.x_speed = self.y_speed = 0
keystate = pygame.key.get_pressed()
if keystate[pygame.K_LEFT]:
self.speedx = -3
if keystate[pygame.K_RIGHT]:
self.speedx = 3
if keystate[pygame.K_UP]:
self.speedx = -3
if keystate[pygame.K_DOWN]:
self.speedx = 3
class rock(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = rock_img
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH / 2
self.rect.bottom = HEIGHT - 10
self.x=0
self.y=0
class bock(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = bock_img
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH / 2
self.rect.bottom = HEIGHT - 10
self.x=0
self.y=0
player_img = pygame.image.load('standing.png')
rock_img = pygame.image.load('standing.png')
bock_img = pygame.image.load('standing.png')
all_sprites = pygame.sprite.Group()
bock = pygame.sprite.Group()
rock = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
run = True
while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
all_sprites.update()
all_sprites.draw(screen)
screen.fill(BEIGE)
pygame.display.flip()
pygame.quit()
Ich komme mit der Kollision nicht so draus. Ich weiss nicht wie man was anordnen muss, dass es in Klassen auch funktioniert.
import pygame, sys, time
from pygame.locals import *
pygame.init()
FPS=30
fpsClock=pygame.time.Clock()
width=1650
height=825
DISPLAYSURF=pygame.display.set_mode((width,height),0,32)
pygame.display.set_caption('Animation')
background=pygame.image.load('bg.png')
UP='up'
LEFT='left'
RIGHT='right'
DOWN='down'
sprite=pygame.image.load('down.png')
spritex=831
spritey=150
# Regale
regal=pygame.image.load('regal.png')
regalx=831
regaly=100
regal1=pygame.image.load('regal.png')
regal1x=831
regal1y=200
regal2=pygame.image.load('regal.png')
regal2x=831
regal2y=235
regal3=pygame.image.load('regal.png')
regal3x=831
regal3y=335
regal4=pygame.image.load('regal.png')
regal4x=831
regal4y=370
regal5=pygame.image.load('regal.png')
regal5x=831
regal5y=470
regal6=pygame.image.load('regal.png')
regal6x=831
regal6y=505
regal7=pygame.image.load('regal.png')
regal7x=831
regal7y=605
regal8=pygame.image.load('regal.png')
regal8x=831
regal8y=640
regal9=pygame.image.load('regal.png')
regal9x=831
regal9y=765
palette=pygame.image.load('palettelang.png')
palettex=397
palettey=104
paket=pygame.image.load('paket.png')
paketx=890
pakety=106
lkw=pygame.image.load('lkw.png')
lkwx=25
lkwy=115
run = True
while run:
DISPLAYSURF.blit(background,(0,0))
DISPLAYSURF.blit(sprite,(spritex,spritey))
DISPLAYSURF.blit(regal,(regalx,regaly))
DISPLAYSURF.blit(regal1,(regal1x,regal1y))
DISPLAYSURF.blit(regal2,(regal2x,regal2y))
DISPLAYSURF.blit(regal3,(regal3x,regal3y))
DISPLAYSURF.blit(regal4,(regal4x,regal4y))
DISPLAYSURF.blit(regal5,(regal5x,regal5y))
DISPLAYSURF.blit(regal6,(regal6x,regal6y))
DISPLAYSURF.blit(regal7,(regal7x,regal7y))
DISPLAYSURF.blit(regal8,(regal8x,regal8y))
DISPLAYSURF.blit(regal9,(regal9x,regal9y))
DISPLAYSURF.blit(palette,(palettex,palettey))
DISPLAYSURF.blit(paket,(paketx,pakety))
DISPLAYSURF.blit(lkw,(lkwx,lkwy))
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_LEFT]:
spritex -= 3
sprite=pygame.image.load('left.png')
elif keys_pressed[pygame.K_RIGHT]:
spritex += 3
sprite=pygame.image.load('right.png')
elif keys_pressed[pygame.K_UP]:
spritey -= 3
sprite=pygame.image.load('up.png')
elif keys_pressed[pygame.K_DOWN]:
spritey += 3
sprite=pygame.image.load('down.png')
pygame.display.update()
fpsClock.tick(FPS)
Ich habe es irgendwie so versucht, aber da kommt nur ein screen fenster heraus
import pygame, sys, time
from pygame.locals import *
import pygame
import random
BEIGE = pygame.Color('beige')
WIDTH = 480
HEIGHT = 600
FPS = 60
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = player_img
self.rect = self.image.get_rect()
self.x=0
self.y=0
def update(self):
self.x_speed = self.y_speed = 0
keystate = pygame.key.get_pressed()
if keystate[pygame.K_LEFT]:
self.speedx = -3
if keystate[pygame.K_RIGHT]:
self.speedx = 3
if keystate[pygame.K_UP]:
self.speedx = -3
if keystate[pygame.K_DOWN]:
self.speedx = 3
class rock(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = rock_img
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH / 2
self.rect.bottom = HEIGHT - 10
self.x=0
self.y=0
class bock(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = bock_img
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH / 2
self.rect.bottom = HEIGHT - 10
self.x=0
self.y=0
player_img = pygame.image.load('standing.png')
rock_img = pygame.image.load('standing.png')
bock_img = pygame.image.load('standing.png')
all_sprites = pygame.sprite.Group()
bock = pygame.sprite.Group()
rock = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
run = True
while run:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
all_sprites.update()
all_sprites.draw(screen)
screen.fill(BEIGE)
pygame.display.flip()
pygame.quit()