import pygame as pg import random as rd from OpenGL.GL import * pg.init() bg = (30,30,30) white = (255,255,255) black = (0,0,0) pg.font.init() sysfont = pg.font.Font("LeagueGothic-Regular.otf", 30) sw = 960 sh = 540 gridsize = 50 wall1img = pg.image.load("wall1.png") floor1img = pg.image.load("floor1.png") class character: def __init__(self, gridlength, grid): self.x = 0 self.y = 0 self.charimg = pg.image.load("samplechar.png") def draw(self, window): self.char = window.blit(self.charimg, (self.x * gridsize, self.y * gridsize)) def drawgrid(gridlength): grid = [] for y in range(gridlength): grid.append([]) for x in range(gridlength): grid[y].append("X") return grid def display(window, grid, character): pg.draw.rect(window, bg, (0, 0, sw, sh)) sample = sysfont.render("testing 1234567890", True, white) window.blit(sample, (0,0)) for y in range(len(grid)): for x in range(len(grid[y])): if grid[y][x] == "@": #main char character.draw(window) elif grid[y][x] == "O": #wall window.blit(wall1img, (x * gridsize, y * gridsize)) elif grid[y][x] == ".": window.blit(floor1img, (x * gridsize, y * gridsize)) pg.display.update() def mapgen(grid, gridlength, character, level): #initialize character # cx, cy= rd.randint(0, gridlength-1), rd.randint(0, gridlength-1) # grid[cy][cx] = "@" # character.x, character.y = cx, cy #init rooms #set number of rooms depending on level roomcount = rd.randint(5+level, 10+level) #create room but only when its not occupied occupied = True for y in range(roomcount): while occupied: #top left and bottom right r1 = [rd.randint(0, gridlength-12), rd.randint(0, gridlength-12)] r2 = [rd.randint(r1[0]+4, r1[0]+10), rd.randint(r1[1]+4, r1[1]+10)] occupied = False for y in range(r1[1], r2[1]+1): for x in range(r1[0], r2[0]+1): if grid[y][x] != "X": occupied = True for y in range(r1[1], r2[1] + 1): for x in range(r1[0], r2[0] + 1): grid[y][x] = "." if y == r1[1] or y == r2[1]: grid[y][x] = "O" if x == r1[0] or x == r2[0]: grid[y][x] = "O" occupied = True def main(): window = pg.display.set_mode((sw,sh)) gridlength = 35 level = 1 grid = drawgrid(gridlength + level) samplechar = character(gridlength, grid) mapgen(grid, gridlength, samplechar, level) for i in grid: print(*i) run = True while run: for event in pg.event.get(): if event.type == pg.QUIT: pg.quit() quit() elif event.type == pg.MOUSEBUTTONDOWN: if event.button == 4: glScaled(1.2,1.2,1.2); elif event.button == 5: glScaled(0.8,0.8,0.8); display(window, grid, samplechar) if __name__ == "__main__": main()