Facebook
From Gamboge Gibbon, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 152
  1. import pygame as pg
  2. import random as rd
  3. from OpenGL.GL import *
  4.  
  5. pg.init()
  6. bg = (30,30,30)
  7. white = (255,255,255)
  8. black = (0,0,0)
  9.  
  10. pg.font.init()
  11. sysfont = pg.font.Font("LeagueGothic-Regular.otf", 30)
  12.  
  13. sw = 960
  14. sh = 540
  15.  
  16. gridsize = 50
  17.  
  18. wall1img = pg.image.load("wall1.png")
  19. floor1img = pg.image.load("floor1.png")
  20.  
  21. class character:
  22.     def __init__(self, gridlength, grid):
  23.         self.x = 0
  24.         self.y = 0
  25.         self.charimg = pg.image.load("samplechar.png")
  26.  
  27.     def draw(self, window):
  28.         self.char = window.blit(self.charimg, (self.x * gridsize, self.y * gridsize))
  29.  
  30. def drawgrid(gridlength):
  31.     grid = []
  32.     for y in range(gridlength):
  33.         grid.append([])
  34.         for x in range(gridlength):
  35.             grid[y].append("X")
  36.     return grid
  37.  
  38. def display(window, grid, character):
  39.     pg.draw.rect(window, bg, (0, 0, sw, sh))
  40.     sample = sysfont.render("testing 1234567890", True, white)
  41.     window.blit(sample, (0,0))
  42.  
  43.     for y in range(len(grid)):
  44.         for x in range(len(grid[y])):
  45.             if grid[y][x] == "@": #main char
  46.                 character.draw(window)
  47.             elif grid[y][x] == "O": #wall
  48.                 window.blit(wall1img, (x * gridsize, y * gridsize))
  49.             elif grid[y][x] == ".":
  50.                 window.blit(floor1img, (x * gridsize, y * gridsize))
  51.  
  52.     pg.display.update()
  53.  
  54. def mapgen(grid, gridlength, character, level):
  55.     #initialize character
  56.     # cx, cy= rd.randint(0, gridlength-1), rd.randint(0, gridlength-1)
  57.     # grid[cy][cx] = "@"
  58.     # character.x, character.y = cx, cy
  59.  
  60.     #init rooms
  61.     #set number of rooms depending on level
  62.     roomcount = rd.randint(5+level, 10+level)
  63.     #create room but only when its not occupied
  64.     occupied = True
  65.     for y in range(roomcount):
  66.         while occupied:
  67.             #top left and bottom right
  68.             r1 = [rd.randint(0, gridlength-12), rd.randint(0, gridlength-12)]
  69.             r2 = [rd.randint(r1[0]+4, r1[0]+10), rd.randint(r1[1]+4, r1[1]+10)]
  70.             occupied = False
  71.             for y in range(r1[1], r2[1]+1):
  72.                 for x in range(r1[0], r2[0]+1):
  73.                     if grid[y][x] != "X":
  74.                         occupied = True
  75.         for y in range(r1[1], r2[1] + 1):
  76.             for x in range(r1[0], r2[0] + 1):
  77.                 grid[y][x] = "."
  78.                 if y == r1[1] or y == r2[1]:
  79.                     grid[y][x] = "O"
  80.                 if x == r1[0] or x == r2[0]:
  81.                     grid[y][x] = "O"
  82.         occupied = True
  83.  
  84.  
  85.  
  86. def main():
  87.     window = pg.display.set_mode((sw,sh))
  88.     gridlength = 35
  89.     level = 1
  90.     grid = drawgrid(gridlength + level)
  91.     samplechar = character(gridlength, grid)
  92.     mapgen(grid, gridlength, samplechar, level)
  93.  
  94.     for i in grid:
  95.         print(*i)
  96.  
  97.     run = True
  98.     while run:
  99.         for event in pg.event.get():
  100.             if event.type == pg.QUIT:
  101.                 pg.quit()
  102.                 quit()
  103.             elif event.type == pg.MOUSEBUTTONDOWN:
  104.                 if event.button == 4:
  105.                     glScaled(1.2,1.2,1.2);
  106.                 elif event.button == 5:
  107.                     glScaled(0.8,0.8,0.8);
  108.  
  109.         display(window, grid, samplechar)
  110.  
  111. if __name__ == "__main__":
  112.     main()