Code: Alles auswählen
import pygame
pygame.init()
window = pygame.display.set_mode((800,600))
pygame.display.set_caption("Window")
class Player(object):
def __init__(self):
self.rect = pygame.Rect(400,300,50,50)
self.health = 100
def move(self,dx,dy):
if dx != 0:
self.move_single_axis(dx,0)
if dy != 0:
self.move_single_axis(0,dy)
def move_single_axis(self,dx,dy):
self.rect.x += dx
self.rect.y += dy
for block in blocklist:
if self.rect.colliderect(block.rect):
if dx > 0:
self.rect.right = block.rect.left
if dx < 0:
self.rect.left = block.rect.right
if dy > 0:
self.rect.bottom = block.rect.top
if dy < 0:
self.rect.top = block.rect.bottom
class Block(object):
def __init__(self,x,y):
self.x = x
self.y = y
self.rect = pygame.Rect(self.x,self.y,50,50)
def render(self,window):
pygame.draw.rect(window,(0,0,0),self.rect)
class Health:
def __init__(self):
self.health = pygame.Rect(100,100,10,100)
def render(self,window):
font = pygame.font.SysFont("arial",20)
str = font.render("Leben: {0}".format(player.health),True,(0,0,0))
window.blit(str,(10,10))
player = Player()
health = Health()
level1 = [
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
blocklist = []
for y in range(0,len(level1)):
for x in range(0,len(level1[y])):
if level1[y][x] == 1:
blocklist.append(Block(x*32,y*32))
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type==pygame.QUIT:
running = False
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
player.move(-5,0)
if key[pygame.K_RIGHT]:
player.move(+5,0)
if key[pygame.K_DOWN]:
player.move(0,+5)
if key[pygame.K_UP]:
player.move(0,-5)
window.fill((255,255,255))
health.render(window)
pygame.draw.rect(window,(0,0,0),player.rect)
for block in blocklist:
block.render(window)
clock.tick(60)
pygame.display.flip()
pygame.quit()