ClearCode

tiled_code

Apr 23rd, 2022 (edited)
2,955
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.71 KB | None | 1 0
  1. import pygame, sys
  2. from pytmx.util_pygame import load_pygame
  3.  
  4. class Tile(pygame.sprite.Sprite):
  5.     def __init__(self,pos,surf,groups):
  6.         super().__init__(groups)
  7.         self.image = surf
  8.         self.rect = self.image.get_rect(topleft = pos)
  9.  
  10. pygame.init()
  11. screen = pygame.display.set_mode((1280,720))
  12. tmx_data = load_pygame('../data/tmx/basic.tmx')
  13. sprite_group = pygame.sprite.Group()
  14.  
  15. # cycle through all layers
  16. for layer in tmx_data.visible_layers:
  17.     # if layer.name in ('Floor', 'Plants and rocks', 'Pipes')
  18.     if hasattr(layer,'data'):
  19.         for x,y,surf in layer.tiles():
  20.             pos = (x * 128, y * 128)
  21.             Tile(pos = pos, surf = surf, groups = sprite_group)
  22.  
  23. for obj in tmx_data.objects:
  24.     pos = obj.x,obj.y
  25.     if obj.type in ('Building', 'Vegetation'):
  26.         Tile(pos = pos, surf = obj.image, groups = sprite_group)
  27.  
  28.  
  29.  
  30.  
  31. # get layers
  32. # print(tmx_data.layers) # get all layers
  33. # for layer in tmx_data.visible_layers: # get visible layers
  34. #   print(layer)
  35.  
  36. # print(tmx_data.layernames) # get all layer names as dict
  37.  
  38. # print(tmx_data.get_layer_by_name('Floor')) # get one layer by name
  39.  
  40. # for obj in tmx_data.objectgroups: # get object layers
  41. #   print(obj)
  42.  
  43. # get tiles
  44. # layer = tmx_data.get_layer_by_name('Floor')
  45. # for x,y,surf in layer.tiles(): # get all the information
  46. #   print(x * 128)
  47. #   print(y * 128)
  48. #   print(surf)
  49.  
  50. # print(layer.data)
  51.  
  52. # print(layer.name)
  53. # print(layer.id)
  54.  
  55. # get objects
  56. # object_layer = tmx_data.get_layer_by_name('Objects')
  57. # for obj in object_layer:
  58. #   # print(obj.x)
  59. #   # print(obj.y)
  60. #   # print(obj.image)
  61. #   if obj.type == 'Shape':
  62.         # if obj.name == 'Marker':
  63.         #   print(obj.x)
  64.         #   print(obj.y)
  65.         # if obj.name == 'Rectangle':
  66.         #   print(obj.x)
  67.         #   print(obj.y)
  68.         #   print(obj.width)
  69.         #   print(obj.height)
  70.         #   print(obj.as_points)
  71.  
  72.         # if obj.name == 'Ellipse':
  73.         #   print(dir(obj))
  74.  
  75.         # if obj.name == 'Polygon':
  76.         #   print(obj.as_points)
  77.         #   print(obj.points)
  78.  
  79. # for obj in tmx_data.objects:
  80. #   print(obj)
  81.  
  82. while True:
  83.     for event in pygame.event.get():
  84.         if event.type == pygame.QUIT:
  85.             pygame.quit()
  86.             sys.exit()
  87.  
  88.     screen.fill('black')
  89.     sprite_group.draw(screen)
  90.    
  91.     for obj in tmx_data.objects:
  92.         pos = obj.x,obj.y
  93.         if obj.type == 'Shape':
  94.             if obj.name == 'Marker':
  95.                 pygame.draw.circle(screen,'red',(obj.x,obj.y),5)
  96.             if obj.name == 'Rectangle':
  97.                 rect = pygame.Rect(obj.x,obj.y,obj.width,obj.height)
  98.                 pygame.draw.rect(screen,'yellow',rect)
  99.  
  100.             if obj.name == 'Ellipse':
  101.                 rect = pygame.Rect(obj.x,obj.y,obj.width,obj.height)
  102.                 pygame.draw.ellipse(screen,'blue',rect)
  103.  
  104.             if obj.name == 'Polygon':
  105.                 points = [(point.x,point.y) for point in obj.points]
  106.                 pygame.draw.polygon(screen,'green',points)
  107.    
  108.     pygame.display.update()
Add Comment
Please, Sign In to add comment