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("NUMEROS PARES", screen_size[0] / 2, 0, (0,0,0))
else:
self.drawText("NUMEROS 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 bién.\n\nAcertaste casi todo los pares.")
else:
return _("Muy bién.\n\nAcertaste casi todo los impares.")
elif percent_ok_taken >= 50:
if self.game_mode == "pares":
return _("Bastante bién.\n\nAcertaste bastantes pares.\n\nTodavía puedes hacerlo mejor.")
else:
return _("Bastante bién.\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.")
|