Merge branch 'master' of github.com:lvl2/avocados

master
Steve Clement 2014-08-30 19:02:57 +02:00
commit 533edaf30a
5 changed files with 69 additions and 18 deletions

View File

@ -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):
"""

43
game.py
View File

@ -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

BIN
img/lawyer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -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)

27
lawyer.py Normal file
View File

@ -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 """