|  |  |  | @ -9,12 +9,12 @@ pygame.font.init() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | w = pygame.display.Info().current_w | 
			
		
	
		
			
				
					|  |  |  |  | h = pygame.display.Info().current_h | 
			
		
	
		
			
				
					|  |  |  |  | screen_scale_factor = w / 1920 | 
			
		
	
		
			
				
					|  |  |  |  | screen_scale_factor_w = w / 1920 | 
			
		
	
		
			
				
					|  |  |  |  | screen_scale_factor_h = h / 1080 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # screen_scale_factor = screen_scale_factor_w | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | MOUSE_BUTTON_RIGHT = 3 | 
			
		
	
		
			
				
					|  |  |  |  | HEART_POS_X = 1700 * screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  | HEART_POS_Y = 700 * screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | SCREEN_WIDTH = 400  | 
			
		
	
		
			
				
					|  |  |  |  | FPS = 60 | 
			
		
	
	
		
			
				
					|  |  |  | @ -32,11 +32,21 @@ WHITE = (255, 255, 255) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | TEXT_COLOR = (0, 0, 0) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | MENU_PADDING = 10 * screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | money = 15000 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | DISPLAYSURF = pygame.display.set_mode((screen_scale_factor * 1920, screen_scale_factor * 1080)) | 
			
		
	
		
			
				
					|  |  |  |  | def screen_scale_h(h_px, scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |     return int(h_px * scale_factor) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def screen_scale_w(w_px, scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |     return int(w_px * scale_factor) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | MENU_PADDING = screen_scale_w(10, screen_scale_factor_w) | 
			
		
	
		
			
				
					|  |  |  |  | HEART_POS_X = screen_scale_w(1700, screen_scale_factor_w) | 
			
		
	
		
			
				
					|  |  |  |  | HEART_POS_Y = screen_scale_h(700, screen_scale_factor_h) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | DISPLAYSURF = pygame.display.set_mode((screen_scale_w(1920, screen_scale_factor_w), screen_scale_h(1080, screen_scale_factor_h))) | 
			
		
	
		
			
				
					|  |  |  |  | DISPLAYSURF.fill(WHITE) | 
			
		
	
		
			
				
					|  |  |  |  | pygame.display.set_caption("Game") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -46,19 +56,19 @@ you_died_font = pygame.font.SysFont("Arial", 300, bold=True, italic=False) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | exit_text_surface = my_font.render("Exit", False, TEXT_COLOR) | 
			
		
	
		
			
				
					|  |  |  |  | exit_text_x = screen_scale_factor * 1800 | 
			
		
	
		
			
				
					|  |  |  |  | exit_text_y = screen_scale_factor *16 | 
			
		
	
		
			
				
					|  |  |  |  | exit_text_x = screen_scale_w(1800, screen_scale_factor_w) | 
			
		
	
		
			
				
					|  |  |  |  | exit_text_y = screen_scale_h(16, screen_scale_factor_h) | 
			
		
	
		
			
				
					|  |  |  |  | exit_rect = exit_text_surface.get_rect(topleft=(exit_text_x, exit_text_y)) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | you_died = you_died_font.render('YOU DIED', False, (255, 0, 0)) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | text_surface = my_font.render("money: " + str(money), False, TEXT_COLOR) | 
			
		
	
		
			
				
					|  |  |  |  | text_surface_x = screen_scale_factor * 16 | 
			
		
	
		
			
				
					|  |  |  |  | text_surface_y = screen_scale_factor * 16 | 
			
		
	
		
			
				
					|  |  |  |  | text_surface_x = screen_scale_w(16, screen_scale_factor_w) | 
			
		
	
		
			
				
					|  |  |  |  | text_surface_y = screen_scale_h(16, screen_scale_factor_h) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | level_text_surface = my_font.render("Level: " + str(game_level), False, TEXT_COLOR) | 
			
		
	
		
			
				
					|  |  |  |  | level_text_surface_x = screen_scale_factor * 16 | 
			
		
	
		
			
				
					|  |  |  |  | level_text_surface_y = screen_scale_factor * 48 | 
			
		
	
		
			
				
					|  |  |  |  | level_text_surface_x = screen_scale_w(16, screen_scale_factor_w) | 
			
		
	
		
			
				
					|  |  |  |  | level_text_surface_y = screen_scale_h(48, screen_scale_factor_h) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | snowman_list = [] | 
			
		
	
		
			
				
					|  |  |  |  | cakeman_list = [] | 
			
		
	
	
		
			
				
					|  |  |  | @ -71,7 +81,7 @@ class CakeMan(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |         super().__init__() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.image.load("kagemand/kagemand1.png").convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect = self.image.get_rect() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.transform.smoothscale(self.image, (self.rect.w * screen_scale_factor, self.rect.h * screen_scale_factor) ) | 
			
		
	
		
			
				
					|  |  |  |  |         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))) | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (x, y) | 
			
		
	
		
			
				
					|  |  |  |  |         self.animation_step = 0 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -83,7 +93,7 @@ class Reindeer(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |         super().__init__() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.image.load("reindeer/r1.png").convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect = self.image.get_rect() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.transform.smoothscale(self.image, (self.rect.w * screen_scale_factor, self.rect.h * screen_scale_factor) ) | 
			
		
	
		
			
				
					|  |  |  |  |         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) )) | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (x, y) | 
			
		
	
		
			
				
					|  |  |  |  |         self.speed = 180 | 
			
		
	
		
			
				
					|  |  |  |  |         self.shoot_laser_beam = self.speed | 
			
		
	
	
		
			
				
					|  |  |  | @ -106,7 +116,7 @@ class Snowman(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |         super().__init__()  | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.image.load("snowmand.png").convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect = self.image.get_rect() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.transform.smoothscale(self.image, (self.rect.w * screen_scale_factor, self.rect.h * screen_scale_factor) ) | 
			
		
	
		
			
				
					|  |  |  |  |         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))) | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (x, y) | 
			
		
	
		
			
				
					|  |  |  |  |         self.speed = 180 | 
			
		
	
		
			
				
					|  |  |  |  |         self.throw_snowball_counter = self.speed | 
			
		
	
	
		
			
				
					|  |  |  | @ -130,7 +140,7 @@ class Enemy(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect = self.image.get_rect() | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (x, y) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.transform.smoothscale(self.image, (self.rect.w * screen_scale_factor, self.rect.h * screen_scale_factor) ) | 
			
		
	
		
			
				
					|  |  |  |  |         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) )) | 
			
		
	
		
			
				
					|  |  |  |  |          | 
			
		
	
		
			
				
					|  |  |  |  |         self.health_bar_color = GREEN | 
			
		
	
		
			
				
					|  |  |  |  |         self.health_bar_width = 0 | 
			
		
	
	
		
			
				
					|  |  |  | @ -139,7 +149,7 @@ class Enemy(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |         self.health = self.max_health | 
			
		
	
		
			
				
					|  |  |  |  |         self.alive = 1 | 
			
		
	
		
			
				
					|  |  |  |  |         self.heart = heart | 
			
		
	
		
			
				
					|  |  |  |  |         self.speed = 2 *screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  |         self.speed = screen_scale_w(2, screen_scale_factor_w) | 
			
		
	
		
			
				
					|  |  |  |  |         self.calculate_life_bar() | 
			
		
	
		
			
				
					|  |  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |  |       def damage(self, amount): | 
			
		
	
	
		
			
				
					|  |  |  | @ -169,47 +179,47 @@ class Enemy(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       def move(self, player): | 
			
		
	
		
			
				
					|  |  |  |  |         if (self.path == 0): | 
			
		
	
		
			
				
					|  |  |  |  |             if (self.rect.right < 300 *screen_scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |             if (self.rect.right < screen_scale_w(300, screen_scale_factor_w)): | 
			
		
	
		
			
				
					|  |  |  |  |                 self.rect.move_ip(self.speed,0) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.path = 1 | 
			
		
	
		
			
				
					|  |  |  |  |         if (self.path == 1): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.bottom < 890 *screen_scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.bottom < screen_scale_h(890, screen_scale_factor_h)): | 
			
		
	
		
			
				
					|  |  |  |  |                 self.rect.move_ip(0,self.speed) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.path = 2 | 
			
		
	
		
			
				
					|  |  |  |  |         if(self.path == 2): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.right < 1128 *screen_scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.right < screen_scale_w(1128, screen_scale_factor_w)): | 
			
		
	
		
			
				
					|  |  |  |  |                 self.rect.move_ip(self.speed,0) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.path = 3 | 
			
		
	
		
			
				
					|  |  |  |  |         if (self.path == 3): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.top > 516*screen_scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.top > screen_scale_h(516, screen_scale_factor_h)): | 
			
		
	
		
			
				
					|  |  |  |  |                 self.rect.move_ip(0,-self.speed) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.path = 4 | 
			
		
	
		
			
				
					|  |  |  |  |         if (self.path == 4): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.left > 847*screen_scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.left > screen_scale_w(847, screen_scale_factor_w)): | 
			
		
	
		
			
				
					|  |  |  |  |                 self.rect.move_ip(-self.speed,0) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.path = 5 | 
			
		
	
		
			
				
					|  |  |  |  |         if (self.path == 5): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.top > 246*screen_scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |             if(self.rect.top > screen_scale_h(246, screen_scale_factor_h)): | 
			
		
	
		
			
				
					|  |  |  |  |                 self.rect.move_ip(0,-self.speed) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.path = 6 | 
			
		
	
		
			
				
					|  |  |  |  |         if (self.path == 6): | 
			
		
	
		
			
				
					|  |  |  |  |             if (self.rect.right < 1248*screen_scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |             if (self.rect.right < screen_scale_w(1248, screen_scale_factor_w)): | 
			
		
	
		
			
				
					|  |  |  |  |                 self.rect.move_ip(self.speed,0) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.path = 7 | 
			
		
	
		
			
				
					|  |  |  |  |         if (self.path == 7): | 
			
		
	
		
			
				
					|  |  |  |  |             if (self.rect.bottom < 570*screen_scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |             if (self.rect.bottom < screen_scale_h(570, screen_scale_factor_h)): | 
			
		
	
		
			
				
					|  |  |  |  |                 self.rect.move_ip(0,self.speed) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.path = 8 | 
			
		
	
		
			
				
					|  |  |  |  |         if (self.path == 8): | 
			
		
	
		
			
				
					|  |  |  |  |             if (self.rect.right < 1548*screen_scale_factor): | 
			
		
	
		
			
				
					|  |  |  |  |             if (self.rect.right < screen_scale_w(1548, screen_scale_factor_w)): | 
			
		
	
		
			
				
					|  |  |  |  |                 self.rect.move_ip(self.speed,0) | 
			
		
	
		
			
				
					|  |  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |  |                 self.path = 'end' | 
			
		
	
	
		
			
				
					|  |  |  | @ -219,8 +229,7 @@ class Enemy(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       def draw(self, surface): | 
			
		
	
		
			
				
					|  |  |  |  |         surface.blit(self.image, self.rect)  | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         pygame.draw.rect(DISPLAYSURF,self.health_bar_color,(self.rect.x, (self.rect.y + self.rect.h + 8), self.health_bar_width  * screen_scale_factor , 5 * screen_scale_factor )) | 
			
		
	
		
			
				
					|  |  |  |  |         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) )) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | class Snowball(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |       def __init__(self, x, y): | 
			
		
	
	
		
			
				
					|  |  |  | @ -305,17 +314,17 @@ class MenuSnowman(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |         super().__init__()  | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.image.load("snowmand.png").convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect = self.image.get_rect() | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (screen_scale_factor * 580, screen_scale_factor * 80) | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.transform.smoothscale(self.image, (self.rect.w * screen_scale_factor, self.rect.h * screen_scale_factor) ) | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (screen_scale_w(580, screen_scale_factor_w), screen_scale_h(80, screen_scale_factor_h)) | 
			
		
	
		
			
				
					|  |  |  |  |         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)) ) | 
			
		
	
		
			
				
					|  |  |  |  |         self.price = 2500 | 
			
		
	
		
			
				
					|  |  |  |  |         self.text = my_font.render(str(self.price) , False, TEXT_COLOR) | 
			
		
	
		
			
				
					|  |  |  |  |         self.selected = 0 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def draw(self, surface): | 
			
		
	
		
			
				
					|  |  |  |  |         if self.selected == 1: | 
			
		
	
		
			
				
					|  |  |  |  |             pygame.draw.rect(DISPLAYSURF,BLUE,(menu_snowman.rect.x - MENU_PADDING , menu_snowman.rect.y - MENU_PADDING, (menu_snowman.rect.w + 2 * MENU_PADDING) * screen_scale_factor , (menu_snowman.rect.h + 2 * MENU_PADDING)* screen_scale_factor )) | 
			
		
	
		
			
				
					|  |  |  |  |             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 ))) | 
			
		
	
		
			
				
					|  |  |  |  |         surface.blit(self.image, self.rect) | 
			
		
	
		
			
				
					|  |  |  |  |         surface.blit(self.text,(self.rect.x, self.rect.y + (100 * screen_scale_factor))) | 
			
		
	
		
			
				
					|  |  |  |  |         surface.blit(self.text,(self.rect.x, self.rect.y + (screen_scale_h(100, screen_scale_factor_h)))) | 
			
		
	
		
			
				
					|  |  |  |  |      | 
			
		
	
		
			
				
					|  |  |  |  |     def get_pos(self): | 
			
		
	
		
			
				
					|  |  |  |  |         return self.rect.pos | 
			
		
	
	
		
			
				
					|  |  |  | @ -326,17 +335,17 @@ class MenuCakeman(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.image.load("kagemand/kagemand1.png").convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect = self.image.get_rect() | 
			
		
	
		
			
				
					|  |  |  |  |         #self.rect.scale_by(screen_scale_factor)  | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (screen_scale_factor * 720, screen_scale_factor * 80) | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.transform.smoothscale(self.image, (self.rect.w * screen_scale_factor, self.rect.h * screen_scale_factor) ) | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (screen_scale_w(720, screen_scale_factor_w), screen_scale_h(80, screen_scale_factor_h)) | 
			
		
	
		
			
				
					|  |  |  |  |         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)) ) | 
			
		
	
		
			
				
					|  |  |  |  |         self.price = 5000 | 
			
		
	
		
			
				
					|  |  |  |  |         self.text = my_font.render(str(self.price) , False, TEXT_COLOR) | 
			
		
	
		
			
				
					|  |  |  |  |         self.selected = 0 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def draw(self, surface): | 
			
		
	
		
			
				
					|  |  |  |  |         if self.selected == 1: | 
			
		
	
		
			
				
					|  |  |  |  |             pygame.draw.rect(DISPLAYSURF,BLUE,(menu_cakeman.rect.x - MENU_PADDING, menu_cakeman.rect.y - MENU_PADDING, (menu_cakeman.rect.w + 2 * MENU_PADDING) *screen_scale_factor, (menu_cakeman.rect.h + 2 * MENU_PADDING) * screen_scale_factor )) | 
			
		
	
		
			
				
					|  |  |  |  |             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) )) | 
			
		
	
		
			
				
					|  |  |  |  |         surface.blit(self.image, self.rect) | 
			
		
	
		
			
				
					|  |  |  |  |         surface.blit(self.text,(self.rect.x ,self.rect.y + (100 * screen_scale_factor) )) | 
			
		
	
		
			
				
					|  |  |  |  |         surface.blit(self.text,(self.rect.x ,self.rect.y + (screen_scale_h(100, screen_scale_factor_h)) )) | 
			
		
	
		
			
				
					|  |  |  |  |      | 
			
		
	
		
			
				
					|  |  |  |  |     def get_pos(self): | 
			
		
	
		
			
				
					|  |  |  |  |         return self.rect.pos | 
			
		
	
	
		
			
				
					|  |  |  | @ -346,42 +355,42 @@ class MenuReindeer(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |         super().__init__()  | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.image.load("reindeer/r1.png").convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect = self.image.get_rect() | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (screen_scale_factor * 850, screen_scale_factor * 80) | 
			
		
	
		
			
				
					|  |  |  |  |         self.image = pygame.transform.smoothscale(self.image, (self.rect.w * screen_scale_factor, self.rect.h * screen_scale_factor) ) | 
			
		
	
		
			
				
					|  |  |  |  |         self.rect.center = (screen_scale_w(850, screen_scale_factor_w), screen_scale_h(80, screen_scale_factor_h)) | 
			
		
	
		
			
				
					|  |  |  |  |         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)) ) | 
			
		
	
		
			
				
					|  |  |  |  |         self.price = 7500 | 
			
		
	
		
			
				
					|  |  |  |  |         self.text = my_font.render(str(self.price) , False, TEXT_COLOR) | 
			
		
	
		
			
				
					|  |  |  |  |         self.selected = 0 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def draw(self, surface): | 
			
		
	
		
			
				
					|  |  |  |  |         if self.selected == 1: | 
			
		
	
		
			
				
					|  |  |  |  |             pygame.draw.rect(DISPLAYSURF,BLUE,(self.rect.x - MENU_PADDING , self.rect.y - MENU_PADDING, (self.rect.w + 2 * MENU_PADDING) * screen_scale_factor , (self.rect.h + 2 * MENU_PADDING)* screen_scale_factor )) | 
			
		
	
		
			
				
					|  |  |  |  |             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 ))) | 
			
		
	
		
			
				
					|  |  |  |  |         surface.blit(self.image, self.rect) | 
			
		
	
		
			
				
					|  |  |  |  |         surface.blit(self.text,(self.rect.x + (20* screen_scale_factor), self.rect.y + (100 * screen_scale_factor))) | 
			
		
	
		
			
				
					|  |  |  |  |         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)))) | 
			
		
	
		
			
				
					|  |  |  |  |      | 
			
		
	
		
			
				
					|  |  |  |  |     def get_pos(self): | 
			
		
	
		
			
				
					|  |  |  |  |         return self.rect.pos | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | scaleFactor = 2 * screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  | scaleFactor = 2 * screen_scale_factor_w | 
			
		
	
		
			
				
					|  |  |  |  | class Heart(pygame.sprite.Sprite): | 
			
		
	
		
			
				
					|  |  |  |  |     def __init__(self): | 
			
		
	
		
			
				
					|  |  |  |  |         super().__init__() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image0 = pygame.image.load('0_hjerte.png').convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         self.image20 = pygame.image.load('20_hjerte.png').convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image20 = pygame.transform.scale(self.image20, (74 * scaleFactor, 79 * scaleFactor)) | 
			
		
	
		
			
				
					|  |  |  |  |         self.image20 = pygame.transform.scale(self.image20, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         self.image40 = pygame.image.load('40_hjerte.png').convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image40 = pygame.transform.scale(self.image40, (74 * scaleFactor, 79 * scaleFactor)) | 
			
		
	
		
			
				
					|  |  |  |  |         self.image40 = pygame.transform.scale(self.image40, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         self.image60 = pygame.image.load('60_hjerte.png').convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image60 = pygame.transform.scale(self.image60, (74 * scaleFactor, 79 * scaleFactor)) | 
			
		
	
		
			
				
					|  |  |  |  |         self.image60 = pygame.transform.scale(self.image60, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         self.image80 = pygame.image.load('80_hjerte.png').convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image80 = pygame.transform.scale(self.image80, (74 * scaleFactor, 79 * scaleFactor)) | 
			
		
	
		
			
				
					|  |  |  |  |         self.image80 = pygame.transform.scale(self.image80, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         self.image100 = pygame.image.load('100_hjerte.png').convert_alpha() | 
			
		
	
		
			
				
					|  |  |  |  |         self.image100 = pygame.transform.scale(self.image100, (74 * scaleFactor, 79 * scaleFactor)) | 
			
		
	
		
			
				
					|  |  |  |  |         self.image100 = pygame.transform.scale(self.image100, (screen_scale_w(74, scaleFactor), screen_scale_h(79, scaleFactor))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         self.lives = 100 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -443,12 +452,13 @@ def level_up(): | 
			
		
	
		
			
				
					|  |  |  |  | heart = Heart() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | def start_new_level(count, health): | 
			
		
	
		
			
				
					|  |  |  |  |     global screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  |     global screen_scale_factor_w | 
			
		
	
		
			
				
					|  |  |  |  |     global screen_scale_factor_h | 
			
		
	
		
			
				
					|  |  |  |  |     global enemy_list | 
			
		
	
		
			
				
					|  |  |  |  |     global heart | 
			
		
	
		
			
				
					|  |  |  |  |     enemy_list = [] | 
			
		
	
		
			
				
					|  |  |  |  |     enemy_pos_x = 60 * screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  |     enemy_pos_y = 350* screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  |     enemy_pos_x = screen_scale_w(60, screen_scale_factor_w) | 
			
		
	
		
			
				
					|  |  |  |  |     enemy_pos_y = screen_scale_h(350, screen_scale_factor_h) | 
			
		
	
		
			
				
					|  |  |  |  |     for i in range(count): | 
			
		
	
		
			
				
					|  |  |  |  |         enemy_list.append(Enemy(-enemy_pos_x * i, enemy_pos_y, heart, health)) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -475,8 +485,8 @@ menu_reindeer = MenuReindeer() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | enemy_pos_x = 60 * screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  | enemy_pos_y = 350* screen_scale_factor | 
			
		
	
		
			
				
					|  |  |  |  | enemy_pos_x = screen_scale_w(60, screen_scale_factor_w) | 
			
		
	
		
			
				
					|  |  |  |  | enemy_pos_y = screen_scale_h(350, screen_scale_factor_h) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | start_new_level(5, 100) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -496,7 +506,7 @@ kagemand_animation_temp = [ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | for animation_image in kagemand_animation_temp: | 
			
		
	
		
			
				
					|  |  |  |  |     img_rect = animation_image.get_rect() | 
			
		
	
		
			
				
					|  |  |  |  |     animation_image_new = pygame.transform.smoothscale(animation_image, (img_rect.w * screen_scale_factor, img_rect.h * screen_scale_factor) ) | 
			
		
	
		
			
				
					|  |  |  |  |     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)) ) | 
			
		
	
		
			
				
					|  |  |  |  |     kagemand_animation.append(animation_image_new) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |