Advertisement
Guest User

Untitled

a guest
Sep 5th, 2011
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.96 KB | None | 0 0
  1. import pygame
  2. from pygame.locals import *
  3.  
  4. import math, sys
  5.  
  6. SCREEN_SIZE_X = 800
  7. SCREEN_SIZE_Y = 600
  8.  
  9. MAP_SIZE_X = 2000
  10. MAP_SIZE_Y = 2000
  11.  
  12. RIGHT = 0
  13. LEFT = 1
  14.  
  15. class Player():
  16.         def __init__(self):
  17.                 self.image = pygame.image.load('player.png').convert()
  18.                 self.image.set_colorkey((255, 255, 255))
  19.                 self.rect = self.image.get_rect()
  20.  
  21.                 self.original = self.image
  22.  
  23.                 self.x, self.y = SCREEN_SIZE_X/2, SCREEN_SIZE_Y/2
  24.                 self.virtual_x, self.virtual_y = 567, 456
  25.  
  26.                 self.angle = 90
  27.                 self.speed = 5
  28.  
  29.                 self.offset_x, self.offset_y = self.virtual_x - SCREEN_SIZE_X/2, self.virtual_y - SCREEN_SIZE_Y/2
  30.  
  31.         def change_direction(self, direction):
  32.                 if direction == RIGHT:
  33.                         self.angle += 4
  34.  
  35.                 elif direction == LEFT:
  36.                         self.angle -= 4
  37.  
  38.         def update(self):
  39.                 self.rect = self.image.get_rect(center = (self.x, self.y))                                                                                                        
  40.                                                                                                                                                                                    
  41.                 speedx = math.sin(self.angle * (math.pi/180)) * self.speed                                                                                                        
  42.                 speedy = math.cos(self.angle * (math.pi/180)) * self.speed * -1                                                                                                    
  43.                                                                                                                                                                                    
  44.                 self.virtual_x += speedx                                                                                                                                          
  45.                 self.virtual_y += speedy                                                                                                                                          
  46.  
  47.                 if self.virtual_x < MAP_SIZE_X - SCREEN_SIZE_X/2 and self.virtual_x > SCREEN_SIZE_X/2:
  48.                         self.offset_x += speedx
  49.  
  50.                 else:
  51.                         self.x += speedx
  52.  
  53.                 if self.virtual_y < MAP_SIZE_Y - SCREEN_SIZE_Y/2 and self.virtual_y > SCREEN_SIZE_Y/2:
  54.                         self.offset_y += speedy
  55.  
  56.                 else:
  57.                         self.y += speedy
  58.  
  59.                 self.image = pygame.transform.rotate(self.original, self.angle * -1)
  60.  
  61.         def draw(self, screen):
  62.                 screen.blit(self.image, self.rect)
  63.  
  64. def main():
  65.         pygame.init()
  66.  
  67.         screen = pygame.display.set_mode((SCREEN_SIZE_X, SCREEN_SIZE_Y), HWSURFACE|DOUBLEBUF)
  68.  
  69.         background = pygame.image.load('map.png').convert()
  70.  
  71.         player = Player()
  72.  
  73.         clock = pygame.time.Clock()
  74.  
  75.         loop = True
  76.         while loop:
  77.                 clock.tick(60)
  78.  
  79.                 for event in pygame.event.get():
  80.                         if event.type == QUIT:
  81.                                 loop = False
  82.  
  83.                         if event.type == KEYDOWN:
  84.                                 if event.key == K_ESCAPE:
  85.                                         loop = False
  86.  
  87.                 pygame.event.pump()
  88.  
  89.                 key = pygame.key.get_pressed()
  90.  
  91.                 if key[K_RIGHT]:
  92.                         player.change_direction(RIGHT)
  93.  
  94.                 elif key[K_LEFT]:
  95.                         player.change_direction(LEFT)
  96.  
  97.                 player.update()
  98.  
  99.                 screen.blit(background, (0, 0), area = (player.offset_x, player.offset_y, SCREEN_SIZE_X, SCREEN_SIZE_Y))
  100.                 player.draw(screen)
  101.  
  102.                 pygame.display.flip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement