diff --git a/GameObject.py b/GameObject.py index ebd006f..878fdac 100644 --- a/GameObject.py +++ b/GameObject.py @@ -1,5 +1,5 @@ import pygame - +import interface #Statics spawned_enemys = list() @@ -25,7 +25,7 @@ class GameObject(object): def render(self, screen:pygame.Surface): if(self.image is not None): - self.rect = screen.blit(self.image, (self.pos_x, self.pos_y)) + self.rect = screen.blit(self.image, (self.pos_x, self.pos_y, self.width, self.height)) else: self.rect = pygame.draw.rect(screen, (255,0,0), (self.pos_x, self.pos_y, self.width, self.height)) return @@ -47,7 +47,8 @@ class Player(GameObject): self._health = 100 self.lifes = 2 self.kills = 0 - self._healthbar = pygame.rect.Rect((15, self.screen.get_size()[1]-50, 100, 20)) + #self._healthbar = pygame.rect.Rect((15, self.screen.get_size()[1]-50, 100, 20)) + self.healthbar = interface.Healthbar(screen, "Player1", 25, screen.get_size()[1]-80, 300, 10, self.get_health()) def handle_input(self, event:pygame.event.EventType): if(event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT): @@ -90,6 +91,10 @@ class Player(GameObject): if(direction == "right"): self.pos_x += self._speed + def update_interface(self): + self.healthbar.update(self._health) + self.healthbar.render(self.screen) + def fire(self, screen): projectile_width = 6 projectile_height = 10 @@ -110,6 +115,7 @@ class Player(GameObject): def get_health(self): return self._health + class Player2(Player): def __init__(self, name, screen, pos_x, pos_y, width, height, image=None) -> None: @@ -210,6 +216,7 @@ class Weapons(GameObject): self.duration = duration self.sprite = "" self.mountingpos = list() + self.soundfile = "" def fire(self): print(F"Feuere: {self.name}") diff --git a/Utils.py b/Utils.py index c3abcbf..bb9c4fa 100644 --- a/Utils.py +++ b/Utils.py @@ -17,6 +17,6 @@ def load_image(filename, colorkey=None): if colorkey is not None: if colorkey is -1: colorkey = image.get_at((0,0)) - image.set_colorkey(colorkey, pygame.RLEACCEL) + image.set_colorkey(colorkey) return image \ No newline at end of file diff --git a/game.py b/game.py index a468cb2..aa49492 100644 --- a/game.py +++ b/game.py @@ -46,6 +46,10 @@ def item_handler(screen:pygame.Surface): item.move(0, item.speed) item.render(screen) +def handle_playerinput(players): + for player in players(): + pass + def spawn_item_random(screen:pygame.Surface): items_spawned.append(copy.deepcopy(items[0])) diff --git a/sprites/Zeichnung.svg b/sprites/Zeichnung.svg new file mode 100644 index 0000000..21debaf --- /dev/null +++ b/sprites/Zeichnung.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + diff --git a/sprites/backgorund1.svg b/sprites/backgorund1.svg new file mode 100644 index 0000000..86e922f --- /dev/null +++ b/sprites/backgorund1.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + diff --git a/sprites/just_fun.svg b/sprites/just_fun.svg new file mode 100644 index 0000000..2b8ba98 --- /dev/null +++ b/sprites/just_fun.svg @@ -0,0 +1,411 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sprites/spaceship_1.png b/sprites/spaceship_1.png new file mode 100644 index 0000000..f84c0e0 Binary files /dev/null and b/sprites/spaceship_1.png differ diff --git a/sprites/spaceship_1.svg b/sprites/spaceship_1.svg new file mode 100644 index 0000000..d6f31e3 --- /dev/null +++ b/sprites/spaceship_1.svg @@ -0,0 +1,406 @@ + + + + diff --git a/sprites/spaceship_1_transp.png b/sprites/spaceship_1_transp.png new file mode 100644 index 0000000..6055955 Binary files /dev/null and b/sprites/spaceship_1_transp.png differ diff --git a/test.py b/test.py index 0170417..4c6ff02 100644 --- a/test.py +++ b/test.py @@ -35,6 +35,7 @@ log.writeln("Loading images...") image_enemy = Utils.load_image("Rastergrafik.png") testimage = Utils.load_image("Rastergrafik.png") +spaceship = Utils.load_image("sprites/spaceship_1_transp.png", (255,0,255)) log.writeln("Setup fonts...") font1 = pygame.font.Font("/usr/share/fonts/TTF/Inconsolata-UltraExpandedExtraBold.ttf", 30) @@ -47,10 +48,14 @@ log.writeln(F"Git-Hash: {short_hash}") #testimage.set_colorkey((255,0,255), pygame.RLEACCELOK) -player1 = GameObject.Player("Player", screen,(screen.get_size()[0]/2)-17, screen.get_size()[1]-100, 35, 35, testimage) -player2 = GameObject.Player2("Player2", screen,(screen.get_size()[0]/2)-17, screen.get_size()[1]-100, 35, 35, testimage) +players = [ + GameObject.Player("Player", screen,(screen.get_size()[0]/2)-17, screen.get_size()[1]-175, 60, 60, spaceship), + #GameObject.Player2("Player2", screen,(screen.get_size()[0]/2)-17, screen.get_size()[1]-175, 60, 60, spaceship) +] + +player1 = GameObject.Player("Player", screen,(screen.get_size()[0]/2)-17, screen.get_size()[1]-175, 60, 60, spaceship) +player2 = GameObject.Player2("Player2", screen,(screen.get_size()[0]/2)-17, screen.get_size()[1]-175, 60, 60, spaceship) -healthbar1 = interface.Healthbar(screen, "Player1", 25, screen.get_size()[1]-80, 300, 10, player1.get_health()) game.loadlevels() @@ -97,25 +102,26 @@ while(gamestate): #Push F9 for window-mode if(event.type == pygame.KEYDOWN and event.key == pygame.K_F9): pygame.display.set_mode((RENDERING_SIZE)) - player1.handle_input(event) - player2.handle_input(event) + + for player in players: + player:GameObject.Player + player.handle_input(event) + + for player in players: + player:GameObject.Player + if(player.keymap["left"] == True and player.pos_x > 0): + player.move("left") + #print("links") + if(player.keymap["right"] == True and player.pos_x <= (screen.get_size()[0]-player.width)): + player.move("right") + + player.update_interface() + player.render(screen) + - if(player1.keymap["left"] == True and player1.pos_x > 0): - player1.move("left") - #print("links") - if(player1.keymap["right"] == True and player1.pos_x <= (screen.get_size()[0]-player1.width)): - player1.move("right") - #print("rechts") - if(player2.keymap["left"] == True and player2.pos_x > 0): - player2.move("left") - #print("links") - if(player2.keymap["right"] == True and player2.pos_x <= (screen.get_size()[0]-player2.width)): - player2.move("right") - #print("rechts") game.run(screen) - healthbar1.update(player1.get_health()) - healthbar1.render(screen) + player1.firecontrol(screen) player2.firecontrol(screen) @@ -129,12 +135,7 @@ while(gamestate): #Check if player hits an enemy delete it for enemy in spawned_enemys: enemy:GameObject.Enemy - if(pygame.Rect.colliderect(player1.rect, player2.rect)): - #TODO: Laterrr!! - #print("Collision") - pass if(pygame.Rect.colliderect(projectile.rect, enemy.rect)): - #print("HIT") #Check if only a playerhit despawn enemys if(projectile.name == "Player" or projectile.name == "Player2"): player1.points += 10 @@ -153,25 +154,18 @@ while(gamestate): #TODO Buggy pygame colliderect is true until projectile passed the hole playrect # Life decrease only once! - if(pygame.Rect.colliderect(projectile.rect, player1.rect)): - #print("Game-Over") - player1.get_damage(enemy.get_weapon().damage) - try: - index = GameObject.Projectile.shots.index(projectiles) - del GameObject.Projectile.shots[index] - except: - print("Error on indexing projectile") - #TODO Add Gameover event - if(pygame.Rect.colliderect(projectile.rect, player2.rect)): - #print("Game-Over") - player1.get_damage(enemy.get_weapon().damage) - try: - index = GameObject.Projectile.shots.index(projectiles) - del GameObject.Projectile.shots[index] - except: - print("Error on indexing projectile") - #TODO Add Gameover event - + for player in players: + player:GameObject.Player + if(pygame.Rect.colliderect(projectile.rect, player.rect)): + #print("Game-Over") + player.get_damage(enemy.get_weapon().damage) + try: + index = GameObject.Projectile.shots.index(projectiles) + del GameObject.Projectile.shots[index] + except: + print("Error on indexing projectile") + #TODO Add Gameover event + #Check for bullets out of playground and delete it if((projectile.pos_y > screen.get_size()[1]) or (projectile.pos_y < 0)): #print(F"Lösche: {projectile}") @@ -181,11 +175,8 @@ while(gamestate): milliseconds = pygame.time.get_ticks() seconds = milliseconds / 1000 now = time.time_ns() - - player1.render(screen) - player2.render(screen) - rand = random.randint(0, 100) + for enemy in spawned_enemys: enemy:GameObject.Enemy if rand == 20: