No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

707 líneas
24 KiB

hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
  1. import pygame, sys
  2. from pygame.locals import *
  3. import random
  4. # pygame.init()
  5. pygame.display.init()
  6. pygame.font.init()
  7. w = pygame.display.Info().current_w
  8. h = pygame.display.Info().current_h
  9. screen_scale_factor_w = w / 1920
  10. screen_scale_factor_h = h / 1080
  11. # screen_scale_factor = screen_scale_factor_w
  12. MOUSE_BUTTON_RIGHT = 3
  13. SCREEN_WIDTH = 400
  14. FPS = 60
  15. FramePerSec = pygame.time.Clock()
  16. game_level = 1
  17. enemy_list = []
  18. BLUE = (0, 0, 255)
  19. RED = (255, 0, 0)
  20. GREEN = (0, 255, 0)
  21. YELLOW = (255, 255, 0)
  22. BLACK = (0, 0, 0)
  23. WHITE = (255, 255, 255)
  24. TEXT_COLOR = (0, 0, 0)
  25. money = 15000
  26. def screen_scale_h(h_px, scale_factor):
  27. return int(h_px * scale_factor)
  28. def screen_scale_w(w_px, scale_factor):
  29. return int(w_px * scale_factor)
  30. MENU_PADDING = screen_scale_w(10, screen_scale_factor_w)
  31. HEART_POS_X = screen_scale_w(1700, screen_scale_factor_w)
  32. HEART_POS_Y = screen_scale_h(700, screen_scale_factor_h)
  33. DISPLAYSURF = pygame.display.set_mode((screen_scale_w(1920, screen_scale_factor_w), screen_scale_h(1080, screen_scale_factor_h)), pygame.FULLSCREEN)
  34. DISPLAYSURF.fill(WHITE)
  35. pygame.display.set_caption("Game")
  36. pygame.font.init()
  37. my_font = pygame.font.SysFont("Arial", screen_scale_w(30, screen_scale_factor_w) , bold=True, italic=False)
  38. you_died_font = pygame.font.SysFont("Arial", screen_scale_w(30, screen_scale_factor_w), bold=True, italic=False)
  39. exit_text_surface = my_font.render("Exit", False, TEXT_COLOR)
  40. exit_text_x = screen_scale_w(1800, screen_scale_factor_w)
  41. exit_text_y = screen_scale_h(16, screen_scale_factor_h)
  42. exit_rect = exit_text_surface.get_rect(topleft=(exit_text_x, exit_text_y))
  43. you_died = you_died_font.render('YOU DIED', False, (255, 0, 0))
  44. text_surface = my_font.render("money: " + str(money), False, TEXT_COLOR)
  45. text_surface_x = screen_scale_w(16, screen_scale_factor_w)
  46. text_surface_y = screen_scale_h(16, screen_scale_factor_h)
  47. level_text_surface = my_font.render("Level: " + str(game_level), False, TEXT_COLOR)
  48. level_text_surface_x = screen_scale_w(16, screen_scale_factor_w)
  49. level_text_surface_y = screen_scale_h(48, screen_scale_factor_h)
  50. snowman_list = []
  51. cakeman_list = []
  52. snowball_list = []
  53. reindeer_list = []
  54. laser_beam_list = []
  55. class CakeMan(pygame.sprite.Sprite):
  56. def __init__ (self, x, y):
  57. super().__init__()
  58. self.image = pygame.image.load("kagemand/kagemand1.png").convert_alpha()
  59. self.rect = self.image.get_rect()
  60. self.image = pygame.transform.smoothscale(self.image, (screen_scale_w(self.rect.w, screen_scale_factor_w), screen_scale_h(self.rect.h, screen_scale_factor_h)))
  61. self.rect.center = (x, y)
  62. self.animation_step = 0
  63. def draw(self, surface):
  64. surface.blit(self.image, self.rect)
  65. class Reindeer(pygame.sprite.Sprite):
  66. def __init__ (self, x, y):
  67. super().__init__()
  68. self.image = pygame.image.load("reindeer/r1.png").convert_alpha()
  69. self.rect = self.image.get_rect()
  70. self.image = pygame.transform.smoothscale(self.image, (screen_scale_w(self.rect.w, screen_scale_factor_w), screen_scale_h(self.rect.h, screen_scale_factor_h) ))
  71. self.rect.center = (x, y)
  72. self.speed = 180
  73. self.shoot_laser_beam = self.speed
  74. self.animation_step = 0
  75. def draw(self, surface):
  76. surface.blit(self.image, self.rect)
  77. self.shoot_laser_beam = self.shoot_laser_beam - 1
  78. if self.shoot_laser_beam == -1:
  79. return
  80. elif self.shoot_laser_beam == 0:
  81. # Throw snowball.
  82. # print("Laser beam: x: " + str(self.rect.center[0]) + "y:" + str(self.rect.center[1]))
  83. laser_beam_list.append(Laser_Beam(self.rect.center[0], self.rect.center[1]))
  84. # rest sownball counter
  85. self.shoot_laser_beam = self.speed
  86. class Snowman(pygame.sprite.Sprite):
  87. def __init__(self, x, y):
  88. super().__init__()
  89. self.image = pygame.image.load("snowmand.png").convert_alpha()
  90. self.rect = self.image.get_rect()
  91. self.image = pygame.transform.smoothscale(self.image, (screen_scale_w(self.rect.w, screen_scale_factor_w), screen_scale_h(self.rect.h, screen_scale_factor_h)))
  92. self.rect.center = (x, y)
  93. self.speed = 180
  94. self.throw_snowball_counter = self.speed
  95. def draw(self, surface):
  96. surface.blit(self.image, self.rect)
  97. self.throw_snowball_counter = self.throw_snowball_counter - 1
  98. if self.throw_snowball_counter == -1:
  99. return
  100. elif self.throw_snowball_counter == 0:
  101. # Throw snowball.
  102. # print("Snowball: x: " + str(self.rect.center[0]) + "y:" + str(self.rect.center[1]))
  103. snowball_list.append(Snowball(self.rect.center[0], self.rect.center[1]))
  104. # rest sownball counter
  105. self.throw_snowball_counter = self.speed
  106. class Enemy(pygame.sprite.Sprite):
  107. def __init__(self, x, y, heart, health):
  108. super().__init__()
  109. self.image = pygame.image.load("elf.png").convert_alpha()
  110. self.rect = self.image.get_rect()
  111. self.rect.center = (x, y)
  112. self.image = pygame.transform.smoothscale(self.image, (screen_scale_w(self.rect.w, screen_scale_factor_w), screen_scale_h(self.rect.h, screen_scale_factor_h) ))
  113. self.health_bar_color = GREEN
  114. self.health_bar_width = 0
  115. self.path = 0
  116. self.max_health = health
  117. self.health = self.max_health
  118. self.alive = 1
  119. self.heart = heart
  120. self.speed = screen_scale_w(2, screen_scale_factor_w)
  121. self.calculate_life_bar()
  122. def damage(self, amount):
  123. self.health = self.health - amount
  124. if(self.health <= 0):
  125. self.alive = 0
  126. add_money(1000)
  127. return
  128. self.calculate_life_bar()
  129. def calculate_life_bar(self):
  130. #Beregn størrelsen på liv baren:
  131. life_ratio = self.health / self.max_health
  132. if life_ratio >= 0.75:
  133. self.health_bar_color = GREEN
  134. elif life_ratio < 0.75 and life_ratio > 0.26:
  135. self.health_bar_color = YELLOW
  136. else:
  137. self.health_bar_color = RED
  138. self.health_bar_width = self.rect.w * (self.health / self.max_health)
  139. def move(self, player):
  140. if (self.path == 0):
  141. if (self.rect.right < screen_scale_w(300, screen_scale_factor_w)):
  142. self.rect.move_ip(self.speed,0)
  143. else:
  144. self.path = 1
  145. if (self.path == 1):
  146. if(self.rect.bottom < screen_scale_h(890, screen_scale_factor_h)):
  147. self.rect.move_ip(0,self.speed)
  148. else:
  149. self.path = 2
  150. if(self.path == 2):
  151. if(self.rect.right < screen_scale_w(1128, screen_scale_factor_w)):
  152. self.rect.move_ip(self.speed,0)
  153. else:
  154. self.path = 3
  155. if (self.path == 3):
  156. if(self.rect.top > screen_scale_h(516, screen_scale_factor_h)):
  157. self.rect.move_ip(0,-self.speed)
  158. else:
  159. self.path = 4
  160. if (self.path == 4):
  161. if(self.rect.left > screen_scale_w(847, screen_scale_factor_w)):
  162. self.rect.move_ip(-self.speed,0)
  163. else:
  164. self.path = 5
  165. if (self.path == 5):
  166. if(self.rect.top > screen_scale_h(246, screen_scale_factor_h)):
  167. self.rect.move_ip(0,-self.speed)
  168. else:
  169. self.path = 6
  170. if (self.path == 6):
  171. if (self.rect.right < screen_scale_w(1248, screen_scale_factor_w)):
  172. self.rect.move_ip(self.speed,0)
  173. else:
  174. self.path = 7
  175. if (self.path == 7):
  176. if (self.rect.bottom < screen_scale_h(570, screen_scale_factor_h)):
  177. self.rect.move_ip(0,self.speed)
  178. else:
  179. self.path = 8
  180. if (self.path == 8):
  181. if (self.rect.right < screen_scale_w(1548, screen_scale_factor_w)):
  182. self.rect.move_ip(self.speed,0)
  183. else:
  184. self.path = 'end'
  185. if (self.path == 'end'):
  186. self.alive = 0
  187. self.heart.lives -= 20
  188. def draw(self, surface):
  189. surface.blit(self.image, self.rect)
  190. pygame.draw.rect(DISPLAYSURF,self.health_bar_color,(self.rect.x, (self.rect.y + self.rect.h + 8), screen_scale_w(self.health_bar_width, screen_scale_factor_w) , screen_scale_w(5, screen_scale_factor_h) ))
  191. class Snowball(pygame.sprite.Sprite):
  192. def __init__(self, x, y):
  193. super().__init__()
  194. self.image = pygame.image.load("snowball.png").convert_alpha()
  195. self.rect = self.image.get_rect()
  196. self.rect.center=(x, y)
  197. def move(self, snowball_list, enemy_list):
  198. target_enemy = None
  199. for enemy in enemy_list:
  200. if enemy.alive == 1:
  201. target_enemy = enemy
  202. break
  203. if enemy == None:
  204. return
  205. enemy_x = enemy.rect.x
  206. enemy_y = enemy.rect.y
  207. snowball_x = self.rect.x
  208. snowball_y = self.rect.y
  209. if abs(enemy_x - snowball_x) < 8 and abs(enemy_y - snowball_y) < 8:
  210. snowball_list.remove(self)
  211. enemy.damage(50)
  212. delta_move_x = 0
  213. delta_move_y = 0
  214. if enemy_x < snowball_x:
  215. delta_move_x = -4
  216. elif enemy_x > snowball_x:
  217. delta_move_x = 4
  218. if enemy_y < snowball_y:
  219. delta_move_y = -4
  220. elif enemy_y > snowball_y:
  221. delta_move_y = 4
  222. self.rect.move_ip(delta_move_x, delta_move_y)
  223. #if (self.rect.right > 600):
  224. # self.rect.top = 0
  225. # self.rect.center = (0, 400)
  226. #if self.rect.colliderect(player.rect):
  227. # print("HIT")
  228. def draw(self, surface):
  229. surface.blit(self.image, self.rect)
  230. class Laser_Beam(pygame.sprite.Sprite):
  231. def __init__(self, x, y):
  232. super().__init__()
  233. self.image = pygame.image.load("reindeer/laser_beam.png").convert_alpha()
  234. self.rect = self.image.get_rect()
  235. self.rect.center=(x, y)
  236. def move(self, player):
  237. self.rect.move_ip(4,0)
  238. #if (self.rect.right > 600):
  239. # self.rect.top = 0
  240. # self.rect.center = (0, 400)
  241. # if self.rect.colliderect(player.rect):
  242. # print("HIT")
  243. def draw(self, surface):
  244. surface.blit(self.image, self.rect)
  245. class MenuSnowman(pygame.sprite.Sprite):
  246. def __init__(self):
  247. super().__init__()
  248. self.image = pygame.image.load("snowmand.png").convert_alpha()
  249. self.rect = self.image.get_rect()
  250. self.rect.center = (screen_scale_w(580, screen_scale_factor_w), screen_scale_h(80, screen_scale_factor_h))
  251. self.image = pygame.transform.smoothscale(self.image, (screen_scale_w(self.rect.w, screen_scale_factor_w), screen_scale_h(self.rect.h, screen_scale_factor_h)) )
  252. self.price = 2500
  253. self.text = my_font.render(str(self.price) , False, TEXT_COLOR)
  254. self.selected = 0
  255. def draw(self, surface):
  256. if self.selected == 1:
  257. pygame.draw.rect(DISPLAYSURF,BLUE,(menu_snowman.rect.x - MENU_PADDING , menu_snowman.rect.y - MENU_PADDING, screen_scale_w((menu_snowman.rect.w + 2 * MENU_PADDING), screen_scale_factor_w) , screen_scale_h((menu_snowman.rect.h + 2 * MENU_PADDING), screen_scale_factor_h )))
  258. surface.blit(self.image, self.rect)
  259. surface.blit(self.text,(self.rect.x, self.rect.y + (screen_scale_h(100, screen_scale_factor_h))))
  260. def get_pos(self):
  261. return self.rect.pos
  262. class MenuCakeman(pygame.sprite.Sprite):
  263. def __init__(self):
  264. super().__init__()
  265. self.image = pygame.image.load("kagemand/kagemand1.png").convert_alpha()
  266. self.rect = self.image.get_rect()
  267. #self.rect.scale_by(screen_scale_factor)
  268. self.rect.center = (screen_scale_w(720, screen_scale_factor_w), screen_scale_h(80, screen_scale_factor_h))
  269. self.image = pygame.transform.smoothscale(self.image, (screen_scale_w(self.rect.w, screen_scale_factor_w), screen_scale_h(self.rect.h, screen_scale_factor_h)) )
  270. self.price = 5000
  271. self.text = my_font.render(str(self.price) , False, TEXT_COLOR)
  272. self.selected = 0
  273. def draw(self, surface):
  274. if self.selected == 1:
  275. pygame.draw.rect(DISPLAYSURF,BLUE,(menu_cakeman.rect.x - MENU_PADDING, menu_cakeman.rect.y - MENU_PADDING, screen_scale_w((menu_cakeman.rect.w + 2 * MENU_PADDING), screen_scale_factor_w), screen_scale_h((menu_cakeman.rect.h + 2 * MENU_PADDING), screen_scale_factor_h) ))
  276. surface.blit(self.image, self.rect)
  277. surface.blit(self.text,(self.rect.x ,self.rect.y + (screen_scale_h(100, screen_scale_factor_h)) ))
  278. def get_pos(self):
  279. return self.rect.pos
  280. class MenuReindeer(pygame.sprite.Sprite):
  281. def __init__(self):
  282. super().__init__()
  283. self.image = pygame.image.load("reindeer/r1.png").convert_alpha()
  284. self.rect = self.image.get_rect()
  285. self.rect.center = (screen_scale_w(850, screen_scale_factor_w), screen_scale_h(80, screen_scale_factor_h))
  286. self.image = pygame.transform.smoothscale(self.image, (screen_scale_w(self.rect.w, screen_scale_factor_w), screen_scale_h(self.rect.h, screen_scale_factor_h)) )
  287. self.price = 7500
  288. self.text = my_font.render(str(self.price) , False, TEXT_COLOR)
  289. self.selected = 0
  290. def draw(self, surface):
  291. if self.selected == 1:
  292. pygame.draw.rect(DISPLAYSURF,BLUE,(self.rect.x - MENU_PADDING , self.rect.y - MENU_PADDING, screen_scale_w((self.rect.w + 2 * MENU_PADDING), screen_scale_factor_w) , screen_scale_h((self.rect.h + 2 * MENU_PADDING), screen_scale_factor_h )))
  293. surface.blit(self.image, self.rect)
  294. surface.blit(self.text,(self.rect.x + (screen_scale_w(20, screen_scale_factor_w)), self.rect.y + (screen_scale_h(100, screen_scale_factor_h))))
  295. def get_pos(self):
  296. return self.rect.pos
  297. scaleFactor = 2 * screen_scale_factor_w
  298. class Heart(pygame.sprite.Sprite):
  299. def __init__(self):
  300. super().__init__()
  301. self.image0 = pygame.image.load('0_hjerte.png').convert_alpha()
  302. self.image20 = pygame.image.load('20_hjerte.png').convert_alpha()
  303. self.image20 = pygame.transform.scale(self.image20, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor)))
  304. self.image40 = pygame.image.load('40_hjerte.png').convert_alpha()
  305. self.image40 = pygame.transform.scale(self.image40, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor)))
  306. self.image60 = pygame.image.load('60_hjerte.png').convert_alpha()
  307. self.image60 = pygame.transform.scale(self.image60, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor)))
  308. self.image80 = pygame.image.load('80_hjerte.png').convert_alpha()
  309. self.image80 = pygame.transform.scale(self.image80, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor)))
  310. self.image100 = pygame.image.load('100_hjerte.png').convert_alpha()
  311. self.image100 = pygame.transform.scale(self.image100, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor)))
  312. self.lives = 100
  313. def draw(self, surface):
  314. if self.lives == 100:
  315. surface.blit(self.image100, (HEART_POS_X, HEART_POS_Y))
  316. elif self.lives == 80:
  317. surface.blit(self.image80, (HEART_POS_X, HEART_POS_Y))
  318. elif self.lives == 60:
  319. surface.blit(self.image60, (HEART_POS_X, HEART_POS_Y))
  320. elif self.lives == 40:
  321. surface.blit(self.image40, (HEART_POS_X, HEART_POS_Y))
  322. elif self.lives == 20:
  323. surface.blit(self.image20, (HEART_POS_X, HEART_POS_Y))
  324. elif self.lives == 0:
  325. surface.blit(self.image0, (HEART_POS_X, HEART_POS_Y))
  326. def try_to_buy(new_tower, price):
  327. global money
  328. global text_surface
  329. if not valid_space(new_tower):
  330. return False
  331. if money >= price:
  332. money = money - price
  333. text_surface = my_font.render("money: " + str(money), False, TEXT_COLOR)
  334. return True
  335. return False
  336. def add_money(price):
  337. global money
  338. global text_surface
  339. money = money + price
  340. text_surface = my_font.render("money: " + str(money), False, TEXT_COLOR)
  341. def check_round_end():
  342. global enemy_list
  343. for i in range(len(enemy_list)):
  344. if (enemy_list[i].alive == 1):
  345. return False
  346. print("Level ended")
  347. return True
  348. def level_up():
  349. global game_level
  350. global level_text_surface
  351. game_level = game_level + 1
  352. level_text_surface = my_font.render("Level: " + str(game_level), False, TEXT_COLOR)
  353. start_new_level(10, game_level * 100)
  354. heart = Heart()
  355. def start_new_level(count, health):
  356. global screen_scale_factor_w
  357. global screen_scale_factor_h
  358. global enemy_list
  359. global heart
  360. enemy_list = []
  361. enemy_pos_x = screen_scale_w(60, screen_scale_factor_w)
  362. enemy_pos_y = screen_scale_h(350, screen_scale_factor_h)
  363. for i in range(count):
  364. enemy_list.append(Enemy(-enemy_pos_x * i, enemy_pos_y, heart, health))
  365. def valid_space(new_tower):
  366. global snowman_list
  367. global cakeman_list
  368. global reindeer_list
  369. combined_tower_list = snowman_list + cakeman_list + reindeer_list
  370. for old_tower in combined_tower_list:
  371. if new_tower.rect.colliderect(old_tower.rect):
  372. return False
  373. return True
  374. menu_snowman = MenuSnowman()
  375. menu_cakeman = MenuCakeman()
  376. menu_reindeer = MenuReindeer()
  377. # cakeman = CakeMan(300, 400)
  378. enemy_pos_x = screen_scale_w(60, screen_scale_factor_w)
  379. enemy_pos_y = screen_scale_h(350, screen_scale_factor_h)
  380. start_new_level(5, 100)
  381. kagemand_animation_step = 0
  382. kagemand_animation = []
  383. kagemand_animation_temp = [
  384. pygame.image.load("kagemand/kagemand1.png").convert_alpha(),
  385. pygame.image.load("kagemand/kagemand2.png").convert_alpha(),
  386. pygame.image.load("kagemand/kagemand3.png").convert_alpha(),
  387. pygame.image.load("kagemand/kagemand4.png").convert_alpha(),
  388. pygame.image.load("kagemand/kagemand5.png").convert_alpha(),
  389. pygame.image.load("kagemand/kagemand6.png").convert_alpha(),
  390. pygame.image.load("kagemand/kagemand7.png").convert_alpha(),
  391. pygame.image.load("kagemand/kagemand8.png").convert_alpha()]
  392. for animation_image in kagemand_animation_temp:
  393. img_rect = animation_image.get_rect()
  394. animation_image_new = pygame.transform.smoothscale(animation_image, (screen_scale_w(img_rect.w, screen_scale_factor_w), screen_scale_h(img_rect.h, screen_scale_factor_h)) )
  395. kagemand_animation.append(animation_image_new)
  396. mouse_down = 0
  397. bg = pygame.image.load("background.png").convert_alpha()
  398. bg = pygame.transform.smoothscale(bg, DISPLAYSURF.get_size())
  399. mouse_snowman = Snowman(0, 0)
  400. mouse_snowman.speed = -1
  401. mouse_cakeman = CakeMan(0, 0)
  402. mouse_reindeer = Reindeer(0, 0)
  403. frame_count = 0
  404. # heart_health = pygame.image.load("heart.png")
  405. while True:
  406. for event in pygame.event.get():
  407. if event.type == QUIT:
  408. pygame.quit()
  409. sys.exit()
  410. pressed_keys = pygame.key.get_pressed()
  411. if pressed_keys[K_ESCAPE]:
  412. sys.exit()
  413. DISPLAYSURF.blit(bg, (0, 0))
  414. if heart.lives <= 0:
  415. DISPLAYSURF.blit(you_died, (400, 400))
  416. pygame.display.update()
  417. FramePerSec.tick(10)
  418. frame_count = (frame_count + 1) % 16
  419. continue
  420. heart.draw(DISPLAYSURF)
  421. DISPLAYSURF.blit(exit_text_surface, (exit_text_x, exit_text_y))
  422. # cakeman.draw(DISPLAYSURF)
  423. #menu_snowman.update()
  424. for snowman in snowman_list:
  425. snowman.draw(DISPLAYSURF)
  426. for reindeer in reindeer_list:
  427. reindeer.draw(DISPLAYSURF)
  428. for cakeman in cakeman_list:
  429. # cakeman.draw(DISPLAYSURF)
  430. kagemand_image = kagemand_animation[cakeman.animation_step]
  431. kagemand_rect = kagemand_image.get_rect()
  432. kagemand_rect.center = cakeman.rect.center
  433. DISPLAYSURF.blit(kagemand_image, kagemand_rect)
  434. if frame_count == 0:
  435. cakeman.animation_step = (cakeman.animation_step + 1) % len(kagemand_animation)
  436. if cakeman.animation_step == 7:
  437. rect = cakeman.rect
  438. for enemy in enemy_list:
  439. if enemy.alive:
  440. if enemy.rect.colliderect(rect):
  441. enemy.damage(100)
  442. for enemy in enemy_list:
  443. if enemy.alive:
  444. enemy.move(menu_snowman)
  445. enemy.draw(DISPLAYSURF)
  446. # for cakeman in cakeman_list:
  447. # if cakeman.animation_step == 7:
  448. # rect = cakeman.rect
  449. # # print(rect)
  450. #
  451. # if enemy.rect.colliderect(rect):
  452. # enemy.damage(100)
  453. # add_money(1000)
  454. if event.type == MOUSEBUTTONDOWN:
  455. if event.button == MOUSE_BUTTON_RIGHT:
  456. menu_snowman.selected = 0
  457. menu_cakeman.selected = 0
  458. menu_reindeer.selected = 0
  459. else:
  460. if mouse_down == 0:
  461. mouse_down = 1
  462. mouse_pos = event.pos
  463. # print(mouse_pos)
  464. # print("exit rect: " + str(exit_rect))
  465. if exit_rect.collidepoint(mouse_pos):
  466. exit()
  467. #
  468. # Menu snowman
  469. #
  470. if menu_snowman.selected == 1:
  471. if try_to_buy(mouse_snowman, menu_snowman.price):
  472. snowman_list.append(Snowman(mouse_pos[0], mouse_pos[1]))
  473. # print(len(snowman_list))
  474. menu_snowman.selected = 0
  475. if menu_snowman.rect.collidepoint(mouse_pos):
  476. # print("Clickmenusnowman")
  477. if money >= menu_snowman.price:
  478. menu_snowman.selected = 1
  479. #
  480. # menu cakeman
  481. #
  482. if menu_cakeman.selected == 1:
  483. if try_to_buy(mouse_cakeman, menu_cakeman.price):
  484. mouse_pos = pygame.mouse.get_pos()
  485. cakeman_list.append(CakeMan(mouse_pos[0], mouse_pos[1]))
  486. # print(len(snowman_list))
  487. menu_cakeman.selected = 0
  488. #
  489. # Menu Reindeer
  490. #
  491. if menu_reindeer.selected == 1:
  492. if try_to_buy(mouse_reindeer, menu_reindeer.price):
  493. mouse_pos = pygame.mouse.get_pos()
  494. reindeer_list.append(Reindeer(mouse_pos[0], mouse_pos[1]))
  495. # print(len(snowman_list))
  496. menu_reindeer.selected = 0
  497. if menu_cakeman.rect.collidepoint(mouse_pos):
  498. if money >= menu_cakeman.price:
  499. menu_cakeman.selected = 1
  500. if menu_reindeer.rect.collidepoint(mouse_pos):
  501. if money >= menu_reindeer.price:
  502. menu_reindeer.selected = 1
  503. elif event.type == MOUSEBUTTONUP:
  504. mouse_down = 0
  505. if (frame_count % 4) == 0:
  506. kagemand_animation_step = (kagemand_animation_step + 1) % 8
  507. for snowball in snowball_list:
  508. snowball.move(snowball_list, enemy_list)
  509. snowball.draw(DISPLAYSURF)
  510. for laser_beam in laser_beam_list:
  511. laser_beam.move(menu_snowman)
  512. laser_beam.draw(DISPLAYSURF)
  513. if menu_snowman.selected == 1:
  514. if event.type == pygame.MOUSEMOTION:
  515. mouse_pos = pygame.mouse.get_pos()
  516. mouse_snowman.rect.center = (mouse_pos[0], mouse_pos[1])
  517. mouse_snowman.draw(DISPLAYSURF)
  518. elif menu_cakeman.selected == 1:
  519. if event.type == pygame.MOUSEMOTION:
  520. mouse_pos = pygame.mouse.get_pos()
  521. mouse_cakeman.rect.center = (mouse_pos[0], mouse_pos[1])
  522. mouse_cakeman.draw(DISPLAYSURF)
  523. elif menu_reindeer.selected == 1:
  524. if event.type == pygame.MOUSEMOTION:
  525. mouse_pos = pygame.mouse.get_pos()
  526. mouse_reindeer.rect.center = (mouse_pos[0], mouse_pos[1])
  527. mouse_reindeer.draw(DISPLAYSURF)
  528. #DISPLAYSURF.fill(WHITE)
  529. menu_snowman.draw(DISPLAYSURF)
  530. menu_cakeman.draw(DISPLAYSURF)
  531. menu_reindeer.draw(DISPLAYSURF)
  532. DISPLAYSURF.blit(text_surface, (text_surface_x, text_surface_y))
  533. DISPLAYSURF.blit(level_text_surface, (level_text_surface_x, level_text_surface_y))
  534. frame_count = (frame_count + 1) % 16
  535. if (check_round_end()):
  536. level_up()
  537. pygame.display.update()
  538. FramePerSec.tick(FPS)