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
118
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
# kinds of tiles
# - navigable
# - flags: even / odd
# - obstacle
# - enemy
from pygame import *
from pygame.locals import *
from constants import *
from resources import *
class Player(sprite.Sprite):
def __init__(self, game_mode):
sprite.Sprite.__init__(self)
self.pos_wc = [screen_size[0] / 2, 0]
self.speed = [0, min_speed_y]
self.image = player_image_normal
self.image_ticks = 0
self.rect_sc = self.image.get_rect()
self.rect_sc.topleft = [self.pos_wc[0], horizon_y]
self.score = 0
self.game_mode = game_mode
def update(self, milliseconds):
self.speed[1] -= friction_y
if (self.speed[1] < min_speed_y):
self.speed[1] = min_speed_y
self.pos_wc[0] += self.speed[0] * (milliseconds / 1000.0)
self.pos_wc[1] += self.speed[1] * (milliseconds / 1000.0)
if self.pos_wc[0] < 0:
self.pos_wc[0] = 0
elif self.pos_wc[0] > screen_size[0] - sprite_size[0]:
self.pos_wc[0] = screen_size[0] - sprite_size[0]
self.rect_sc.topleft = [self.pos_wc[0], horizon_y]
def moveLeft(self):
self.speed[0] -= accel[0]
self.speed[0] = min(self.speed[0], max_speed[0])
def moveRight(self):
self.speed[0] += accel[0]
self.speed[0] = min(self.speed[0], max_speed[0])
def moveForward(self):
self.speed[1] += accel[1]
self.speed[1] = min(self.speed[1], max_speed[1])
def moveBack(self):
self.speed[1] -= accel[1]
self.speed[1] = min(-self.speed[1], -max_speed[1])
def getPos(self):
return self.pos_wc
def getOffsetY(self):
return self.pos_wc[1]
def getRectWC(self):
return Rect(self.pos_wc, sprite_size)
def draw(self, screen):
screen.blit(self.image, self.rect_sc)
def checkCollision(self, track):
rect_wc = self.getRectWC()
collisionTile = track.collidesWith(rect_wc)
if track.isNotNavigable(collisionTile) :
""" frena mas """
self.speed[1] = 0
self.speed[0] = 0
self.image = player_image_impact
self.image_ticks = 25
#sound_collide.play()
elif track.isDanger(collisionTile) :
self.speed[1] = 0
self.speed[0] = 0
self.score -= 10
self.image = player_image_impact_hard
self.image_ticks = 25
sound_danger.play()
elif track.isNavigable(collisionTile) :
if (self.image_ticks > 0):
self.image_ticks -= 1
else:
self.image = player_image_normal
elif type(collisionTile) == int:
num = collisionTile
if(self.game_mode =='impares'):
if (num % 2) == 1 :
self.score += 20
self.image = player_image_happy
self.image_ticks = 15
sound_good_choice.play()
else:
self.score -= 5
self.image = player_image_sad
self.image_ticks = 25
sound_bad_choice.play()
elif self.game_mode =='pares':
if (num % 2) == 0 :
self.score += 20
self.image = player_image_happy
self.image_ticks = 15
sound_good_choice.play()
else:
self.score -= 5
self.image = player_image_sad
self.image_ticks = 15
sound_bad_choice.play()
if self.score <=0:
self.score=0
|