Files
test/test.py
Christian 04639f6778 Edited player class
Added lifes for players
Edited life decrease for player after it gets hit
2024-08-12 11:27:10 +02:00

156 lines
5.4 KiB
Python

import pygame
import GameObject
import Utils
import random
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()
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)
#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
while(gamestate):
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):
player1.move("left")
#print("links")
if(player1.keymap["right"] == True):
player1.move("right")
#print("rechts")
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()
#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)
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(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}")
#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
index = GameObject.Projectile.shots.index(projectiles)
del GameObject.Projectile.shots[index]
#TODO Add Gameover event
if(pygame.Rect.colliderect(projectile.rect, player2.rect)):
#print("Game-Over")
player2.lifes -= 1
index = GameObject.Projectile.shots.index(projectiles)
del GameObject.Projectile.shots[index]
#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]
player1.render(screen)
player2.render(screen)
rand = random.randint(0, 100)
for enemy in spawned_enemys:
enemy:GameObject.Enemy
if rand == 20:
enemy.move(5)
if rand == 50:
enemy.move(-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))
#if(mouse_pos <= (image.topleft+image.size) and mouse_pos >= image.topleft):
# print("HIIIIITTT!!!!")
clock.tick(60)
pygame.display.flip()