import pygame, sys
import random
class Person(): # 人物
def __init__(self, surf=None, y=None):
self.surface = surf
self.y = y # y坐标
self.w = (surf.get_width()) / 12 # 宽度
self.h = surf.get_height() / 2 # 高度
self.cur_frame = -1 # 当前的运动状态帧
self.state = 0 # 0代表跑步状态,1代表跳跃状态,2代表连续跳跃
self.gravity = 1 # 重力加速度
self.velocity_y = 0 # y方向的速度
self.vy_start = -20 # 起跳开始速度
def getPos(self): # 获取当前的位置信息,用于碰撞检测
return (0, self.y + 12, self.w, self.h)
class Obstacle(object): # 障碍物
def __init__(self, surf, x=0, y=0):
self.surface = surf
self.x = x
self.y = y
self.w = surf.get_width()
self.h = surf.get_height()
self.cur_frame = random.randint(0, 6) # 随机获取一种障碍物的类型
self.w = 100
self.h = 100
def getPos(self): # 当前的坐标信息
return (self.x, self.y, self.w, self.h)
def judgeCollision(self, rect1, rect2): # 碰撞检测
if (rect2[0] >= rect1[2] - 20) or (rect1[0] + 40 >= rect2[2]) or (rect1[1] + rect1[3] < rect2[1] + 20) or (
rect2[1] + rect2[3] < rect1[1] + 20):
return False
return True
class BackGround(object): # 背景
def __init__(self, surf):
self.surface = surf # 初始化一个Surface 对象
self.dx = -10
self.w = surf.get_width() # 返回 Surface 对象的宽度,以像素为单位。
self.rect = surf.get_rect() # 获取 Surface 对象的矩形区域
class PaoKu(object):
def __init__(self):
pygame.init()
pygame.mixer.init()
self.width = 1200 # 窗口宽度
self.height = 500 # 窗口高度
self.size = (self.width, self.height)
self.screen = pygame.display.set_mode(self.size)