Advertisement
Guest User

Jumpy box

a guest
Jul 22nd, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import pygame
  4. from pygame.locals import *
  5. import sys
  6.  
  7. pygame.init()
  8.  
  9. size = width, height = 800, 600
  10.  
  11. black = 0, 0, 0
  12. white = 255, 255, 255
  13.  
  14. screen = pygame.display.set_mode(size)
  15.  
  16. clock = pygame.time.Clock()
  17.  
  18. class Entity:
  19.     def __init__(self):
  20.         self.x = 0
  21.         self.y = 0
  22.         self.xv = 0
  23.         self.yv = 0
  24.         self.h = 0
  25.         self.w = 0
  26.         self.rect = pygame.Rect((0, 0, 0, 0))
  27.         self.onGround = False
  28.  
  29.     def set_pos(self, x, y):
  30.         self.x = x
  31.         self.y = y
  32.         self.onGround = False
  33.         if self.y < 200:
  34.             self.onGround = True
  35.             self.y = 200
  36.         self.rect.x = x
  37.         self.rect.y = y
  38.  
  39.     def set_vel(self, x, y):
  40.         self.xv = x
  41.         self.yv = y
  42.  
  43.     def set_size(self, w, h):
  44.         self.w = w
  45.         self.t = w
  46.         self.h = h
  47.         self.rect.w = w
  48.         self.rect.h = h
  49.  
  50.     def move_x(self):
  51.         self.set_pos(self.x + self.xv, self.y)
  52.  
  53.     def move_y(self):
  54.         if self.onGround:
  55.             self.set_pos(self.x, self.y)
  56.         else:
  57.             self.set_pos(self.x, self.y + self.yv)
  58.         if self.yv > -5: self.yv-=1
  59.  
  60.     def colliding(self, rect):
  61.         self.coll = self.rect.colliderect(rect)
  62.         if self.coll:
  63.             self.onGround = True
  64.         return self.coll
  65.  
  66.     def jump(self):
  67.         if self.onGround:
  68.             self.yv = 15
  69.  
  70.     def drawrect(self):
  71.         return pygame.Rect((self.x, 600 - self.y, self.w, self.h))
  72.  
  73. # Plr = pygame.Rect(5, 5, 150, 150)
  74.  
  75. Plr = Entity()
  76. Plr.set_pos(200, 300)
  77. Plr.set_size(64, 64)
  78.  
  79. box = Entity()
  80. box.set_pos(200, 200)
  81. box.set_size(64, 64)
  82.  
  83. while True:
  84.     for event in pygame.event.get():
  85.         if event.type == pygame.QUIT:
  86.             sys.exit()
  87.         elif event.type == pygame.KEYUP:
  88.             if event.key == K_ESCAPE:
  89.                 sys.exit()
  90.  
  91.     keydown = pygame.key.get_pressed()
  92.     if keydown[K_LEFT]:
  93.         Plr.xv = -5
  94.     elif keydown[K_RIGHT]:
  95.         Plr.xv = 5
  96.     else:
  97.         Plr.xv = 0
  98.     if keydown[K_SPACE]:
  99.         Plr.jump()
  100.  
  101.     Plr.move_x()
  102.  
  103.     if Plr.colliding(box.rect):
  104.         if Plr.xv < 0:
  105.             Plr.x = box.x + box.t
  106.             Plr.xv = 0
  107.         if Plr.xv > 0:
  108.             Plr.x = box.x - Plr.w
  109.             Plr.xv = 0
  110.  
  111.     Plr.move_y()
  112.  
  113.     if Plr.colliding(box.rect):
  114.         if Plr.yv < 0:
  115.             Plr.y = box.y + box.t
  116.             Plr.yv = 0
  117.         if Plr.yv > 0:
  118.             Plr.onGround = True
  119.             Plr.y = box.y - Plr.h
  120.             Plr.yv = 0
  121.  
  122.     screen.fill(black)
  123.  
  124.     pygame.draw.rect(screen, white, Plr.drawrect())
  125.     pygame.draw.rect(screen, white, box.drawrect())
  126.  
  127.     pygame.display.flip()
  128.     clock.tick(60)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement