Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/game1/player.py
blob: 91993973528b3e78b6c9b4bf54650b93520c8265 (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
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