-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplayer.py
123 lines (98 loc) · 3.57 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
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
119
120
121
122
123
import pygame
class Player(pygame.sprite.Sprite):
def __init__(self, size, x ,y,surface,tag,health,hunger):
super().__init__()
self.image = pygame.Surface((size,size))
self.rect = self.image.get_rect(topleft = (x,y))
self.image = surface
self.relativeX = x
self.relativeY = y
self.cropped_region = (0,0,64,64)
self.cropped_subsurf = self.image.subsurface(self.cropped_region)
self.ID = tag
self.startHealth = health
self.health = health
self.startHunger = hunger
self.hunger = hunger
self.hungerTimer = None
self.startHungerTimer = False
self.invul = False
self.starttime = 0 #startime for invul
def update(self,x,y):
self.rect.x += x
self.rect.y += y
#print(self.rect.x)
def updateRelative(self,x,y):
if (x != 0 or y != 0):
self.startHungerTimer = True
else:
self.startHungerTimer = False
if self.startHungerTimer:
self.hungerTimer = pygame.time.get_ticks()
else:
self.hungerTimer = None
self.relativeX += x
self.relativeY += y
#self.rect.x += x
#self.rect.y += y
def getHungerTime(self):
return self.hungerTimer
def updateHealth(self,x):
if (self.health + x > self.startHealth):
x = self.health + x - self.startHealth
self.health += x
def updateHunger(self,x):
if (self.hunger + x > self.startHunger):
x = self.hunger + x - self.startHunger
self.hunger += x
def getHealth(self):
return self.health
def getDamage(self):
return 0
def setInvulurbility(self,x):
self.invul = x
def setStartTime(self,starttime):
self.starttime = starttime
def getRect(self):
return self.rect
def getInvulurbility(self):
return self.invul
def getHunger(self):
return self.hunger
def getTime(self):
return self.starttime
def updateSprite(self, id):
TILE_SIZE = 64
if id == 1: #north
if (self.relativeY % TILE_SIZE) != 0: #if he is moving
self.cropped_region = (TILE_SIZE,TILE_SIZE * 3,TILE_SIZE,TILE_SIZE)
else:
self.cropped_region = (0, TILE_SIZE* 3,TILE_SIZE,TILE_SIZE)
if id == 2: #south
if (self.relativeY % TILE_SIZE) != 0:
self.cropped_region = (TILE_SIZE,0,TILE_SIZE,TILE_SIZE)
else:
self.cropped_region = (0,0,TILE_SIZE,TILE_SIZE)
if id == 3: #east
if (self.relativeX % TILE_SIZE) != 0:
self.cropped_region = (TILE_SIZE,TILE_SIZE * 2,TILE_SIZE,TILE_SIZE)
else:
self.cropped_region = (0,TILE_SIZE * 2,TILE_SIZE,TILE_SIZE)
if id == 4: #west
if (self.relativeX % TILE_SIZE) != 0:
self.cropped_region = (TILE_SIZE,TILE_SIZE,TILE_SIZE,TILE_SIZE)
else:
self.cropped_region = (0,TILE_SIZE,TILE_SIZE,TILE_SIZE)
def render(self,display):
self.cropped_subsurf = self.image.subsurface(self.cropped_region)
display.blit(self.cropped_subsurf,(self.rect.x,self.rect.y - 3)) #the sprite for red has an offset of about 3 pixels
def getRelativeX(self):
return self.relativeX
def getRelativeY(self):
return self.relativeY
def getX(self):
return self.rect.x
def getY(self):
return self.rect.y
def getID(self):
return self.ID