From ca7d32cb3e4c1ba1946133418aa98486732b3921 Mon Sep 17 00:00:00 2001 From: Arthur 'Grizzly' Grisel-Davy Date: Wed, 6 May 2020 19:41:34 -0400 Subject: [PATCH] Add pause screen as transp overlay --- config.yaml | 10 +++++++++- main.py | 44 +++++++++++++++++++++++++++++++++----------- models.py | 23 +++++++++++++---------- 3 files changed, 55 insertions(+), 22 deletions(-) diff --git a/config.yaml b/config.yaml index 5b6c6e0..bc62a55 100644 --- a/config.yaml +++ b/config.yaml @@ -12,4 +12,12 @@ acceleration : 2 deceleration : 1.1 # Projectile -max_fire_rate : 10 \ No newline at end of file +max_fire_rate : 10 + +# Controls (not used yet) +up : z +right : d +down : s +left : q +fire : +pause : escape \ No newline at end of file diff --git a/main.py b/main.py index 93d0cea..59b5bfd 100644 --- a/main.py +++ b/main.py @@ -4,6 +4,7 @@ ### Author: Arthur 'Grizzly' Grisel-Davy import pygame +import yaml from models import Game, Player, Carte, Camera, Enemy, Hud @@ -14,7 +15,6 @@ screen_width = 1200 screen_height = 800 center_screen = (int(screen_width/2),int(screen_height/2)) screen = pygame.display.set_mode((screen_width, screen_height)) -done = False BACKGROUND=(200,200,200) @@ -22,9 +22,22 @@ WHITE=(255,255,255) BLUE=(0,0,255) RED=(255,0,0) +# with open(r'./config.yaml') as file: +# data = yaml.load(file,Loader=yaml.FullLoader) +# up = pygame.key.key_code(data['up']) +# right = pygame.key.key_code(data['right']) +# down = pygame.key.key_code(data['down']) +# left = pygame.key.key_code(data['left']) +# pause = pygame.key.key_code(data['pause']) +# print(up,right,down,left,pause) + + +pause_screen = pygame.Surface((screen_width,screen_height)) +pause_screen.set_alpha(128) +pause_screen.fill((255,255,255)) + + carte = Carte(n=5) -# possible positions: 300,300: 1400,1000: 2700,400, 2800,1600 -# click = 323 start_pos = carte.player_start_pos player = Player('Alice',start_pos,center_screen,pygame.K_z,pygame.K_s,pygame.K_q,pygame.K_d,323,'perso.png','canon.png','projectile1_right.png') camera = Camera(start_pos,screen_width,screen_height,0.3) @@ -34,21 +47,30 @@ game = Game(carte,player,camera,[],hud) clock = pygame.time.Clock() +done = False while not done: - for event in pygame.event.get(): - if event.type == pygame.QUIT: - done = True + for event in pygame.event.get(): + if event.type == pygame.QUIT: + done = True - keystate = pygame.key.get_pressed() + pygame.mouse.get_pressed() + keystate = pygame.key.get_pressed() + pygame.mouse.get_pressed() + if keystate[pygame.K_ESCAPE]: + game.pause = not game.pause + + if not game.pause: player.check_keys(keystate,screen_width,screen_height,carte,camera) + + screen.fill(BACKGROUND) + game.draw(screen) - screen.fill(BACKGROUND) - game.draw(screen) - pygame.display.flip() + if game.pause: + screen.blit(pause_screen, (0,0)) + + pygame.display.flip() - clock.tick(60) + clock.tick(60) \ No newline at end of file diff --git a/models.py b/models.py index 8149413..d073f98 100644 --- a/models.py +++ b/models.py @@ -24,6 +24,7 @@ with open(r'./config.yaml') as file: class Game(): def __init__(self,carte,player,camera,enemies,hud): + self.pause = False self.carte = carte self.player = player self.camera = camera @@ -38,7 +39,8 @@ class Game(): to_remove = [] for k,proj in enumerate(self.player.projectiles): if not proj.is_out(self.carte,self): - proj.move() + if not self.pause: + proj.move() proj.draw(surface,self.camera) else: to_remove.append(k) @@ -49,7 +51,7 @@ class Game(): for enemy in self.enemies: enemy.draw(surface,self.camera) - self.player.draw(surface,self.camera) + self.player.draw(surface,self.camera,self) self.camera.draw(surface) self.hud.draw(surface) @@ -234,7 +236,7 @@ class Player(): self.fire('bullet','asset/projectile') - def draw(self,surface,camera): + def draw(self,surface,camera,game): #Get offset and compute player position in screen offsetx,offsety = camera.get_offset() @@ -242,13 +244,14 @@ class Player(): posy_screen = self.posy-offsety #Calculate canon rotation: - x_mouse, y_mouse = pygame.mouse.get_pos() - if x_mouse==posx_screen: - x_mouse+=0.1 - self.degres_canon = -1*degrees(atan((y_mouse-posy_screen)/(x_mouse-posx_screen))) - if x_mouse < posx_screen: - self.degres_canon = 180+self.degres_canon - self.canon = pygame.transform.rotate(self.img_canon,self.degres_canon) + if not game.pause: + x_mouse, y_mouse = pygame.mouse.get_pos() + if x_mouse==posx_screen: + x_mouse+=0.1 + self.degres_canon = -1*degrees(atan((y_mouse-posy_screen)/(x_mouse-posx_screen))) + if x_mouse < posx_screen: + self.degres_canon = 180+self.degres_canon + self.canon = pygame.transform.rotate(self.img_canon,self.degres_canon) # Get rects self.rect = self.player.get_rect()