From d7f76cc574cd4c8c00a13e6dac5efc10ffd4f604 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 10 Aug 2024 17:28:40 +0200 Subject: [PATCH] Added player2 --- GameObject.py | 32 ++++++++++++++++++++++---- test.py | 64 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 69 insertions(+), 27 deletions(-) diff --git a/GameObject.py b/GameObject.py index 844f052..d152a11 100644 --- a/GameObject.py +++ b/GameObject.py @@ -49,7 +49,6 @@ class Player(GameObject): elif(event.type == pygame.KEYUP and event.key == pygame.K_LEFT): self.keymap["left"] = False - if(event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT): self.keymap["right"] = True @@ -92,7 +91,30 @@ class Player(GameObject): #print(object.pos_x, " ", object.pos_y) pass - +class Player2(Player): + def __init__(self, name, screen, pos_x, pos_y, width, height, image=None) -> None: + super().__init__(name, screen, pos_x, pos_y, width, height, image) + + def handle_input(self, event:pygame.event.EventType): + if(event.type == pygame.KEYDOWN and event.key == pygame.K_a): + self.keymap["left"] = True + + elif(event.type == pygame.KEYUP and event.key == pygame.K_a): + self.keymap["left"] = False + + if(event.type == pygame.KEYDOWN and event.key == pygame.K_d): + self.keymap["right"] = True + + elif(event.type == pygame.KEYUP and event.key == pygame.K_d): + self.keymap["right"] = False + + if(event.type == pygame.KEYDOWN and event.key == pygame.K_t): + #Fiiirrreee in the hole + print("Feuer!") + self.fire(self.screen) + + + class Enemy(GameObject): shots_fired = list() @@ -128,7 +150,7 @@ class Projectile(GameObject): def animate(self, direction): - self.rect = pygame.draw.rect(self.screen, (0,0,0), (self.pos_x, self.pos_y, self.width, self.height)) + self.rect = pygame.draw.rect(self.screen, (190,4,21), (self.pos_x, self.pos_y, self.width, self.height)) if(direction == "UP"): self.pos_y -= self.speed if(direction == "DOWN"): @@ -137,4 +159,6 @@ class Projectile(GameObject): pass #print() - +class Item(GameObject): + def __init__(self, name, pos_x, pos_y, width, height, image=None) -> None: + super().__init__(name, pos_x, pos_y, width, height, image) \ No newline at end of file diff --git a/test.py b/test.py index e828798..ea6269c 100644 --- a/test.py +++ b/test.py @@ -9,7 +9,7 @@ pygame.init() pygame.display.set_caption("TESTFENSTER") pygame.mouse.set_visible(True) #pygame.key.set_repeat(1, 30) -screen = pygame.display.set_mode((800,600)) +screen = pygame.display.set_mode((1024,768)) clock = pygame.time.Clock() @@ -21,7 +21,9 @@ font1 = pygame.font.SysFont("Arial", 32) #testimage.set_colorkey((255,0,255), pygame.RLEACCELOK) enemy = GameObject.Enemy("Enemy-1", (screen.get_size()[0]/2) -30,30,35,35, screen, testimage) -player = GameObject.Player("Player", screen,(screen.get_size()[0]/2)-17, screen.get_size()[1]-100, 35, 35, testimage) +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) + spawned_enemys = list() @@ -39,21 +41,29 @@ pos_y = 50 while(gamestate): - screen.fill((255,255,255)) + screen.fill((8,31,61)) for event in pygame.event.get(): if(event.type == pygame.QUIT): gamestate = False - player.handle_input(event) + player1.handle_input(event) + player2.handle_input(event) - if(player.keymap["left"] == True): - player.move("left") + if(player1.keymap["left"] == True): + player1.move("left") #print("links") - if(player.keymap["right"] == True): - player.move("right") + if(player1.keymap["right"] == True): + player1.move("right") #print("rechts") - image = screen.blit(testimage, (pos_x, pos_y)) + if(player2.keymap["left"] == True): + player2.move("left") + #print("links") + if(player2.keymap["right"] == True): + player2.move("right") + #print("rechts") + + #image = screen.blit(testimage, (pos_x, pos_y)) mouse_pos = pygame.mouse.get_pos() @@ -61,16 +71,17 @@ while(gamestate): #print(image.topleft) #Gibt die Position einen Surfaces "obenlinks" aus #print(image.size) #Gibt die Größe eines Surfaces aus - max = tuple(map(lambda i, j : i+j, image.topleft, image.size)) + #max = tuple(map(lambda i, j : i+j, image.topleft, image.size)) #Wenn Mausposition X-Achse innerhalb Anfangsposition+Breite - if(mouse_pos[0] <= max[0] and mouse_pos[0] >= image.topleft[0]): + #if(mouse_pos[0] <= max[0] and mouse_pos[0] >= image.topleft[0]): #Wenn Mausposition Y-Achse innerhalb Anfangsposition+Höhe - if(mouse_pos[1] <= max[1] and mouse_pos[1] >= image.topleft[1]): - print("Treffer") - pos_x = mouse_pos[0] - pos_y = mouse_pos[1] + #if(mouse_pos[1] <= max[1] and mouse_pos[1] >= image.topleft[1]): + #print("Treffer") + #pos_x = mouse_pos[0] + #pos_y = mouse_pos[1] - player.firecontrol(screen) + player1.firecontrol(screen) + player2.firecontrol(screen) for projectiles in GameObject.Projectile.shots: projectiles:dict @@ -81,14 +92,20 @@ while(gamestate): enemy:GameObject.Enemy if(pygame.Rect.colliderect(projectile.rect, enemy.rect)): print("HIT") - player.points += 10 + player1.points += 10 + player2.points += 10 index = spawned_enemys.index(enemy) del spawned_enemys[index] index = GameObject.Projectile.shots.index(projectiles) del GameObject.Projectile.shots[index] - print(F"Player-Points: {player.points}") - if(pygame.Rect.colliderect(projectile.rect, player.rect)): - print("Game-OVer") + print(F"Player-Points: {player1.points}") + print(F"Player-Points: {player2.points}") + if(pygame.Rect.colliderect(projectile.rect, player1.rect)): + print("Game-Over") + #TODO Add Gameover event + if(pygame.Rect.colliderect(projectile.rect, player2.rect)): + print("Game-Over") + #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)): @@ -96,7 +113,8 @@ while(gamestate): index = GameObject.Projectile.shots.index(projectiles) del GameObject.Projectile.shots[index] - player.render(screen) + player1.render(screen) + player2.render(screen) rand = random.randint(0, 100) for enemy in spawned_enemys: @@ -112,8 +130,8 @@ while(gamestate): enemy.render(screen) - label1 = font1.render(F"Playerscore: {player.points}", True, (255,0,0)) - screen.blit(label1, (500,500)) + label1 = font1.render(F"Score: {player1.points}", True, (255,0,0)) + screen.blit(label1, ((screen.get_size()[0]/2)-(label1.get_size()[0]/2), screen.get_size()[1]-50)) #if(mouse_pos <= (image.topleft+image.size) and mouse_pos >= image.topleft):