Python 赛道覆盖的地区

Python 赛道覆盖的地区,python,pygame,Python,Pygame,每当轨迹到达边缘时,我希望轨迹覆盖的区域填充白色。 而且已经被覆盖的区域也算作边缘 import pygame, sys WIDTH, HEIGHT = 800, 600 pygame.init() win = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Qix") clock = pygame.time.Clock() # Player Class class Playe

每当轨迹到达边缘时,我希望轨迹覆盖的区域填充白色。 而且已经被覆盖的区域也算作边缘

import pygame, sys


WIDTH, HEIGHT = 800, 600
pygame.init()
win = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Qix")
clock = pygame.time.Clock()



# Player Class
class Player:
    def __init__(self, x, y):
        self.x = int(x)
        self.y = int(y)
        self.rect = pygame.Rect(self.x, self.y, 32, 32)
        self.color = (250, 120, 60)
        self.velX = 0
        self.velY = 0
        self.left_pressed = False
        self.right_pressed = False
        self.up_pressed = False
        self.down_pressed = False
        self.speed = 6
        self.rect.midbottom = self.rect.midbottom
        self.trail = []
        self.EnterPush = False
        self.running = False
        self.pos = pygame.Vector2(self.rect.center)

    def  main(self):
        self.update()
        self.check_collisons()

    def draw(self, win):
        pygame.draw.rect(win, self.color, self.rect)

    def check_collisons(self):
        if self.x >= 760:
            self.x = 760
        elif self.x <= 0 :
            self.x = 0
        if self.y >=570:
            self.y = 570
        elif self.y<=0:
            self.y = 0

    def update(self):
        self.velX = 0
        self.velY = 0

        if self.left_pressed and not self.right_pressed:
            self.velX = -self.speed
        if self.right_pressed and not self.left_pressed:
                self.velX = self.speed
        if self.up_pressed and not self.down_pressed :
             self.velY = -self.speed
        if self.down_pressed and not self.up_pressed :
            self.velY = self.speed

        self.x += self.velX
        self.y += self.velY

        self.rect = pygame.Rect(int(self.x), int(self.y), 32, 32)
        pos = self.rect.midbottom
        if self.trail:
            if self.trail[-1] != pos:
                self.trail.append(pos)
        else:
            self.trail = [pos, pos]

    def push(self,win,player):

        self.y = 570

        while self.running == False:

            for event in  pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_LEFT:
                        self.left_pressed = True
                    if event.key==pygame.K_RIGHT:
                        self.right_pressed = True
                    if event.key == pygame.K_BACKSPACE:
                        self.running = True
                        main_game()

                if event.type == pygame.KEYUP:
                    if event.key == pygame.K_LEFT:
                        player.left_pressed = False
                    if event.key == pygame.K_RIGHT:
                        player.right_pressed = False

            win.fill((12, 24, 36))
            player.draw(win)
            player.main()
            pygame.draw.lines(win, (player.color), False, player.trail, 2)
            
            pygame.display.flip()
            clock.tick(60)
    





player = Player(WIDTH / 2, 570)


def main_game():


    while player.running==  True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:

                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    player.left_pressed = True
                if event.key == pygame.K_RIGHT:
                    player.right_pressed = True
                if event.key == pygame.K_UP:
                    player.up_pressed = True
                if event.key == pygame.K_DOWN:
                    player.down_pressed = True
                if player.y >= 560:
                    if event.key == pygame.K_BACKSPACE:
                        player.running = False
                        player.push(win,player)
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT:
                    player.left_pressed = False
                if event.key == pygame.K_RIGHT:
                    player.right_pressed = False
                if event.key == pygame.K_UP:
                    player.up_pressed = False
                if event.key == pygame.K_DOWN:
                    player.down_pressed = False



        win.fill((12, 24, 36))
        player.draw(win)
        player.main()
        
        
        pygame.draw.lines(win, (player.color), False, player.trail, 2)
        pygame.display.flip()
        clock.tick(60)

player.push(win,player)
import pygame,sys
宽度,高度=800600
pygame.init()
win=pygame.display.set_模式((宽度、高度))
pygame.display.set_标题(“Qix”)
clock=pygame.time.clock()
#球员级别
职业球员:
定义初始化(self,x,y):
self.x=int(x)
self.y=int(y)
self.rect=pygame.rect(self.x,self.y,32,32)
self.color=(250、120、60)
self.velX=0
self.velY=0
self.left_pressed=False
self.right\u pressed=False
self.up\u pressed=False
self.down\u pressed=False
自身速度=6
self.rect.midbottom=self.rect.midbottom
self.trail=[]
self.EnterPush=False
self.running=False
self.pos=pygame.Vector2(self.rect.center)
def主(自):
self.update()
self.check_collisons()
def抽签(自我,赢):
pygame.draw.rect(win,self.color,self.rect)
def检查碰撞(自):
如果self.x>=760:
self.x=760
elif self.x=570:
self.y=570
elif self.y=560:
如果event.key==pygame.K_退格:
player.running=False
玩家。推(赢,玩家)
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_左:
player.left_pressed=False
如果event.key==pygame.K_RIGHT:
player.right\u pressed=False
如果event.key==pygame.K_UP:
player.up\u按下=错误
如果event.key==pygame.K_向下:
player.down\u按下=错误
胜利填充((12,24,36))
球员。平局(获胜)
player.main()
pygame.draw.lines(赢,(玩家.颜色),假,玩家.轨迹,2)
pygame.display.flip()
时钟滴答(60)
玩家。推(赢,玩家)
您可以阅读此docx文件以获得更好的解释--
我的游戏基于Qix。

请提供Oh和解决您的问题。只要找到拐角处的坐标,然后从这些坐标中找出它,也许你可以阅读docx文件,我说的是填充区域,代码是为了让你更容易。我想找到要填充的轨迹之间的区域,现在可以了吗??