diff options
author | Mateu Batle <mateu.batle@collabora.co.uk> | 2010-10-27 17:40:28 (GMT) |
---|---|---|
committer | Mateu Batle <mateu.batle@collabora.co.uk> | 2010-10-27 17:40:28 (GMT) |
commit | 0018a9e211ebbe74d371339a70edc0d36c4fc99f (patch) | |
tree | ddfd93d0713c615ed70dbf869747b55b94791af8 /game1/player.py |
Initial import of game1 and game2 in math quwy
Diffstat (limited to 'game1/player.py')
-rwxr-xr-x | game1/player.py | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/game1/player.py b/game1/player.py new file mode 100755 index 0000000..9199397 --- /dev/null +++ b/game1/player.py @@ -0,0 +1,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 |