Share Pastebin
Guest
Public paste!

eFFeeMMe

By: a guest | Feb 9th, 2010 | Syntax: Python | Size: 2.98 KB | Hits: 22 | Expires: Never
Copy text to clipboard
  1. '''
  2. Created on Feb 9, 2010
  3.  
  4. @author: effeemme
  5.  
  6. A little platformer. The challenge was to make it in 5 minutes. Took me 10 :( then I cleaned it up a bit.
  7. '''
  8. import pygame
  9. pygame.init()
  10.  
  11. class Block:
  12.     def __init__(self, x, y):
  13.         self.x = x
  14.         self.y = y
  15.  
  16. class Character(object):
  17.     def __init__(self, x, y):
  18.         self.x = x
  19.         self.y = y
  20.         self.canjump = False
  21.        
  22.         self._xSpeed = 0.0
  23.         self._ySpeed = 0.0
  24.        
  25.     def step(self):
  26.         self.x += self.xSpeed
  27.         self.y += self.ySpeed
  28.         self.ySpeed += 0.5
  29.    
  30.     def jump(self):
  31.         if self.canjump:
  32.             self.ySpeed = -16
  33.             self.canjump = False
  34.    
  35.     def draw(self, display):
  36.         pygame.draw.rect(display, (255, 255, 255), (self.x - 8, self.y - 16, 16, 16))
  37.         pygame.draw.rect(display, (255, 0, 0), (self.x - 8, self. y - 1, 16, 2))
  38.    
  39.     def get_xSpeed(self):
  40.         return self._xSpeed
  41.     def set_xSpeed(self, value):
  42.         self._xSpeed = value
  43.         if self._xSpeed < -4:
  44.             self._xSpeed = -4
  45.         if self._xSpeed > 4:
  46.             self._xSpeed = 4
  47.    
  48.     def get_ySpeed(self):
  49.         return self._ySpeed
  50.     def set_ySpeed(self, value):
  51.         self._ySpeed = value
  52.         if self._ySpeed < -4:
  53.             self._ySpeed = -4
  54.         if self._ySpeed > 4:
  55.             self._ySpeed = 4
  56.    
  57.     xSpeed = property(get_xSpeed, set_xSpeed)
  58.     ySpeed = property(get_ySpeed, set_ySpeed)
  59.  
  60. if __name__ == "__main__":
  61.     clock = pygame.time.Clock()
  62.     display = pygame.display.set_mode((640, 480))
  63.     c = Character(50, 50)
  64.    
  65.     blocks = [Block(x, 80) for x in range(20, 200, 16)]
  66.    
  67.     pressedKeys = set()
  68.    
  69.     while True:
  70.         for event in pygame.event.get():
  71.             if event.type == pygame.QUIT:
  72.                 import sys
  73.                 sys.exit()
  74.            
  75.             elif event.type == pygame.KEYDOWN:
  76.                 pressedKeys.add(event.key)
  77.             elif event.type == pygame.KEYUP:
  78.                 pressedKeys.remove(event.key)
  79.        
  80.         notAccelerating = True
  81.         if pygame.K_UP in pressedKeys:
  82.             c.jump()
  83.         if pygame.K_LEFT in pressedKeys:
  84.             c.xSpeed -= 2
  85.             notAccelerating = False
  86.         if pygame.K_RIGHT in pressedKeys:
  87.             c.xSpeed += 2
  88.             notAccelerating = False
  89.         if notAccelerating:
  90.             if c.xSpeed != 0:
  91.                 c.xSpeed -= abs(c.xSpeed) / c.xSpeed
  92.        
  93.         c.step()
  94.        
  95.         for block in blocks:
  96.             if abs(c.x - block.x) <= 8:
  97.                 if c.y - 8 <= block.y <= c.y:
  98.                     c.y = block.y
  99.                     c.canjump = True
  100.        
  101.         display.fill((0,0,0))
  102.        
  103.         c.draw(display)
  104.        
  105.         for block in blocks:
  106.             pygame.draw.line(display, (255,255,255), (block.x-8, block.y), (block.x+8, block.y), 4)
  107.        
  108.         pygame.display.flip()
  109.         clock.tick(30)