游戏和精灵模糊运动



我正在努力正确移动精灵。而不是平滑移动,我可以看到模糊移动,我不知道如何解决它。你有没有机会指出我做错了什么?

我的目标是放下披萨,这样它就会击中底部,如果它撞到顶部,就会反弹回来,然后再次反弹到底部 ->反弹 ->顶部 ->反弹等。

import pygame
gravity = 0.5
class PizzaSprite:
    def __init__(self, image, spritepos):
        self.image = image
        self.spos = spritepos
        (x, y) = spritepos
        self.posx = x
        self.posy = y
        self.xvel = 1
        self.yvel = 1
        print "x ", x
        print "y ", y
    def draw(self, target_surface):          
        target_surface.blit(self.image, self.spos)
    def update(self):
        self.posy -= self.yvel
        self.spos = (self.posx, self.posy)
        return

def main():
    pygame.init()
    screen_width = 800
    screen_height = 600
    x = screen_width
    y = screen_height
    screen = pygame.display.set_mode((screen_width, screen_height))
    wall_image = pygame.image.load("wall.png")
    sky_image = pygame.image.load("sky.png")
    pizza_image = pygame.image.load("pizza.png")
    screen.blit(wall_image,(0,200))
    screen.blit(sky_image,(0,0))
    all_sprites = []
    pizza1 = PizzaSprite(pizza_image, (x/2, y/2))
    all_sprites.append(pizza1)
    while True:
        ev = pygame.event.poll()
        if ev.type == pygame.QUIT:
            break
        for sprite in all_sprites:
            sprite.update()
        for sprite in all_sprites:
            sprite.draw(screen)
        pygame.display.flip()
    pygame.quit()
main()

主游戏开始时循环添加 白色 = (255,255,255) 屏幕填充(白色)让我给你一个现在正在发生的事情的小类比,

你有纸和很多披萨贴纸,目的是制作一本翻书。为了在每张纸上产生运动的错觉,您将贴纸放得更低一点。screen.fill 命令实质上是使用您为其提供的 rgb 颜色值清除屏幕。当你没有填满屏幕时,你正在做的是试图在一张纸上制作翻书。你只是不断地把越来越多的贴纸放得更低一点,当你想要的每页上都有一个时,就会变得模糊。

和地方

pygame.init()
screen_width = 800
screen_height = 600
x = screen_width
y = screen_height
screen = pygame.display.set_mode((screen_width, screen_height))
wall_image = pygame.image.load("wall.png")
sky_image = pygame.image.load("sky.png")

所有在你的主游戏循环之外,假设你不会在你的程序中对这些变量进行更改,那么一遍又一遍地重新定义屏幕,,x,y和你的两个图像是乏味和低效的,如果它们没有改变。

所以总结一下:

  1. 使用 screen.fill(white) 命令重置屏幕的颜色

  2. 你只需要导入 png 并定义一次变量,如果它们永远不会改变并且在你的主循环中不需要它们

希望这有助于解决问题。

最新更新