Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import pygame
- from pygame.locals import *
- import sys
- pygame.init()
- size = width, height = 800, 600
- black = 0, 0, 0
- white = 255, 255, 255
- screen = pygame.display.set_mode(size)
- clock = pygame.time.Clock()
- class Entity:
- def __init__(self):
- self.x = 0
- self.y = 0
- self.xv = 0
- self.yv = 0
- self.h = 0
- self.w = 0
- self.rect = pygame.Rect((0, 0, 0, 0))
- self.onGround = False
- def set_pos(self, x, y):
- self.x = x
- self.y = y
- self.onGround = False
- if self.y < 200:
- self.onGround = True
- self.y = 200
- self.rect.x = x
- self.rect.y = y
- def set_vel(self, x, y):
- self.xv = x
- self.yv = y
- def set_size(self, w, h):
- self.w = w
- self.t = w
- self.h = h
- self.rect.w = w
- self.rect.h = h
- def move_x(self):
- self.set_pos(self.x + self.xv, self.y)
- def move_y(self):
- if self.onGround:
- self.set_pos(self.x, self.y)
- else:
- self.set_pos(self.x, self.y + self.yv)
- if self.yv > -5: self.yv-=1
- def colliding(self, rect):
- self.coll = self.rect.colliderect(rect)
- if self.coll:
- self.onGround = True
- return self.coll
- def jump(self):
- if self.onGround:
- self.yv = 15
- def drawrect(self):
- return pygame.Rect((self.x, 600 - self.y, self.w, self.h))
- # Plr = pygame.Rect(5, 5, 150, 150)
- Plr = Entity()
- Plr.set_pos(200, 300)
- Plr.set_size(64, 64)
- box = Entity()
- box.set_pos(200, 200)
- box.set_size(64, 64)
- while True:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- sys.exit()
- elif event.type == pygame.KEYUP:
- if event.key == K_ESCAPE:
- sys.exit()
- keydown = pygame.key.get_pressed()
- if keydown[K_LEFT]:
- Plr.xv = -5
- elif keydown[K_RIGHT]:
- Plr.xv = 5
- else:
- Plr.xv = 0
- if keydown[K_SPACE]:
- Plr.jump()
- Plr.move_x()
- if Plr.colliding(box.rect):
- if Plr.xv < 0:
- Plr.x = box.x + box.t
- Plr.xv = 0
- if Plr.xv > 0:
- Plr.x = box.x - Plr.w
- Plr.xv = 0
- Plr.move_y()
- if Plr.colliding(box.rect):
- if Plr.yv < 0:
- Plr.y = box.y + box.t
- Plr.yv = 0
- if Plr.yv > 0:
- Plr.onGround = True
- Plr.y = box.y - Plr.h
- Plr.yv = 0
- screen.fill(black)
- pygame.draw.rect(screen, white, Plr.drawrect())
- pygame.draw.rect(screen, white, box.drawrect())
- pygame.display.flip()
- clock.tick(60)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement