forked from elimirks/squarez
-
Notifications
You must be signed in to change notification settings - Fork 0
/
player.py
65 lines (51 loc) · 1.61 KB
/
player.py
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
#!/usr/bin/env python3
import pygame
from pygame.locals import *
from entity import Entity
class Player(Entity):
"""Responsible for the main character square."""
def __init__(self, board):
size = 15
x = board.getWidth()/2 - size/2
y = board.getHeight()/2 - size/2
Entity.__init__(self, x, y, size)
self.speed = 100
self.dead = False
def draw(self, display):
pygame.draw.rect(display, pygame.Color(255, 255, 0), self.getRect())
def move(self, board, elapsedTime):
if self.isDead():
return
self._respondToKeyEvents(elapsedTime)
self._ensureWithinScreenBounds(board)
def _respondToKeyEvents(self, elapsedTime):
if pygame.key.get_pressed()[pygame.K_UP]:
self.y -= self.speed * elapsedTime
if pygame.key.get_pressed()[pygame.K_DOWN]:
self.y += self.speed * elapsedTime
if pygame.key.get_pressed()[pygame.K_LEFT]:
self.x -= self.speed * elapsedTime
if pygame.key.get_pressed()[pygame.K_RIGHT]:
self.x += self.speed * elapsedTime
def _ensureWithinScreenBounds(self, board):
self.x = min(max(0, self.x), board.getWidth() - self.size)
self.y = min(max(0, self.y), board.getHeight() - self.size)
def grow(self, amount):
self.size += amount
self.x -= amount/2
self.y -= amount/2
def shrink(self, amount):
minimumSize = 5
if self.size > minimumSize:
self.size = max(minimumSize, self.size - amount)
self.x += amount/2
self.y += amount/2
def increaseSpeed(self, amount):
self.speed += amount
def decreaseSpeed(self, amount):
minimumSpeed = 30
self.speed = max(self.speed - 10, minimumSpeed)
def die(self):
self.dead = True
def isDead(self):
return self.dead