Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/game1/collectgame.py
blob: 46776a70853e3a7e037b7bee9d02d0a91abb7952 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/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.")