123 lines
3.8 KiB
Python
123 lines
3.8 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((800,600))
|
|
|
|
clock = pygame.time.Clock()
|
|
|
|
image_enemy = Utils.load_image("Rastergrafik.png")
|
|
testimage = Utils.load_image("Rastergrafik.png")
|
|
|
|
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)
|
|
|
|
spawned_enemys = list()
|
|
|
|
|
|
i = 0
|
|
startpos_x = 0
|
|
for enemys in range(15):
|
|
spawned_enemys.append(GameObject.Enemy(F"Enemy-{i}", startpos_x,30,35,35, screen, testimage))
|
|
startpos_x += 50
|
|
i += 1
|
|
|
|
gamestate = True
|
|
pos_x = 50
|
|
pos_y = 50
|
|
|
|
while(gamestate):
|
|
|
|
screen.fill((255,255,255))
|
|
|
|
for event in pygame.event.get():
|
|
if(event.type == pygame.QUIT):
|
|
gamestate = False
|
|
player.handle_input(event)
|
|
|
|
if(player.keymap["left"] == True):
|
|
player.move("left")
|
|
#print("links")
|
|
if(player.keymap["right"] == True):
|
|
player.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]
|
|
|
|
player.firecontrol(screen)
|
|
|
|
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")
|
|
player.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")
|
|
|
|
#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]
|
|
|
|
player.render(screen)
|
|
|
|
rand = random.randint(0, 100)
|
|
for enemy in spawned_enemys:
|
|
enemy:GameObject.Enemy
|
|
|
|
if rand == 50:
|
|
enemy.fire(screen)
|
|
if rand == 20:
|
|
enemy.move(5)
|
|
if rand == 50:
|
|
enemy.move(-5)
|
|
enemy.shoot()
|
|
enemy.render(screen)
|
|
|
|
|
|
label1 = font1.render(F"Playerscore: {player.points}", True, (255,0,0))
|
|
screen.blit(label1, (500,500))
|
|
|
|
|
|
#if(mouse_pos <= (image.topleft+image.size) and mouse_pos >= image.topleft):
|
|
# print("HIIIIITTT!!!!")
|
|
|
|
clock.tick(60)
|
|
pygame.display.flip() |