From 2ab3d85c71ecf5d52bd07d4b2568d7ef463144f7 Mon Sep 17 00:00:00 2001 From: David Raison Date: Sat, 30 Aug 2014 16:28:56 +0200 Subject: [PATCH 1/3] Display game over when time is up --- game.py | 37 +++++++++++++++++++++++++------------ interface/hud.py | 2 +- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/game.py b/game.py index 764b5a3..82c8b52 100644 --- a/game.py +++ b/game.py @@ -7,30 +7,42 @@ import os, random import pygame from pygame.locals import * -from support import colors +from support.colors import * from interface import hud -# Move this outside -screen_width = 800 -screen_height = 600 -screen = pygame.display.set_mode((screen_width,screen_height)) -bg = (0,0,0) -screen.fill(bg) - def main(): pygame.init() pygame.display.set_caption('Avocados') clock = pygame.time.Clock() + + # Move this outside the main code? + screen_width = 800 + screen_height = 600 + screen = pygame.display.set_mode((screen_width,screen_height)) + bg = (0,0,0) + screen.fill(bg) + desired_fps = 60 + + font = pygame.font.Font(None, 40) + game_over = font.render('GAME OVER', 0, RED) + score = 0 - time = 33 + time = 10 running = True + timeleft = time while running: - # Limit to 50 fps - time_passed = clock.tick(30) + # Limit to XY fps + time_passed = clock.tick(desired_fps) + #time_since = clock.get_time() #Same as above fps = clock.get_fps() - my_hud = hud.draw_hud(score, time, fps) + timeleft -= time_passed / 1000 + timeleft = round(timeleft,2) + if timeleft <= 0: + screen.blit(game_over, (screen_width/3, screen_height/2)) + + my_hud = hud.draw_hud(score, timeleft, fps) screen.blit(my_hud, (10,10)) for event in pygame.event.get(): @@ -39,5 +51,6 @@ def main(): pygame.display.flip() + if __name__ == '__main__': main() diff --git a/interface/hud.py b/interface/hud.py index aaeb4fb..5928946 100644 --- a/interface/hud.py +++ b/interface/hud.py @@ -11,7 +11,7 @@ def draw_hud(score, timeleft, fps): # Adding items to the hud hud.blit(draw_score(font, score), (0, 0)) hud.blit(draw_timeleft(font, timeleft), (100, 0)) - hud.blit(draw_fps(font, fps), (150, 0)) + hud.blit(draw_fps(font, fps), (200, 0)) return hud def draw_score(font, score): From a8addce0f43f9037067859c7d0e636940990289a Mon Sep 17 00:00:00 2001 From: David Raison Date: Sat, 30 Aug 2014 16:53:03 +0200 Subject: [PATCH 2/3] use a class for the hud --- game.py | 15 ++++++++------- interface/hud.py | 38 +++++++++++++++++++++----------------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/game.py b/game.py index 82c8b52..58a5e68 100644 --- a/game.py +++ b/game.py @@ -19,31 +19,32 @@ def main(): screen_width = 800 screen_height = 600 screen = pygame.display.set_mode((screen_width,screen_height)) - bg = (0,0,0) - screen.fill(bg) + bg = BLACK desired_fps = 60 font = pygame.font.Font(None, 40) game_over = font.render('GAME OVER', 0, RED) + my_hud = hud.Hud((screen_width, screen_height)) score = 0 - time = 10 + time = 15 running = True timeleft = time while running: - # Limit to XY fps time_passed = clock.tick(desired_fps) - #time_since = clock.get_time() #Same as above fps = clock.get_fps() + screen.fill(bg) + timeleft -= time_passed / 1000 timeleft = round(timeleft,2) + if timeleft <= 0: screen.blit(game_over, (screen_width/3, screen_height/2)) - my_hud = hud.draw_hud(score, timeleft, fps) - screen.blit(my_hud, (10,10)) + chud = my_hud.draw_hud(score, timeleft, round(fps,2)) + screen.blit(chud, (10,10)) for event in pygame.event.get(): if event.type == pygame.QUIT: diff --git a/interface/hud.py b/interface/hud.py index 5928946..ba060fa 100644 --- a/interface/hud.py +++ b/interface/hud.py @@ -4,24 +4,28 @@ import pygame from pygame.locals import * from support.colors import * -def draw_hud(score, timeleft, fps): - hud = pygame.Surface((800, 100)) - font = pygame.font.Font(None, 30) +class Hud: - # Adding items to the hud - hud.blit(draw_score(font, score), (0, 0)) - hud.blit(draw_timeleft(font, timeleft), (100, 0)) - hud.blit(draw_fps(font, fps), (200, 0)) - return hud + def __init__(self, screensize): + self.screen_width, self.screen_height = screensize + self.font = pygame.font.Font(None, 30) + self.screen = pygame.Surface((self.screen_width, self.screen_height / 6)) -def draw_score(font, score): - score = font.render('Score: ' + str(score), 0, WHITE) - return score + def draw_hud(self, score, timeleft, fps): + self.screen.fill(BLACK) + self.screen.blit(self.draw_score(score), (0, 0)) + self.screen.blit(self.draw_timeleft(timeleft), (100, 0)) + self.screen.blit(self.draw_fps(fps), (650, 0)) + return self.screen -def draw_timeleft(font, time): - # Add a clock icon here (maybe egg-clock) - time = font.render(str(time), 1, WHITE) - return time + def draw_score(self, score): + score = self.font.render('Score: ' + str(score), 0, WHITE) + return score -def draw_fps(font, fps): - return font.render('fps: ' + str(fps), 10, RED) + def draw_timeleft(self, time): + # Add a clock icon here (maybe egg-clock) + time = self.font.render(str(time), 1, WHITE) + return time + + def draw_fps(self, fps): + return self.font.render('fps: ' + str(fps), 10, RED) From fe44b1d6285606814a4c1ea6f4851ff804d40393 Mon Sep 17 00:00:00 2001 From: David Raison Date: Sat, 30 Aug 2014 17:05:01 +0200 Subject: [PATCH 3/3] Increase score simply on clicking for now --- game.py | 14 ++++++++++---- interface/hud.py | 6 ++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/game.py b/game.py index 58a5e68..c775b22 100644 --- a/game.py +++ b/game.py @@ -12,7 +12,7 @@ from interface import hud def main(): pygame.init() - pygame.display.set_caption('Avocados') + pygame.display.set_caption('Pin the Avocados!') clock = pygame.time.Clock() # Move this outside the main code? @@ -34,19 +34,25 @@ def main(): while running: time_passed = clock.tick(desired_fps) fps = clock.get_fps() - screen.fill(bg) timeleft -= time_passed / 1000 - timeleft = round(timeleft,2) + timeleft = round(timeleft, 2) if timeleft <= 0: screen.blit(game_over, (screen_width/3, screen_height/2)) + displaytime = 'Timed out!' + else: + displaytime = timeleft - chud = my_hud.draw_hud(score, timeleft, round(fps,2)) + # Redraw the HUD + chud = my_hud.draw_hud(score, displaytime, round(fps,2)) screen.blit(chud, (10,10)) + # Catch events for event in pygame.event.get(): + if event.type == MOUSEBUTTONDOWN: + score += 100 if event.type == pygame.QUIT: running = False diff --git a/interface/hud.py b/interface/hud.py index ba060fa..cd01e60 100644 --- a/interface/hud.py +++ b/interface/hud.py @@ -14,8 +14,10 @@ class Hud: def draw_hud(self, score, timeleft, fps): self.screen.fill(BLACK) self.screen.blit(self.draw_score(score), (0, 0)) - self.screen.blit(self.draw_timeleft(timeleft), (100, 0)) - self.screen.blit(self.draw_fps(fps), (650, 0)) + self.screen.blit(self.draw_timeleft(timeleft), (self.screen_width / 2, 0)) + thefps = self.draw_fps(fps) + fps_rect = thefps.get_rect() + self.screen.blit(thefps, (self.screen_width - fps_rect.w, 0)) return self.screen def draw_score(self, score):