簡體   English   中英

Python 2.7無限滾動背景?

[英]Python 2.7 Infinite Scrolling Background?

我正在嘗試制作一個非常簡單的游戲,讓您上下移動以躲避投射物,但我仍然靜止不動,似乎無法弄清楚如何添加滾動背景。

我要的只是循環滾動的背景,直到游戲結束時才會停止,以給出運動/飛行的錯覺。 有什么幫助嗎?

import pygame
pygame.init()


screen = pygame.display.set_mode((720, 229))


clock = pygame.time.Clock()


bck = pygame.image.load('background.png')


class Box(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("goku.png")
        self.rect = self.image.get_rect()

        self.rect.centerx = 50
        self.rect.centery = 50
        self.dx = 5
        self.dy = 5

    def update(self):
        self.move()
        self.wrap()

    def move(self):
        k = pygame.key.get_pressed()
        if k[pygame.K_a]:
            self.rect.centerx -= self.dx
        if k[pygame.K_d]:
            self.rect.centerx += self.dx
        if k[pygame.K_w]:
            self.rect.centery -= self.dy
        if k[pygame.K_s]:
            self.rect.centery += self.dy

    def wrap(self):
        if self.rect.left > screen.get_width():
            self.rect.right = 0
        if self.rect.right < 0:
            self.rect.left = screen.get_width()
        if self.rect.top > screen.get_height():
            self.rect.bottom = 0
        if self.rect.bottom < 0:
            self.rect.top = screen.get_height()


def main():
    loop = True
    clock = pygame.time.Clock()

    box = Box()
    allSprites = pygame.sprite.Group(box)

    while loop:
        clock.tick(30)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                loop = False

        screen.blit(bck, (0, 0))
        allSprites.update()
        allSprites.draw(screen)
        pygame.display.flip()

if __name__ == '__main__':
    main()

在代碼中,您將在背景中顯示如下: screen.blit(bck, (0,0)使背景精靈始終位於(0,0)。

您應該跟蹤玩家的運動,並將其用作背景精靈畫面的偏移量screen.blit(bck, (player.position_x, 0)player.position_x或您的變量名是什么。在當前情況下,它可能是box.rect.centerx ,使其隨播放器一起移動。

為了獲得更好的效果,您需要調整screen.blit(bck, (player.position_x / 2, 0)以獲得較慢的移動背景。

此外,這樣做之后,您可能應該使背景沿移動軸重現。

我以為我只是將自己的背景變成一個sprite類,然后從那里繼續向左移動背景。

class back(pygame.sprite.Sprite):
def __init__(self):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.image.load("background.png")
    self.rect = self.image.get_rect()

def update(self):
    self.rect.centerx -= 5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM