Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ########################## Level.py #########################
- import pygame, random
- from tile import *
- class Level(pygame.sprite.Sprite):
- def __init__(self, player):
- super().__init__()
- # groups
- self.walls = pygame.sprite.Group()
- self.floor = pygame.sprite.Group()
- def draw(self, screen):
- self.floor.draw(screen)
- self.walls.draw(screen)
- class RandomLevel(Level):
- def __init__(self, player, images, mult, enemy_num):
- super().__init__(player)
- self.generate_level(images, mult, enemy_num)
- def draw(self, screen):
- super().draw(screen)
- def generate_level(self, images, mult, enemy_num):
- screen_info = pygame.display.Info()
- game_map = []
- # initialize entire map to walls
- for i in range((screen_info.current_w // 32) + 1):
- game_map.append(["w"] * ((screen_info.current_h // 32) + 1))
- # calculate amount of tiles to convert into floor tiles
- # print(game_map)
- fnum = int((len(game_map) * len(game_map[0])) * mult)
- # current number of floor tiles
- count = 0
- # starting tile for dungeon generation
- tile = [len(game_map) // 2, len(game_map[0]) // 2]
- while count < fnum:
- if game_map[tile[0]][tile[1]] != "f":
- game_map[tile[0]][tile[1]] = "f"
- count += 1
- move = random.randint(1, 4)
- if move == 1 and tile[0] > 1: # move north
- tile[0] -= 1
- elif move == 2 and tile[0] < (len(game_map) - 3): # move south
- tile[0] += 1
- elif move == 3 and tile[1] < (len(game_map[0]) - 3): # move east
- tile[1] += 1
- elif move == 4 and tile[1] > 1: # move west
- tile[1] -= 1
- # create tiles based on the contents of the map list
- for i in range(len(game_map)):
- for j in range(len(game_map[i])):
- if game_map[i][j] == "w":
- self.walls.add(Tile(images["w"], (i * 32, j * 32)))
- elif game_map[i][j] == "f":
- self.floor.add(Tile(images["f"], (i * 32, j * 32)))
- ########################## main.py ##########################
- import pygame
- from pygame.locals import *
- from tile import *
- from level import *
- import sys
- pygame.init()
- size = (width, height) = (pygame.display.Info().current_w, pygame.display.Info().current_h)
- screen = pygame.display.set_mode(size)
- clock = pygame.time.Clock()
- color = (0, 0, 0)
- images = {"w": "images/tiles/wall12.gif", "f": "images/tiles/floor13.gif",
- "s": {True: "images/tiles/openDoor31.gif", False: "images/tiles/door31.gif"},
- "e": {True: "images/tiles/openDoor12.gif", False: "images/tiles/door12.gif"}}
- levels = []
- level_num = 0
- current_level = None
- font = pygame.font.SysFont('oldenglishtext', 32)
- debug = True
- def change_level(change):
- global level_num, current_level
- if change == 1:
- if level_num == len(levels) - 1:
- levels.append(RandomLevel(None, images, .5, 2 + 2 * level_num))
- level_num += 1
- current_level = levels[level_num]
- # player.up_level(current_level)
- elif change == -1:
- if level_num > 0:
- level_num -= 1
- current_level = levels[level_num]
- # player.back_level(current_level)
- def restart():
- global player, levels, level_num, current_level
- # player = Player("images/player/superhero.gif", (16, 16), False)
- levels = [RandomLevel(None, images, .5, 2)]
- level_num = 0
- current_level = levels[level_num]
- # player.up_level(current_level)
- def main():
- global screen, level_num, current_level
- # if not load_game():
- restart()
- # restart_pressed = False
- while True:
- clock.tick(60)
- for event in pygame.event.get():
- # save game and exit
- if event.type == QUIT:
- # save_game()
- sys.exit()
- if event.type == KEYDOWN:
- # confirm/ exit restart if triggered
- if restart_pressed:
- if event.key == K_RETURN:
- restart()
- restart_pressed = False
- elif event.key == K_ESCAPE:
- restart_pressed = False
- continue
- # screen controls
- if event.key == K_f:
- screen = pygame.display.set_mode(size, FULLSCREEN)
- elif event.key == K_ESCAPE:
- screen = pygame.display.set_mode(size)
- screen.fill(color)
- current_level.draw(screen)
- pygame.display.flip()
- if __name__ == "__main__":
- main()
- ########################## Tile.py ##########################
- import pygame
- class Tile(pygame.sprite.Sprite):
- def __init__(self, path, pos):
- super().__init__()
- self.path = path
- self.image = pygame.image.load(path)
- self.rect = self.image.get_rect()
- self.rect.topleft = pos
- def save(self):
- self.image = None
- def load(self):
- self.image = pygame.image.load(self.path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement