#!/usr/bin/python # -*- coding: iso-8859-15 -*- import pygame import usmpgames from player import * from tracktmx import * from score import * from resources import * from gettext import gettext as _ class CollectGame(usmpgames.ApplicationState): def __init__(self, game_mode, next_state = None, background = None, next_cookie = None): usmpgames.ApplicationState.__init__(self, next_state, background, next_cookie) self.game_mode = game_mode self.font = pygame.font.SysFont(None, 80) def entering_state(self, fromStack, cookie): usmpgames.ApplicationState.entering_state(self, fromStack, cookie) self.game_mode = cookie if (not fromStack) : self.track = Track() self.player = Player(self.game_mode) self.score = Score(self.player) #music_background.play(-1) def exiting_state(self, fromStack): #music_background.stop() self.next_state().clear_all() total = self.track.num_odd + self.track.num_even self.next_state().add_text2( _(""" %s\n\nHas conseguido %d puntos.\n\nHas acertado %d veces.\n\nHas realizado %d errores.""") % (self.game_over_message(), self.player.score, self.player.num_ok, self.player.num_error), color = (0, 0, 0, 0), pos = (660, 260), rectsize = (380, 390)); usmpgames.ApplicationState.exiting_state(self, fromStack) def input(self, ms): events = pygame.event.get() # Now the main event-processing loop if events: for event in events: if event.type == pygame.QUIT: self.set_running( False ) elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: self.set_running( False ) elif event.key == pygame.K_LEFT or event.key == ord('a') or event.key == K_KP4 or event.key== K_KP7: self.player.moveLeft() elif event.key == pygame.K_RIGHT or event.key == ord('d') or event.key == K_KP6 or event.key== K_KP1: self.player.moveRight() elif event.key == pygame.K_DOWN or event.key == ord('s') or event.key == K_KP2 or event.key== K_KP3: self.player.moveForward() elif event.key == pygame.K_UP or event.key == ord('w') or event.key == K_KP8 or event.key== K_KP9: self.player.moveBack() def simulation(self, ms): self.player.update(ms) offsety = self.player.getOffsetY() if self.track.endOfTrack(offsety) : self.go_to_next_state() self.player.checkCollision(self.track) def pre_render(self, ms): self.screen().fill( (110,183,251)) usmpgames.ApplicationState.pre_render(self, ms) def render(self, ms): offsety = self.player.getOffsetY() if not self.track.endOfTrack(offsety) : self.track.drawFast(self.screen(), offsety) self.player.draw(self.screen()) self.score.draw(self.screen()) if self.game_mode == "pares": self.drawText("NÚMEROS PARES", screen_size[0] / 2, 0, (0,0,0)) else: self.drawText("NÚMEROS IMPARES", screen_size[0] / 2, 0, (0,0,0)) def drawText(self, text, x, y, color): text = self.font.render(text, 1, color) rectText = text.get_rect() rectText.topleft = (x, y) self.screen().blit(text, rectText) def game_over_message(self): if self.game_mode == "pares": total_ok = self.track.num_odd total_error = self.track.num_even elif self.game_mode == "impares": total_ok = self.track.num_odd total_error = self.track.num_even percent_ok_taken = self.player.num_ok * 100 / total_ok percent_error_taken = self.player.num_error * 100 / total_error if percent_error_taken >= percent_ok_taken: if self.game_mode == "pares": return _("Has de prestar más atención.\n\nCogiste más impares que pares.") else: return _("Has de prestar más atención.\n\nCogiste más pares que impares.") else: if percent_ok_taken >= 75: if self.game_mode == "pares": return _("Muy bien.\n\nAcertaste casi todos los pares.") else: return _("Muy bien.\n\nAcertaste casi todos los impares.") elif percent_ok_taken >= 50: if self.game_mode == "pares": return _("Bastante bien.\n\nAcertaste bastantes pares.\n\nTodavía puedes hacerlo mejor.") else: return _("Bastante bien.\n\nAcertaste bastantes impares.\n\nTodavía puedes hacerlo mejor.") else: if self.game_mode == "pares": return _("Regular.\n\nSigue practicando y mejorarás.\n\nÁnimo, a por los pares.") else: return _("Regular.\n\nSigue practicando y mejorarás.\n\nnÁnimo, a por los impares.")