Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame, sys, math
- from pygame.locals import *
- from camera import Camera
- pygame.init()
- mainClock = pygame.time.Clock()
- WINDOWWIDTH = 800
- WINDOWHEIGHT = 600
- windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
- pygame.display.set_caption('Ude ga kento-chigai ni naru koto ga dekimasu')
- moveSpeed = 4
- BLACK = (0, 0, 0)
- WHITE = (255, 255, 255)
- GREEN = (0, 255, 0)
- max = 60
- posx = 400
- posy = 300
- tileimage = pygame.image.load("20tile.png")
- playersprite = pygame.image.load("20tile.png")
- class Object:
- def __init__(self, x, y, image):
- self.x = x
- self.y = y
- self.vx = 0
- self.vy = 0
- self.image = image
- self.width = image.get_width()
- self.height = image.get_height()
- self.rect = pygame.Rect(self.x, self.y, self.height, self.height)
- self.prevRect = self.rect
- def draw(self, surface):
- surface.blit(self.image, self.rect)
- def update(self):
- self.prevRect = pygame.Rect(self.x, self.y, self.width, self.height)
- self.x += self.vx
- self.y += self.vy
- self.rect.topleft = (self.x, self.y)
- def resolve(self):
- self.x, self.y = self.rect.topleft
- class Player(Object):
- def __init__(self, image):
- Object.__init__(self, 400, 300, image)
- self.UpFlag = 0
- self.DownFlag = 0
- self.RightFlag = 0
- self.LeftFlag = 0
- def process_keys(self):
- for event in pygame.event.get():
- if event.type == QUIT:
- pygame.quit()
- sys.exit()
- if event.type == KEYDOWN:
- if event.key == K_F11 or ((event.key == K_RALT or event.key == K_LALT) and event.key == K_RETURN):
- pygame.display.toggle_fullscreen()
- print('SHOULD BE FULL')
- if event.key == K_ESCAPE:
- pygame.quit()
- sys.exit(1)
- if event.key == K_LEFT:
- self.LeftFlag += 1
- if event.key == K_RIGHT:
- self.RightFlag += 1
- if event.key == K_UP:
- self.UpFlag += 1
- if event.key == K_DOWN:
- self.DownFlag += 1
- elif event.type == KEYUP:
- if event.key == K_LEFT:
- self.LeftFlag = 0
- if event.key == K_RIGHT:
- self.RightFlag = 0
- if event.key == K_UP:
- self.UpFlag = 0
- if event.key == K_DOWN:
- self.DownFlag = 0
- def move(self):
- speed = 5
- if self.LeftFlag >= 1:
- self.vx = -speed
- elif self.RightFlag >= 1:
- self.vx = speed
- else:
- self.vx = 0
- if self.UpFlag >= 1:
- self.vy = -speed
- elif self.DownFlag >= 1:
- self.vy = speed
- else:
- self.vy = 0
- def collide(self, tile):
- if self.rect.colliderect(tile.rect):
- if tile.rect.left >= self.prevRect.right:
- self.rect.right = tile.rect.left
- print(' tile left collision')
- elif tile.rect.right <= self.prevRect.left:
- self.rect.left = tile.rect.right
- print(' tile right collision')
- elif tile.rect.bottom <= self.prevRect.top:
- self.rect.top = tile.rect.bottom
- print(' tile bottom collision')
- elif tile.rect.top >= self.prevRect.bottom:
- self.rect.bottom = tile.rect.top
- print(' tile top collision')
- class Tile(Object):
- def __init__(self, x, y, image):
- Object.__init__(self, x, y, tileimage)
- class Room:
- def __init__(self, name):
- self.name = name
- self.tiles = [ [] ]
- self.tilesize = tileimage.get_height()
- lines = [ line for line in open(self.name) if len(line) > 0 ]
- self.height = len(lines)
- self.width = len(sorted(lines, key=len)[-1]) - 1
- self.camera = Camera(0,0)
- for i in range(self.width):
- self.tiles.append([])
- for j in range(self.height):
- self.tiles[i].append(None)
- for i in range(self.width):
- for j in range(self.height):
- if lines[j][i] == "X":
- self.tiles[i][j] = Tile(i*self.tilesize, j*self.tilesize, tileimage)
- def draw(self, surface):
- for i in range(self.width):
- for j in range(self.height):
- current = self.tiles[i][j]
- if current == None: continue
- self.tiles[i][j].draw(surface)
- def update(self, player):
- for i in range(self.width):
- for j in range(self.height):
- if self.tiles[i][j] == None: continue
- player.collide(self.tiles[i][j])
- self.camera.set_position(player.x, player.y)
- room1 = Room("map02.level")
- man = Player(tileimage)
- tiles = [ Tile(50, 50, tileimage) ]
- while True:
- windowSurface.fill(BLACK)
- room1.draw(windowSurface)
- room1.update(man)
- man.resolve()
- man.draw(windowSurface)
- man.move()
- man.process_keys()
- man.update()
- pygame.display.update()
- mainClock.tick(40)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement