diff --git a/avocado.py b/avocado.py index f0e5710..6262365 100644 --- a/avocado.py +++ b/avocado.py @@ -3,27 +3,28 @@ import pygame import random + class Avocado: - def __init__(self, screensize, filename='avocado-01.jpg'): - self.screen_width, self.screen_height = screensize + def __init__(self, screen, filename='img/AvoCado_0.png'): + self.screen = screen + self.screen_width, self.screen_height = screen.get_size() self.x = random.randint(0, self.screen_width) self.y = 0 # change this to start somewhere above the screen self.w = 100 self.y = 100 self.i = pygame.image.load(filename).convert_alpha() - self.image = pygame.transform.scale(self.i, (20, 20)) + self.image = pygame.transform.scale(self.i, (30, 30)) self.pycard = self.image.get_rect() - self.pycard.x = random.randint(0, self.screen_width) - self.pycard.y = random.randint(20, 70) + self.init_pos() self.step_x = 10 self.step_y = 10 self.is_falling = True - def reset(self): + def init_pos(self): self.pycard.x = random.randint(0, self.screen_width) - self.pycard.y = random.randint(0, 50) + self.pycard.y = random.randint(20, 70) def collides(self, click): """ diff --git a/game.py b/game.py index 4bbd0c6..0cd5ace 100755 --- a/game.py +++ b/game.py @@ -5,27 +5,43 @@ Avocados and stuff import os, random import pygame -import avocado +import avocado, lawyer from pygame.locals import * from support.colors import * from interface import hud +def initialize_screen(): + displayInfo = pygame.display.Info() + zoom = 1.3 + + WIDTH = int(displayInfo.current_w / zoom) + HEIGHT = int(displayInfo.current_h / zoom) + return (WIDTH, HEIGHT) + def main(): pygame.init() pygame.display.set_caption('Pin the 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)) + # initialize_screen() won't work for dualscreen + #size = initialize_screen() + size = (800, 600) bg = BLACK - desired_fps = 5 - + desired_fps = 60 font = pygame.font.Font(None, 40) + + # I don't know, should we move this text out of the way? game_over = font.render('GAME OVER', 0, RED) - my_hud = hud.Hud((screen_width, screen_height)) + + # initialize the game canvas + screen = pygame.display.set_mode(size) + + # initialize the HUD class + my_hud = hud.Hud(size) + + # initialize our lawyer + fullegast = lawyer.Lawyer(screen) score = 0 time = 15 @@ -39,10 +55,14 @@ def main(): fps = clock.get_fps() screen.fill(bg) + # Let's add the lawyer + fullegast.blitme() + timeleft -= time_passed / 1000 timeleft = round(timeleft, 2) if timeleft <= 0: + screen_width, screen_height = size screen.blit(game_over, (screen_width/3, screen_height/2)) displaytime = 'Timed out!' else: @@ -56,20 +76,23 @@ def main(): if len(avocados) != level: avocados = [] for i in range(0, level): - a = avocado.Avocado((screen_width, screen_height)) + a = avocado.Avocado(screen) avocados.append(a) for a in avocados: if not a.move(): - a.reset() + a.init_pos() screen.blit(a.image, a.pycard) # Catch events for event in pygame.event.get(): + # Collision detection if event.type == MOUSEBUTTONDOWN: for avo in avocados: if avo.collides(pygame.mouse.get_pos()): score += 100 + + # Had enough of this? if event.type == pygame.QUIT: running = False diff --git a/img/lawyer.png b/img/lawyer.png new file mode 100644 index 0000000..55e2f64 Binary files /dev/null and b/img/lawyer.png differ diff --git a/interface/hud.py b/interface/hud.py index 99d2c0f..e8ac8a6 100644 --- a/interface/hud.py +++ b/interface/hud.py @@ -10,7 +10,7 @@ class 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)) + self.screen = pygame.Surface((self.screen_width, self.screen_height / 8)) def draw_hud(self, score, timeleft, fps): self.screen.fill(BLACK) diff --git a/lawyer.py b/lawyer.py new file mode 100644 index 0000000..a34624b --- /dev/null +++ b/lawyer.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +""" +A class that represents a lawyer +""" + +import os, pygame +from support import operations +from support.colors import * + +class Lawyer: + + def __init__(self, screen): + self.screen = screen + screen_width, screen_height = screen.get_size() + temp_image = pygame.image.load(os.path.join('img', 'lawyer.png')) + # WARNING!! FIXME Absolute sizes FIXME + self.image = pygame.transform.scale(temp_image, (200, 400)) + rect = self.image.get_rect() + self.pos = (screen_width - rect.w, screen_height - rect.h) + + def blitme(self): + """ Blit this object to the screen """ + operations.color_surface(self.image, WHITE) + self.screen.blit(self.image, self.pos) + + def announce(self): + """ Announces the color to pin """