Loading...
Loading...
Compare original and translation side by side
SurfaceRectSpriteGroupimport pygameSurfaceRectSpriteGroupimport pygameimport pygamepygame-cepygamesave-systemsinput-systemsimport pygamepygame-cepygamesave-systemsinput-systemspip install pygame-cepygamepygame.init()screen = pygame.display.set_mode((w, h))clock = pygame.time.Clock()for event in pygame.event.get()pygame.display.flip()dt = clock.tick(60) / 1000dtKEYDOWNMOUSEBUTTONDOWNpygame.key.get_pressed()SpriteGrouppygame.sprite.Spriteimagerectgroup.update(dt)group.draw(screen)pip install pygame-cepygamepygame.init()screen = pygame.display.set_mode((w, h))clock = pygame.time.Clock()for event in pygame.event.get()pygame.display.flip()dt = clock.tick(60) / 1000dtKEYDOWNMOUSEBUTTONDOWNpygame.key.get_pressed()SpriteGrouppygame.sprite.Spriteimagerectgroup.update(dt)group.draw(screen)import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("My Game")
clock = pygame.time.Clock()
running = True
while running:
dt = clock.tick(60) / 1000 # cap at 60 FPS; dt = seconds since last frame
for event in pygame.event.get(): # MUST drain the queue or the OS thinks it hung
if event.type == pygame.QUIT:
running = False
# update game state here, scaled by dt ...
screen.fill((18, 18, 28)) # clear each frame
# draw everything here ...
pygame.display.flip() # present the frame
pygame.quit()import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("My Game")
clock = pygame.time.Clock()
running = True
while running:
dt = clock.tick(60) / 1000 # 限制帧率为60 FPS;dt为自上一帧以来的秒数
for event in pygame.event.get(): # 必须清空事件队列,否则系统会认为程序无响应
if event.type == pygame.QUIT:
running = False
# 在此处更新游戏状态,按dt缩放...
screen.fill((18, 18, 28)) # 每帧清空屏幕
# 在此处绘制所有内容...
pygame.display.flip() # 展示当前帧
pygame.quit()from pygame.math import Vector2
pos = Vector2(100, 100) # keep position as floats
speed = 220 # PIXELS PER SECOND, not per framefrom pygame.math import Vector2
pos = Vector2(100, 100) # 保持位置为浮点数
speed = 220 # 像素/秒,而非像素/帧undefinedundefinedfor event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN: # discrete press: jump, menu, pause
if event.key == pygame.K_SPACE:
jump()
elif event.key == pygame.K_ESCAPE:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
shoot_at(event.pos) # event.pos = (x, y)for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN: # 离散按键:跳跃、菜单、暂停
if event.key == pygame.K_SPACE:
jump()
elif event.key == pygame.K_ESCAPE:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
shoot_at(event.pos) # event.pos = (x, y)undefinedundefinedclass Player(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
# convert() once at load makes blits much faster; _alpha keeps transparency.
self.image = pygame.image.load("player.png").convert_alpha()
self.rect = self.image.get_rect(center=(x, y))
self.pos = pygame.math.Vector2(self.rect.center)
self.speed = 240
def update(self, dt): # Group.update(dt) calls this per sprite
keys = pygame.key.get_pressed()
self.pos.x += (keys[pygame.K_RIGHT] - keys[pygame.K_LEFT]) * self.speed * dt
self.rect.center = (round(self.pos.x), round(self.pos.y))
all_sprites = pygame.sprite.Group()
all_sprites.add(Player(400, 300))class Player(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
# 加载时调用convert()可大幅提升绘制速度;_alpha保留透明度。
self.image = pygame.image.load("player.png").convert_alpha()
self.rect = self.image.get_rect(center=(x, y))
self.pos = pygame.math.Vector2(self.rect.center)
self.speed = 240
def update(self, dt): # Group.update(dt)会为每个Sprite调用此方法
keys = pygame.key.get_pressed()
self.pos.x += (keys[pygame.K_RIGHT] - keys[pygame.K_LEFT]) * self.speed * dt
self.rect.center = (round(self.pos.x), round(self.pos.y))
all_sprites = pygame.sprite.Group()
all_sprites.add(Player(400, 300))undefinedundefinedundefinedundefinedundefinedundefinedpygame.event.get()pygame.event.pump()dt = clock.tick(fps) / 1000rectVector2rect.center = round(...).convert().convert_alpha()pygame.display.flip()update()screen.fill(...)pip install pygamepip install pygame-cepygame.event.get()pygame.event.pump()dt = clock.tick(fps) / 1000rectVector2rect.center = round(...).convert().convert_alpha()pygame.display.flip()update()screen.fill(...)pip install pygamepip install pygame-ceGroupGroupSingleLayeredUpdatesmaskreferences/sprites-and-collision.mdGroupGroupSingleLayeredUpdatesmaskreferences/sprites-and-collision.mdlove2d-corebevy-ecsinput-systemssave-systemsplatformerroguelikelove2d-corebevy-ecsinput-systemssave-systemsplatformerroguelike