Pygame kollisionen
Verfasst: Dienstag 17. März 2020, 16:56
Hallo ich versuche ein spiel zu programmieren, aber scheitere bei der Kollision eines Stachels und dem Spieler.
Wenn ihr die Bilder dazu braucht kann ich einen Drive Link schicken, aber ich hoffe dass ihr mir anhand des Codes helfen könnt.
Liebe Grüsse Fire Spike
Wenn ihr die Bilder dazu braucht kann ich einen Drive Link schicken, aber ich hoffe dass ihr mir anhand des Codes helfen könnt.
Liebe Grüsse Fire Spike
Code: Alles auswählen
import sys
import pygame
import random
import time
WINDOW_TITLE = "Game" #Title of window
WHITE = (255, 255, 255) #White in RGB
FPS = 60 #Frames per second
screenx = 800 #x coordinates of the window
screeny = 1600 #y coordinates of the window
spikex = 816
spikey = 1056
playerx = 700 #x coordinates of the player
icon_paths = {
"small" : "./Images/Icons/Icon_small.png", #71x71
"medium" : "./Images/Icons/Icon_medium", #107x107
"large" : "./Images/Icons/Icon_large" #142x142
}
pygame.init()
screen = pygame.display.set_mode((screeny, screenx))
pygame.display.set_caption(WINDOW_TITLE)
screen.fill(WHITE)
clock = pygame.time.Clock()
spikes = [] # List of all Spikes
del_queue = [] #Queue for spikes to be deleted
last_time = time.time()
class Spike():
def __init__(self):
self.step = 20
self.playerx = 0 #- spikex
self.playery = random.randrange(0, 1600)
def down(self):
self.playerx += self.step
pygame.draw.polygon(
screen,
(255, 0, 0),
(
(self.playery, self.playerx),
(self.playery + 100, self.playerx),
(self.playery + 50, self.playerx + 100)
)
)
class Cube():
def __init__(self, playery):
self.step = 10
self.playery = playery
self.playericon = pygame.image.load(icon_paths["small"])
def left(self):
self.playery -= self.step
self.update()
def right(self):
self.playery += self.step
self.update()
def update(self):
screen.blit(self.playericon, (self.playery, playerx))
player = Cube(650)
while True:
screen.fill(WHITE)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
sys.exit()
if pygame.key.get_pressed()[pygame.K_RIGHT]:
player.right()
if pygame.key.get_pressed()[pygame.K_LEFT]:
player.left()
if time.time() - last_time > 0.1:
spikes.append(Spike())
last_time = time.time()
for i in range(len(spikes)):
spikes[i].down()
if spikes[i].playerx > 800:
del_queue.append(i)
counter = 0
for i in del_queue:
del spikes[i-counter]
counter += 1
del_queue = []
player.update()
pygame.display.flip()
clock.tick(FPS)