Advertisement
AtEchoOff

Untitled

Jul 29th, 2024
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1.  
  2.  
  3. Level.py
  4. import pygame, random
  5. from tile import *
  6.  
  7.  
  8. class Level(pygame.sprite.Sprite):
  9. def __init__(self, player):
  10. super().__init__()
  11. # groups
  12. self.walls = pygame.sprite.Group()
  13. self.floor = pygame.sprite.Group()
  14. # self.enemies = pygame.sprite.Group()
  15. # self.messages = pygame.sprite.Group()
  16. # self.player = player
  17. # self.chest = Chest("images/chest.gif", (0, 0))
  18. # self.walls.add(self.chest)
  19. # self.start_pos = (0, 0)
  20. # self.end_pos = (0, 0)
  21. # self.exit = None
  22. # self.start = None
  23.  
  24. def draw(self, screen):
  25. self.floor.draw(screen)
  26. # self.enemies.draw(screen)
  27. # self.player.draw(screen)
  28. self.walls.draw(screen)
  29. # self.messages.draw(screen)
  30.  
  31.  
  32. class RandomLevel(Level):
  33. def __init__(self, player, images, mult, enemy_num):
  34. super().__init__(player)
  35.  
  36. self.generate_level(images, mult, enemy_num)
  37.  
  38. def draw(self, screen):
  39. super().draw(screen)
  40. def generate_level(self, images, mult, enemy_num):
  41. screen_info = pygame.display.Info()
  42. game_map = []
  43. # initialize entire map to walls
  44. for i in range((screen_info.current_w // 32) + 1):
  45. game_map.append(["w"] * ((screen_info.current_h // 32) + 1))
  46. # calculate amount of tiles to convert into floor tiles
  47. # print(game_map)
  48. fnum = int((len(game_map) * len(game_map[0])) * mult)
  49. # current number of floor tiles
  50. count = 0
  51. # starting tile for dungeon generation
  52. tile = [len(game_map) // 2, len(game_map[0]) // 2]
  53. while count < fnum:
  54. if game_map[tile[0]][tile[1]] != "f":
  55. game_map[tile[0]][tile[1]] = "f"
  56. count += 1
  57. move = random.randint(1, 4)
  58. if move == 1 and tile[0] > 1: # move north
  59. tile[0] -= 1
  60. elif move == 2 and tile[0] < (len(game_map) - 3): # move south
  61. tile[0] += 1
  62. elif move == 3 and tile[1] < (len(game_map[0]) - 3): # move east
  63. tile[1] += 1
  64. elif move == 4 and tile[1] > 1: # move west
  65. tile[1] -= 1
  66. # create tiles based on the contents of the map list
  67. for i in range(len(game_map)):
  68. for j in range(len(game_map[i])):
  69. if game_map[i][j] == "w":
  70. self.walls.add(Tile(images["w"], (i * 32, j * 32)))
  71. elif game_map[i][j] == "f":
  72. self.floor.add(Tile(images["f"], (i * 32, j * 32)))
  73. # elif game_map[i][j] == "s":
  74. # self.start = Door(images["s"], (i * 32, j * 32), True)
  75. # self.walls.add(self.start)
  76. # elif game_map[i][j] == "e":
  77. # self.exit = Door(images["e"], (i * 32, j * 32), False)
  78. # self.walls.add(self.exit)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement