为什么红绿方块“动”的时候会出现黑线

问题描述

所以我有这段代码可以创建一种无限滚动背景。背景是一排单一的红色和绿色方块。为了创建这种无限滚动效果,我重复使用了背景“图像”3 次,分别是中间背景“图像”的左侧和右侧。每当相机到达边界时,位置都会更新,以便将中间背景设置为相机位置。对不起,如果我没有很好地解释这一点,但这里是代码

settings.py

import pygame
import os


WIDTH = 1024
HEIGHT = 640

WIN = pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption("Lol")
FPS  = 60

WHITE = (255,255,255)
BLACK = (0,0)
RED = (255,0)
GREEN = (0,0)

CLOCK = pygame.time.Clock()
TILEWH = 32

ma​​in.py

import pygame
from settings import *
pygame.init()


class Background:
    def __init__(self):
        self.init_background()

    def init_background(self):
        self.background = pygame.Surface((WIDTH,HEIGHT))
        for x in range(0,WIDTH,64):
            pygame.draw.rect(self.background,RED,pygame.Rect(x,TILEWH,TILEWH))
        for x in range(0+TILEWH,GREEN,TILEWH))
        self.bgXY_1 = [0-self.background.get_width(),0]
        self.bgXY_2 = [0,0]
        self.bgXY_3 = [self.background.get_width(),0]
        self.bg = [self.bgXY_1,self.bgXY_2,self.bgXY_3]


class Game:
    def __init__(self):
        self.running = True
        self.camera = 0
        self.offset = 0
        self.grid_start_red = True
        self.direction = None
        self.background = Background()
        self.run()

    def run(self):
        while self.running:
            CLOCK.tick(FPS)
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.running = False
                    pygame.quit()
            keys_pressed = pygame.key.get_pressed()
            self.handle_movement(keys_pressed)
            self.draw()

    def handle_movement(self,keys_pressed):
        if keys_pressed[pygame.K_a]:
            self.camera-=4
            if self.camera % 1024 == 0:
                for background_item in self.background.bg:
                    background_item[0]-=1024
        if keys_pressed[pygame.K_d]:
            self.camera+=4
            if self.camera % 1024 == 0:
                for background_item in self.background.bg:
                    background_item[0]+=1024             

    def draw(self):
        WIN.fill(WHITE)
        WIN.blit(self.background.background,(self.background.bgXY_1[0]-self.camera,self.background.bgXY_1[1]))
        WIN.blit(self.background.background,(self.background.bgXY_2[0]-self.camera,self.background.bgXY_2[1]))
        WIN.blit(self.background.background,(self.background.bgXY_3[0]-self.camera,self.background.bgXY_3[1]))
        pygame.display.update()

main = Game()

A 和 D 键用于“移动” 为什么红绿方块移动时会出现黑线?这是由于硬件限制吗?有没有更好的方法来达到同样的效果?请让我知道! :)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)