diff options
Diffstat (limited to 'Gambiarra/gambiarra.py')
-rw-r--r-- | Gambiarra/gambiarra.py | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/Gambiarra/gambiarra.py b/Gambiarra/gambiarra.py deleted file mode 100644 index 0daeee2..0000000 --- a/Gambiarra/gambiarra.py +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/env python -# -*- coding: UTF-8 -*- -# -# Copyright (C) 2007 by ULPM: Alexandre Yukio Harano -# Fábio Cassarotti Parronchi Navarro -# Gabriel Geraldo França Marcondes -# Luiz Carlos Irber Júnior -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -import sys -import os -import gtk -import pygame - -from Gambiarra.command import Play, Help, Quit -from Gambiarra.gamemenu import GameMenu -import Gambiarra.levels as Levels - -from Gambiarra.objects import Esteira, check_collision - -class Game(object): - # controle do jogo - fps = 30 - playing = None - running = None - clock = None - level = 0 - levels = [] - selected_element = None - _showed_help = None - count = None - play_sounds = None - - # elementos do jogo - screen = None - menu = None - congrats = None - congrats_snd = None - - def __init__(self, play_sounds=True): - self.play_sounds = play_sounds - self.running = True - self.playing = False - self._showed_help = False - self.count = 0 - - def load_all(self): - pygame.init() - if self.play_sounds: - pygame.mixer.init() - #self.screen = pygame.display.set_mode((1200, 900)) - self.screen = pygame.display.get_surface() - pygame.display.flip() - pygame.display.set_caption("Gambiarra") - self.clock = pygame.time.Clock() - self.levels = Levels.init_levels() - self.menu = GameMenu() - self.congrats = pygame.image.load(os.path.join("data","images", - "fim_fase.png")) - if self.play_sounds: - snd_file = os.path.join("data", "snd", "Congrats.wav") - self.congrats_snd = pygame.mixer.Sound(snd_file) - - def run(self): - self.load_all() - #inicia o loop - self.main_loop() - - def event_handler(self): - #GTK events - while gtk.events_pending(): - gtk.main_iteration() - for event in pygame.event.get(): - if event.type == pygame.MOUSEBUTTONDOWN: - self.mouse_event( pygame.mouse.get_pos() ) - - def update_screen(self, fps): - #update dos elementos da tela - if self.playing: - - # executa a simulacao - objs = check_collision(self.levels[self.level].simulator.objects, - self.levels[self.level].simulator.static_objs) - self.levels[self.level].simulator.objects = objs - for obj in self.levels[self.level].simulator.objects: - obj.update() - else: - if self.selected_element: - if self.selected_element.editable: - self.selected_element.rect.center = pygame.mouse.get_pos() - - def mouse_event(self, mouse_pos): - if not self.selected_element: - mouse_move = (0, 0) - mouse_move = pygame.mouse.get_rel() - - for element in self.levels[self.level].simulator.objects: - if element.rect.collidepoint(mouse_pos): - self.selected_element = element - break - - if not self.selected_element: - for element in self.levels[self.level].simulator.static_objs: - if element.rect.collidepoint(mouse_pos): - self.selected_element = element - - if isinstance(element, Esteira) and element.editable: - self.count += 1 - if self.count == 1: - element.sentido = -element.sentido - self.count = 0 - break - - if not self.selected_element: #se nao encontrou no for anterior - for element in self.levels[self.level].objbar.objects: - if element.rect.collidepoint(mouse_pos): - element.remove(self.levels[self.level].objbar.objects) - self.levels[self.level].simulator.add(element) - self.selected_element = element - break - - if not self.selected_element: #se nao encontrou no for anterior - for element in self.levels[self.level].cmdbar.commands: - if element.rect.collidepoint(mouse_pos): - if isinstance(element, Play): - element.image = pygame.transform.flip(element.image, - True, False) - self.playing = not self.playing - if not self.playing: - objs = self.levels[self.level].simulator.objects - for obj in objs: - obj.speed = [0, 0] - obj.rect.topleft = obj.initial_pos - elif isinstance(element, Help): - self.levels[self.level].show_help(self.screen) - elif isinstance(element, Quit): - sys.exit() - break - - else: - if self.selected_element.editable and not self.playing: - mouse_move = pygame.mouse.get_rel() - if mouse_move != (0, 0): - self.count -= 1 - self.selected_element.rect.center = pygame.mouse.get_pos() - new_pos = self.selected_element.rect.topleft - self.selected_element.initial_pos = new_pos - self.selected_element = None - - def show_congratulations(self): - if self.play_sounds: - pygame.mixer.stop() - self.congrats_snd.play() - - self.screen.blit(self.congrats, (600 - self.congrats.get_width()/2, - 450 - self.congrats.get_height()/2) ) - pygame.display.flip() - - while True: - #GTK events - while gtk.events_pending(): - gtk.main_iteration() - for event in pygame.event.get(): - if event.type == pygame.MOUSEBUTTONDOWN: - return - - def main_loop(self): - self.menu.run() - while self.running and self.level < len(self.levels): - while not self.levels[self.level].goal_reached(): - self.event_handler() - self.clock.tick(self.fps) - self.update_screen(self.fps) - self.levels[self.level].draw() - - if not self._showed_help: - self.levels[self.level].show_help(self.screen) - self._showed_help = True - - pygame.display.flip() - - self.playing = False - self._showed_help = False - self.level += 1 - self.show_congratulations() - if (len(self.levels) == self.level) : - self.running = False - |