title: Pygame - Scaling Image
body: <p>I'm making the program, that blits the 2D array as 2D map of tiles. The <em>self.tile_size</em> variable is used to scale the tile image that will be blit.
  I want the <em>Q</em> to make it smaller, and <em>E</em> to make it bigger. The problem is, that output in in pygame window is not what i wanted. The image in link shows what happened, when i ran a program and tried to make image bigger. <a href="https://i.stack.imgur.com/zbM8U.png" rel="nofollow noreferrer">Image of output</a></p>
  
  <p>Here's my code: </p>
  
  <pre><code>import pygame
  from pygame.locals import *
  pygame.init()
  
  import math, sys, os, random, time
  
  from a_star import *
  
  tiles_list = [
      pygame.image.load('Floor.png'),
      pygame.image.load('Wall.png'),
      ]
  
  PLAN_W = 20
  PLAN_H = 20
  
  PLAN_STATUS = [[True for i in range(PLAN_W)]for j in range(PLAN_H)]
  
  OBSTACLES = [
      [0,0],
      [0,1],
      [0,2]]
  
  obsta(OBSTACLES, PLAN_STATUS) # function imported from a_star that change PLAN_STATUS cells from OBSTACLES to False
  
  
  class World():
      def __init__(self):
          self.screen_width = 800
          self.screen_height = 600
  
          self.screen = pygame.display.set_mode((self.screen_width, self.screen_height))
          self.clock = pygame.time.Clock()
  
          self.bg_color = (255,255,255)
  
          self.tile_size = 48
  
          self.map_status = PLAN_STATUS
  
          self.tiles_list = tiles_list
  
          self.scale_change = 0
  
          self.run()
  
      def scale_tiles(self):
          print(self.tile_size)
          self.new_list = []
          for i in self.tiles_list:
              i = pygame.transform.scale(i, (self.tile_size, self.tile_size))
              self.new_list.append(i)
          self.tiles_list = self.new_list
  
      def render_map(self):
          print(self.tile_size)
          '''
          self.screen.fill(self.bg_color)
          for x in range(PLAN_H):
              for y in range(PLAN_W):
                  if self.map_status[y][x]:
                      tile = self.tiles_list[0]
                  elif not self.map_status[y][x]:
                      tile = self.tiles_list[1]
  
                  self.screen.blit(tile, (x*self.tile_size, y*self.tile_size))
  '''
  
          self.screen.blit(self.tiles_list[0], (400, 300))
  
      def run(self):
          while True:
  
  
              self.events = pygame.event.get()
              self.keys = pygame.key.get_pressed()
              self.mouse_pos = pygame.mouse.get_pos()
              self.mouse_but = pygame.mouse.get_pressed()
  
              #UPDATE
              self.screen.fill(self.bg_color)
  
              #self.scale_tiles()
              self.render_map()
  
              pygame.display.flip()
  
              #EVENTS
              if self.keys[ord('e')] == 1:
                  self.tile_size += 1
                  self.scale_tiles()
              if self.keys[ord('q')] == 1:
                  self.tile_size -= 1
                  self.scale_tiles()
  
  
              '''for event in pygame.event.get():
                  if event.type == pygame.KEYDOWN:
                      if event.key == pygame.K_q:
                          print('q')
                          self.scale_change = -1
                      if event.key == pygame.K_e:
                          print('e')
                          self.scale_change = 1
                  if event.type == pygame.KEYUP:
                      if event.key == pygame.K_q or event.key == pygame.K_e:
                          print('stopped key')
                          self.scale_change = 0'''
  
  
  
              self.clock.tick(50)
  
  if __name__=="__main__":
      main = World()
  </code></pre>
  
  <p>Where's the problem in my code?
  Thank you for the help</p>
  
  <p><a href="https://i.stack.imgur.com/mh8Q5.png" rel="nofollow noreferrer">Floor.png</a></p>