-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlayer.pyw
94 lines (83 loc) · 3.24 KB
/
Player.pyw
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
import sys, os, pygame
import GEngineCore as Core
import BaseSprite
class PlayerSprite(BaseSprite.Sprite):
def __init__(self,image,centerpoint,colorkey=None,size=24):
BaseSprite.Sprite.__init__(self,image,centerpoint,colorkey,size)
self.size = size
self.spawnpoint = centerpoint
self.life = 3
self.kills = 0
self.xv = 0
self.yv = 0
self.falling = False
self.jumping = False
self.HorSpeed = int(Core.ConfigData.ReturnData("horizontal_speed"))
self.VertSpeed = int(Core.ConfigData.ReturnData("vertical_speed"))
self.dead = False
def update(self,platforms,enemygroup,levelwidth,levelheight,controlled = True):
self.Keys = pygame.key.get_pressed()
if self.falling == True:
self.yv += Core.G_C_GRAVITY_AMOUNT
if(controlled == True):
if self.Keys[pygame.K_LEFT]:
self.xv = -self.HorSpeed
elif self.Keys[pygame.K_RIGHT]:
self.xv = self.HorSpeed
else:
self.xv = 0
if self.Keys[pygame.K_UP] and self.jumping != True:
self.yv = -self.VertSpeed
self.jumping = True
if self.Keys[pygame.K_DOWN] and Core.G_C_GRAVITY == False:
self.yv = self.VertSpeed
self.rect.left += self.xv
if not(platforms == None):
self.Collision(self.xv,0,platforms)
self.rect.top += self.yv
self.falling = True
if not(platforms == None):
self.Collision(0,self.yv,platforms)
if not(enemygroup == None):
self.UpdateStatus(enemygroup,levelwidth,levelheight)
def Collision(self,xv,yv,platforms):
for p in platforms:
if(pygame.sprite.collide_rect(self,p)):
if(xv < 0):
self.rect.left = p.rect.right
elif(xv > 0):
self.rect.right = p.rect.left
if(yv > 0):
self.rect.bottom = p.rect.top
self.yv = 0
self.falling = False
self.jumping = False
elif(yv < 0):
self.rect.top = p.rect.bottom
self.yv = 0
#updates the current status of the player
#whether he collided with a sprite killing it or killing himself
def UpdateStatus(self,enemygroup,levelwidth,levelheight):
if(self.rect.top + 10 > levelheight):
self.Died()
elif(len(pygame.sprite.spritecollide(self,enemygroup,0)) > 0):
collidedy = pygame.sprite.spritecollide(self,enemygroup,0)[0].rect.top
if (self.rect.bottom > collidedy + self.size/2):
self.Died()
else:
self.yv *= -1
pygame.sprite.spritecollide(self,enemygroup,0)[0].kill()
self.kills += 1
#sets the died property to True
#deduces a point from the life attribute
def Died(self):
self.dead = True
self.life -= 1
self.yv = -5
def Respawn(self):
self.yv = 0
self.xv = 0
self.rect.center = self.spawnpoint
def DeathAnimation(self):
self.xv = 0
self.update(None,None,None,False)