을 그리려고 여러 인스턴스 스프라이트의 개체에 pygame,그리고 첫 번째 중 하나는 올바르게 그립니다 하지만 다음 표시의 배경만

0

질문

내가 만들려고 노력하는 대각선의 행 육각형,그러나려고 할 때 그들을 그리는 첫 번째 중 하나는 작품이다. 스크린샷은 다음과 같습니다의 pygame 창입니다. 이 있어야에 육각형 모든 검 상자입니다.

는 코드는 다음과 같습니다:

import pygame
from pygame.locals import *
from sys import exit

pygame.init()

screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height), 0, 32)

class Hex(pygame.sprite.Sprite):
    def __init__(self, s_len, op):
        super().__init__()
        x, y = op
        root3 = 1.73205080
        self.color = (125,200,24)
        self.op = op
        self.s_len = s_len
        self.points = [(x + (.5 * s_len), y),
                       (x + (1.5 * s_len), y),
                       (x + (2 * s_len), y + ((root3 / 2) * s_len)),
                       (x + (1.5 * s_len), y + (root3 * s_len)),
                       (x + (.5 * s_len), y + (root3 * s_len)),
                       (x, y + (root3 / 2) * s_len)]

        self.image = pygame.Surface([2 * s_len, root3 * s_len])
        self.image.fill((0,0,0))
        pygame.draw.polygon(self.image, self.color, self.points)

        self.rect = self.image.get_rect()
        self.rect.topleft = (x, y)


hex_group = pygame.sprite.Group()

for i in range(7):
    hex_group.add(Hex(50, (i * 75, i * 86)))


while True:

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

    screen.fill((255,255,255))

    hex_group.draw(screen)

    pygame.display.update()

나는 생각한 문제해야 할 수있는 뭔가가 자기와 함께.이미지 만들기에 육류 생성자,하지만 전혀 그것을 해결하는 방법.

pygame python
2021-11-22 05:11:32
1

최고의 응답

1

당신은 그림을 다각형에서 이미지지 않습니다. 의 왼쪽 상단 self.image 가(0,0):

self.points = [(.5 * s_len, 0),
               (1.5 * s_len, 0),
               (2 * s_len, (root3 / 2) * s_len),
               (1.5 * s_len, root3 * s_len),
               (.5 * s_len, root3 * s_len),
               (0, (root3 / 2) * s_len)]

완전 exemple:

import pygame
from pygame.locals import *
from sys import exit

pygame.init()

screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height), 0, 32)

class Hex(pygame.sprite.Sprite):
    def __init__(self, s_len, op):
        super().__init__()
        x, y = op
        root3 = 1.73205080
        self.color = (125,200,24)
        self.op = op
        self.s_len = s_len
        self.points = [(.5 * s_len, 0),
               (1.5 * s_len, 0),
               (2 * s_len, (root3 / 2) * s_len),
               (1.5 * s_len, root3 * s_len),
               (.5 * s_len, root3 * s_len),
               (0, (root3 / 2) * s_len)]

        self.image = pygame.Surface([2 * s_len, root3 * s_len])
        self.image.fill((0,0,0))
        pygame.draw.polygon(self.image, self.color, self.points)

        self.rect = self.image.get_rect()
        self.rect.topleft = (x, y)


hex_group = pygame.sprite.Group()

for i in range(7):
    hex_group.add(Hex(50, (i * 75, i * 86)))


while True:

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

    screen.fill((255,255,255))

    hex_group.draw(screen)

    pygame.display.update()
2021-11-22 05:33:28

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................