import pygame import GameObject import Utils import time import random import subprocess pygame.init() pygame.display.set_caption("TESTFENSTER") pygame.mouse.set_visible(True) #pygame.key.set_repeat(1, 30) screen = pygame.display.set_mode((1024,768)) #TODO Add fullscreen mode clock = pygame.time.Clock() WEISS = (255,255,255) SCHWARZ = (0,0,0) GRUEN = (0,255,0) ROT = (255,0,0) image_enemy = Utils.load_image("Rastergrafik.png") testimage = Utils.load_image("Rastergrafik.png") font1 = pygame.font.Font("/usr/share/fonts/TTF/Inconsolata-UltraExpandedExtraBold.ttf", 30) font2 = pygame.font.Font("/usr/share/fonts/TTF/Inconsolata-UltraExpandedExtraBold.ttf", 12) short_hash = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).decode('ascii').strip() hash_label = font2.render(F"git-hash: {short_hash}", 1, ROT) #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) spawned_enemys = list() i = 0 startpos_x = 50 startpos_y = 30 for enemys in range(80): tmp = GameObject.Enemy(F"Enemy-{i}", startpos_x,startpos_y,35,35, screen, testimage) if(startpos_x >= (screen.get_size()[0]-150)): startpos_y += 50 startpos_x = 0 spawned_enemys.append(tmp) startpos_x += 50 i += 1 gamestate = True frametime =0 milliseconds = pygame.time.get_ticks() seconds = milliseconds/1000 while(gamestate): frametime = clock.get_time() screen.fill((8,31,61)) for event in pygame.event.get(): if(event.type == pygame.QUIT): gamestate = False player1.handle_input(event) player2.handle_input(event) 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") #image = screen.blit(testimage, (pos_x, pos_y)) mouse_pos = pygame.mouse.get_pos() #print(mouse_pos) #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)) #Wenn Mausposition X-Achse innerhalb Anfangsposition+Breite #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] player1.firecontrol(screen) player2.firecontrol(screen) print("Spieler1 Lifes: ", player1.lifes) print("Spieler2 Lifes: ", player2.lifes) #TODO If Playerposition are on the same x-axis then gamble hit by 50% chance for projectiles in GameObject.Projectile.shots: projectiles:dict for key, projectile in projectiles.items(): projectile:GameObject.Projectile #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 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: {player1.points}") print(F"Player-Points: {player2.points}") if(projectile.name == "Player"): player1.kills += 1 if(projectile.name == "Player2"): player2.kills += 1 #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.lifes -= 1 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") player2.lifes -= 1 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}") index = GameObject.Projectile.shots.index(projectiles) del GameObject.Projectile.shots[index] milliseconds = pygame.time.get_ticks() seconds = milliseconds / 1000 now = time.time_ns() print("Playerkills 1:", player1.kills) print("Playerkills 2:", player2.kills) player1.render(screen) player2.render(screen) print(int(seconds)) rand = random.randint(0, 100) for enemy in spawned_enemys: enemy:GameObject.Enemy if rand == 20: enemy.move(5) #enemy.movementqueue.append(5) if rand == 50: enemy.move(-5) #enemy.movementqueue.append(-5) rand1 = random.randint(0, 1000) if rand1 == 50: enemy.fire(screen) enemy.render(screen) enemy.firecontrol(screen) 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)) screen.blit(hash_label, (25, screen.get_size()[1] -25)) #if(mouse_pos <= (image.topleft+image.size) and mouse_pos >= image.topleft): # print("HIIIIITTT!!!!") frametime = 0 clock.tick(60) pygame.display.flip()