Advertisement
Guest User

player.py

a guest
May 22nd, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.74 KB | None | 0 0
  1. class player():
  2.  
  3. def __init__(self, x, y, image):
  4. self.x = x
  5. self.y = y
  6. self.scale = (60, 60)
  7. self.speed = 3
  8. self.g = 4
  9. self.gaccé = 1.05
  10. self.gm = self.g
  11. self.gactual = self.g
  12. self.lastgactual = 0
  13. self.action = []
  14. self.maxlife = 5000
  15. self.life = 5000
  16. self.onfloor = False
  17. self.mreload = 2 * 60
  18. self.reload = self.mreload
  19. self.airtime = 0
  20. self.imgdir = 'droite'
  21. self.papa = (image.split('\\')[2]).split('.')[0]
  22. self.image = pygame.transform.scale(pygame.image.load(image).convert_alpha(), self.scale)
  23. self.mute = True
  24. self.rect = (self.x,self.y,self.scale[0],self.scale[1])
  25. self.invoc = []
  26. if self.papa == 'planeur':
  27. self.invoct = 'explosif'
  28. self.icosh = []
  29. self.selectsh = 0
  30. for ico in os.listdir('texture\\eft\\sheep select\\'):
  31. self.icosh.append(pygame.transform.scale(pygame.image.load('texture\\eft\\sheep select\\'+ico).convert_alpha(),(40,40)))
  32.  
  33. def modiflife(self,nb):
  34. if self.life + nb > self.maxlife:
  35. self.life = self.maxlife
  36. elif self.life + nb <= 0:
  37. self.life = 0
  38. Game.reset(current)
  39. else:
  40. self.life += nb
  41.  
  42. def move(self,dir):
  43. if dir == 'gauche':
  44. if self.imgdir == 'droite':
  45. self.image = pygame.transform.flip(self.image,True,False)
  46. self.x -= self.speed
  47. self.imgdir = 'gauche'
  48. elif dir == 'droite':
  49. if self.imgdir == 'gauche':
  50. self.image = pygame.transform.flip(self.image,True,False)
  51. self.x += self.speed
  52. self.imgdir = 'droite'
  53.  
  54. def gravity(self):
  55. self.y += self.gactual
  56.  
  57. def lifebar(self):
  58. self.lifebar = pbar(self.maxlife,10,10,(250,60),(0,0,0),(0,255,0),(255,0,0),(0,0,0))
  59. pbar.setvalue(self.lifebar,self.life)
  60. if self.life > 0:
  61. pbar.draw(self.lifebar)
  62.  
  63. def reloadbar(self):
  64. if self.reload < self.mreload:
  65. self.reload += 1
  66. self.reloadbar = pbar(self.mreload,10,72,(250,15),(0,0,0),(255,255,255),(1,1,1),(0,0,0))
  67. pbar.setvalue(self.reloadbar,self.reload)
  68. pbar.draw(self.reloadbar)
  69.  
  70. def blit(self):
  71. fen1.blit(self.image, (self.x, self.y))
  72.  
  73. def action(self):
  74.  
  75. for i in self.action:
  76. if i[0] == 'jump':
  77. if not(self.gm == self.g):
  78. self.gm += 1
  79. else:
  80. self.action.remove(i)
  81.  
  82. elif i[0] == 'speed':
  83. if i[1] == 0:
  84. self.speed -= 5
  85. else:
  86. self.action.append(('speed',i[1]-1))
  87. self.action.remove(i)
  88.  
  89. elif i[0] == 'dash':
  90. if self.onfloor == True:
  91. power.dashdamage(i[3])
  92. else:
  93. if i[2] == 0:
  94. if i[1] == 'bas':
  95. self.y -= 5
  96. elif i[1] == 'haut':
  97. self.y += 5
  98. elif i[1] == 'droite':
  99. self.x += 5
  100. else:
  101. self.x -= 5
  102. else:
  103. self.x += i[2]
  104. self.y += i[2]*i[1]
  105. self.action.append(('dash',i[1],i[2],i[3]))
  106. self.action.remove(i)
  107.  
  108. def affichagestate(self):
  109. nb = 0
  110. y = 97
  111. if self.papa == 'planeur':
  112. fen1.blit(self.icosh[self.selectsh],(13,y))
  113. self.invoct = ['explosif','burn','eater'][self.selectsh]
  114. nb += 1
  115. for i in self.action:
  116. x = 13 + 50*nb
  117. dim = (40,40)
  118. if i[0] == 'speed':
  119. img = pygame.transform.scale(pygame.image.load('texture\\eft\\speed_boost.png').convert_alpha(),dim)
  120. img.set_alpha(255*i[1]/(5*60))
  121. fen1.blit(img,(x,y))
  122.  
  123. def calcgravity(self):
  124. self.gactual = int(self.gm + self.gaccé*self.airtime)
  125. if self.onfloor:
  126. self.airtime = 0
  127. else:
  128. self.airtime += 1
  129.  
  130. def pouvoir(self):
  131. if pbar.testmax(self.reloadbar):
  132. self.reload = 0
  133. if self.papa == 'cow':
  134. power.dash()
  135. if self.papa == 'ginger':
  136. power.soulabsorber()
  137. if self.papa == 'planeur':
  138. if self.imgdir == 'droite':
  139. x = self.x + self.scale[0]
  140. else:
  141. x = self.x
  142. self.invoc.append(power.sheep(x,self.y,(60,60),self.invoct))
  143.  
  144. def jump(self,value):
  145. if self.onfloor:
  146. # if not(self.mute):
  147. # self.jsound.play()
  148. self.action.append(('jump',0))
  149. self.gm = -value
  150.  
  151. def loop(self):
  152. self.rect = (self.x,self.y,self.scale[0],self.scale[1])
  153. player.action(self)
  154. player.affichagestate(self)
  155. player.calcgravity(self)
  156. player.gravity(self)
  157. player.lifebar(self)
  158. player.reloadbar(self)
  159. player.blit(self)
  160.  
  161. class mob():
  162.  
  163. def __init__(self,x,y,look,vie,speed,strengh):
  164. self.x = x
  165. self.y = y
  166. self.scale = (40,40)
  167. self.image = pygame.transform.flip(pygame.transform.scale(pygame.image.load(look).convert_alpha(),self.scale),True,False)
  168. self.maxlife = vie
  169. self.life = vie
  170. self.speed = speed
  171. self.g = 4
  172. self.strengh = strengh
  173. self.gaccé = 1.05
  174. self.gm = self.g
  175. self.gactual = self.g
  176. self.onfloor = False
  177. self.airtime = 0
  178. self.action = []
  179. self.IA = True
  180. self.rect = (self.x,self.y,self.scale[0],self.scale[1])
  181.  
  182. def move(self):
  183. self.x += self.speed
  184. self.y += self.gactual
  185. self.rect = (self.x,self.y,self.scale[0],self.scale[1])
  186.  
  187. def lifebar(self):
  188. self.lifebar = pbar(self.maxlife,self.x-5,self.y-10,(self.scale[0]+10,14),(0,0,0),(0,255,0),(255,0,0),(0,0,0))
  189. pbar.setvalue(self.lifebar, self.life)
  190. if self.life > 0:
  191. pbar.draw(self.lifebar)
  192. else:
  193. for i in range(7):
  194. current.particules.append(particule((self.x+int(self.scale[0]/2),self.y+int(self.scale[1]/2)),(255,0,0),True,10,5))
  195. current.particules.append(particule((self.x+int(self.scale[0]/2),self.y+int(self.scale[1]/2)),(255,255,0),True,7,2))
  196. current.mobs.remove(self)
  197.  
  198. def blit(self):
  199. fen1.blit(self.image, (self.x, self.y))
  200.  
  201. def dontfall(self):
  202. try:
  203. if (self.x < self.lié.x - self.speed or self.x + self.scale[0] > self.lié.x + self.lié.dim[0]) and self.IA:
  204. self.speed *= -1
  205. self.image = pygame.transform.flip(self.image, True, False)
  206. except:
  207. mob.link2platform(self)
  208.  
  209. def link2platform(self):
  210. for i in current.walls:
  211. if self.x >= i.x and self.x + self.scale[0] <= i.x + i.dim[0]:
  212. self.lié = i
  213.  
  214. def calcgravity(self):
  215. self.gactual = int(self.gm + self.gaccé*self.airtime)
  216.  
  217. if self.onfloor:
  218. self.airtime = 0
  219. else:
  220. self.airtime += 1
  221.  
  222. def jump(self,value):
  223. if self.onfloor:
  224. self.action.append('jump')
  225. self.gm = -value
  226.  
  227. def action(self):
  228. for i in self.action:
  229. if i[0] == 'jump':
  230. if not(self.gm == self.g):
  231. self.gm += 1
  232. elif i[0] == 'no IA':
  233. if i[1] == 0:
  234. self.IA = True
  235. else:
  236. mob.link2platform(self)
  237. self.action.append(('no IA',i[1]-1))
  238. elif i[0] == 'burn':
  239. if i[2] != 0:
  240. self.life -= i[1]
  241. self.action.append(('burn',i[1],i[2]-1))
  242. for j in range(3):
  243. current.particules.append(particule((rdm.randint(self.x,self.x+self.scale[0]),rdm.randint(self.y,self.y+2)),(255,0,0),1,10,2,(0,1)))
  244. self.action.remove(i)
  245.  
  246. def contactp(self):
  247. if colision(current.p1.rect, self.rect):
  248. player.modiflife(current.p1, -50 * self.strengh)
  249.  
  250. def loop(lst):
  251. for i in lst:
  252. mob.action(i)
  253. mob.calcgravity(i)
  254. mob.dontfall(i)
  255. mob.move(i)
  256. mob.contactp(i)
  257. mob.blit(i)
  258. mob.lifebar(i)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement