Main:
Code: Alles auswählen
import pygame
from hero import Hero
from wall import Wall
from vector2 import Vector2
pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()
game_objects = []
hero = Hero([10, 10])
wall = Wall([100, 100])
game_objects.append(hero)
game_objects.append(wall)
def update(events):
for event in events:
if event.type == pygame.QUIT:
done = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
hero.move.x = -hero.speed
if event.key == pygame.K_RIGHT:
hero.move.x = hero.speed
if event.key == pygame.K_UP:
hero.move.y = -hero.speed
if event.key == pygame.K_DOWN:
hero.move.y = hero.speed
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
hero.move.x = 0
if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
hero.move.y = 0
test_rect = pygame.Rect(hero.rect.left + hero.move.x, hero.rect.top + hero.move.y, hero.rect.width, hero.rect.height)
for game_object in game_objects:
if isinstance(game_object, Wall) and test_rect.colliderect(game_object.rect):
hero.move = Vector2(0, 0) #Why the HELL is this not working properly?!
game_object.update()
def draw(screen):
screen.fill((255, 255, 255))
for game_object in game_objects:
game_object.draw(screen)
pygame.display.update()
clock.tick(60)
done = False
while done == False:
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
done = True
update(events)
draw(screen)
pygame.quit()
Code: Alles auswählen
import pygame
class GameObject(pygame.sprite.Sprite):
def __init__(self, image_path, position):
super(GameObject, self).__init__()
self.visible = True
self.image = pygame.image.load(image_path).convert()
self.rect = self.image.get_rect()
self.rect.topleft = position
def update(self):
pass
def draw(self, screen):
pass
Code: Alles auswählen
import pygame
from gameobject import GameObject
class Wall(GameObject):
def __init__(self, position):
super(Wall, self).__init__("wall.png", position)
def update(self):
pass
def draw(self, screen):
if self.visible:
screen.blit(self.image, self.rect)
Code: Alles auswählen
import pygame
from gameobject import GameObject
from vector2 import Vector2
class Hero(GameObject):
def __init__(self, position):
super(Hero, self).__init__("hero.png", position)
self.health = 100
self.position = Vector2(position[0], position[1])
self.move = Vector2(0, 0)
self.speed = 4
def update(self):
self.position += self.move
self.rect.topleft = [self.position.x, self.position.y]
def draw(self, screen):
if self.visible:
screen.blit(self.image, self.rect)