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()
Python Pygame Kollision einbauen
Hallo asaga,
kannst du bitte den Vollständigen Editor benutzen und dort deinen Code in [co de][/co de] Tags packen, denn so ist der nicht les- und verwendbar.
Im Editor gibt es dazu den Button </>.
Danke.
kannst du bitte den Vollständigen Editor benutzen und dort deinen Code in [co de][/co de] Tags packen, denn so ist der nicht les- und verwendbar.
Im Editor gibt es dazu den Button </>.
Danke.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
-
- User
- Beiträge: 10
- Registriert: Montag 3. Dezember 2018, 20:24
Zuerst einmal, wenn man eine Frage im Forum stellt, verwendet man die Codetags, denn dafür sind sie da , und ein bisschen den Code eingrenzen und nicht das ganze Programm sondern nur die wichtigen Stellen wäre auch hilfreich für die Leute, die deinen Code zum ersten Mal sehen... Ohne jetzt einen genaueren Blick auf deinen Code zu werfen, erkläre ich jetzt einfach die Idee:
Pygame hat eine Klasse namens "Rect", die einfach nur ein Rechteck darstellt mit Extrafunktionen. Erstellt wird es so:
Erstellt man 2 Rechtecke, kann man mit diesesm Script
herausfinden, ob die Rechtecke miteinander kollidieren.
Ich hoffe, das hilft dir bei deinem Projekt, ansonsten musst du deine Frage noch etwas präziser stellen
Pygame hat eine Klasse namens "Rect", die einfach nur ein Rechteck darstellt mit Extrafunktionen. Erstellt wird es so:
Code: Alles auswählen
rect = pygame.Rect(x, y, length, width)
Code: Alles auswählen
rect1 = pygame.Rect(x1, y1, length1, width1)
rect2 = pygame.Rect(x2, y2, length2, width2)
rect1.colliderect(rect2)
Ich hoffe, das hilft dir bei deinem Projekt, ansonsten musst du deine Frage noch etwas präziser stellen
-
- User
- Beiträge: 10
- Registriert: Montag 3. Dezember 2018, 20:24
Tipp:
Beim Durchschauen deines Programmes sind mir einige Probleme aufgefallen:
sollte in deiner while Schleife weiter vorne kommen, da in deiner Konstellation niemals ein Sprite angezeigt wird, weil du
direkt nachdem du
ausführst du alles Beige färbst...
Es reicht, wenn du pygame am Anfang einmal importierst , 3 mal sind zu viel des Guten..
Beim Durchschauen deines Programmes sind mir einige Probleme aufgefallen:
Code: Alles auswählen
screen.fill(BEIGE)
direkt nachdem du
Code: Alles auswählen
all_sprites.draw(screen)
Es reicht, wenn du pygame am Anfang einmal importierst , 3 mal sind zu viel des Guten..