Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.47 KB | None | 0 0
  1. import pygame, sys, math
  2. from pygame.locals import *
  3.  
  4. from camera import Camera
  5.  
  6. pygame.init()
  7. mainClock = pygame.time.Clock()
  8.  
  9. WINDOWWIDTH = 800
  10. WINDOWHEIGHT = 600
  11. windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
  12. pygame.display.set_caption('Ude ga kento-chigai ni naru koto ga dekimasu')
  13.  
  14. moveSpeed = 4
  15.  
  16. BLACK = (0, 0, 0)
  17. WHITE = (255, 255, 255)
  18. GREEN = (0, 255, 0)
  19.  
  20. max = 60
  21.  
  22. posx = 400
  23. posy = 300
  24.  
  25. tileimage = pygame.image.load("20tile.png")
  26. playersprite = pygame.image.load("20tile.png")
  27.  
  28. class Object:
  29.     def __init__(self, x, y, image):
  30.         self.x = x
  31.         self.y = y
  32.         self.vx = 0
  33.         self.vy = 0
  34.         self.image = image
  35.         self.width = image.get_width()
  36.         self.height = image.get_height()
  37.         self.rect = pygame.Rect(self.x, self.y, self.height, self.height)
  38.         self.prevRect = self.rect
  39.     def draw(self, surface):
  40.         surface.blit(self.image, self.rect)
  41.     def update(self):
  42.         self.prevRect = pygame.Rect(self.x, self.y, self.width, self.height)
  43.         self.x += self.vx
  44.         self.y += self.vy
  45.         self.rect.topleft = (self.x, self.y)
  46.     def resolve(self):
  47.         self.x, self.y = self.rect.topleft
  48.        
  49.        
  50. class Player(Object):
  51.     def __init__(self, image):
  52.         Object.__init__(self, 400, 300, image)
  53.         self.UpFlag = 0
  54.         self.DownFlag = 0
  55.         self.RightFlag = 0
  56.         self.LeftFlag = 0
  57.        
  58.     def process_keys(self):
  59.         for event in pygame.event.get():
  60.             if event.type == QUIT:
  61.                 pygame.quit()
  62.                 sys.exit()
  63.  
  64.  
  65.             if event.type == KEYDOWN:
  66.                 if event.key == K_F11 or ((event.key == K_RALT or  event.key == K_LALT) and event.key == K_RETURN):
  67.                     pygame.display.toggle_fullscreen()
  68.                     print('SHOULD BE FULL')
  69.                 if event.key == K_ESCAPE:
  70.                     pygame.quit()
  71.                     sys.exit(1)
  72.                 if event.key == K_LEFT:
  73.                     self.LeftFlag += 1
  74.                 if event.key == K_RIGHT:
  75.                     self.RightFlag += 1
  76.                 if event.key == K_UP:
  77.                     self.UpFlag += 1
  78.                 if event.key == K_DOWN:
  79.                     self.DownFlag += 1
  80.            
  81.             elif event.type == KEYUP:
  82.                 if event.key == K_LEFT:
  83.                     self.LeftFlag = 0
  84.                 if event.key == K_RIGHT:
  85.                     self.RightFlag = 0
  86.                 if event.key == K_UP:
  87.                     self.UpFlag = 0
  88.                 if event.key == K_DOWN:
  89.                     self.DownFlag = 0
  90.     def move(self):
  91.         speed = 5
  92.         if self.LeftFlag >= 1:
  93.             self.vx = -speed
  94.         elif self.RightFlag >= 1:
  95.             self.vx =  speed
  96.         else:
  97.             self.vx = 0
  98.         if self.UpFlag >= 1:
  99.             self.vy = -speed
  100.         elif self.DownFlag >= 1:
  101.             self.vy = speed
  102.         else:
  103.             self.vy = 0
  104.        
  105.     def collide(self, tile):
  106.         if self.rect.colliderect(tile.rect):
  107.             if tile.rect.left >= self.prevRect.right:
  108.                 self.rect.right = tile.rect.left
  109.                 print(' tile left collision')
  110.             elif tile.rect.right <= self.prevRect.left:
  111.                     self.rect.left = tile.rect.right
  112.                     print(' tile right collision')
  113.             elif tile.rect.bottom <= self.prevRect.top:
  114.                     self.rect.top = tile.rect.bottom
  115.                     print(' tile bottom collision')
  116.             elif tile.rect.top >= self.prevRect.bottom:
  117.                     self.rect.bottom = tile.rect.top
  118.                     print(' tile top collision')
  119.  
  120.    
  121.  
  122. class Tile(Object):
  123.     def __init__(self, x, y, image):
  124.         Object.__init__(self, x, y, tileimage)
  125.  
  126. class Room:
  127.     def __init__(self, name):
  128.         self.name = name
  129.         self.tiles = [ [] ]
  130.         self.tilesize = tileimage.get_height()
  131.         lines = [ line for line in  open(self.name) if len(line) > 0 ]
  132.         self.height = len(lines)
  133.         self.width = len(sorted(lines, key=len)[-1]) - 1
  134.         self.camera = Camera(0,0)
  135.         for i in range(self.width):
  136.             self.tiles.append([])
  137.             for j in range(self.height):
  138.                 self.tiles[i].append(None)
  139.         for i in range(self.width):
  140.             for j in range(self.height):
  141.                 if lines[j][i] == "X":
  142.                     self.tiles[i][j] = Tile(i*self.tilesize, j*self.tilesize, tileimage)
  143.     def draw(self, surface):
  144.         for i in range(self.width):
  145.             for j in range(self.height):
  146.                 current = self.tiles[i][j]
  147.                 if current == None: continue
  148.                 self.tiles[i][j].draw(surface)
  149.     def update(self, player):
  150.         for i in range(self.width):
  151.             for j in range(self.height):
  152.                 if self.tiles[i][j] == None: continue
  153.                 player.collide(self.tiles[i][j])
  154.                 self.camera.set_position(player.x, player.y)
  155.                    
  156.        
  157. room1 = Room("map02.level")
  158. man = Player(tileimage)        
  159. tiles = [ Tile(50, 50, tileimage) ]
  160.  
  161. while True:
  162.  
  163.    
  164.     windowSurface.fill(BLACK)
  165.  
  166.     room1.draw(windowSurface)
  167.     room1.update(man)
  168.    
  169.  
  170.     man.resolve()    
  171.     man.draw(windowSurface)
  172.     man.move()
  173.     man.process_keys()
  174.     man.update()
  175.    
  176.  
  177.    
  178.    
  179.  
  180.     pygame.display.update()
  181.     mainClock.tick(40)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement