Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- from pygame.locals import *
- import math, sys
- SCREEN_SIZE_X = 800
- SCREEN_SIZE_Y = 600
- MAP_SIZE_X = 2000
- MAP_SIZE_Y = 2000
- RIGHT = 0
- LEFT = 1
- class Player():
- def __init__(self):
- self.image = pygame.image.load('player.png').convert()
- self.image.set_colorkey((255, 255, 255))
- self.rect = self.image.get_rect()
- self.original = self.image
- self.x, self.y = SCREEN_SIZE_X/2, SCREEN_SIZE_Y/2
- self.virtual_x, self.virtual_y = 567, 456
- self.angle = 90
- self.speed = 5
- self.offset_x, self.offset_y = self.virtual_x - SCREEN_SIZE_X/2, self.virtual_y - SCREEN_SIZE_Y/2
- def change_direction(self, direction):
- if direction == RIGHT:
- self.angle += 4
- elif direction == LEFT:
- self.angle -= 4
- def update(self):
- self.rect = self.image.get_rect(center = (self.x, self.y))
- speedx = math.sin(self.angle * (math.pi/180)) * self.speed
- speedy = math.cos(self.angle * (math.pi/180)) * self.speed * -1
- self.virtual_x += speedx
- self.virtual_y += speedy
- if self.virtual_x < MAP_SIZE_X - SCREEN_SIZE_X/2 and self.virtual_x > SCREEN_SIZE_X/2:
- self.offset_x += speedx
- else:
- self.x += speedx
- if self.virtual_y < MAP_SIZE_Y - SCREEN_SIZE_Y/2 and self.virtual_y > SCREEN_SIZE_Y/2:
- self.offset_y += speedy
- else:
- self.y += speedy
- self.image = pygame.transform.rotate(self.original, self.angle * -1)
- def draw(self, screen):
- screen.blit(self.image, self.rect)
- def main():
- pygame.init()
- screen = pygame.display.set_mode((SCREEN_SIZE_X, SCREEN_SIZE_Y), HWSURFACE|DOUBLEBUF)
- background = pygame.image.load('map.png').convert()
- player = Player()
- clock = pygame.time.Clock()
- loop = True
- while loop:
- clock.tick(60)
- for event in pygame.event.get():
- if event.type == QUIT:
- loop = False
- if event.type == KEYDOWN:
- if event.key == K_ESCAPE:
- loop = False
- pygame.event.pump()
- key = pygame.key.get_pressed()
- if key[K_RIGHT]:
- player.change_direction(RIGHT)
- elif key[K_LEFT]:
- player.change_direction(LEFT)
- player.update()
- screen.blit(background, (0, 0), area = (player.offset_x, player.offset_y, SCREEN_SIZE_X, SCREEN_SIZE_Y))
- player.draw(screen)
- pygame.display.flip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement