微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

所以我有这段代码可以创建一种无限滚动背景。背景是一排单一的红色和绿色方块。为了创建这种无限滚动效果,我重复使用了背景“图像”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 举报,一经查实,本站将立刻删除。