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

使用 pygame.draw.circle()

如何解决使用 pygame.draw.circle()

我和我的朋友试图获得一个圆形精灵,我们用矩形做到了,但我们的代码似乎得到了四分之一的圆。 (顺便说一句,“sirkel”在我们的语言中是指圆形,而“firkant”在我们的语言中是指矩形”

我们不知道为什么会发生这种情况。这没有任何意义。我们试图改变位置,看看是否有重叠的东西,但没有。我们正在使用一个名为 Repl.it 的网站,所以它可能存在一些问题,因为它非常有用,它会把东西弄得一团糟,但没有这么多。

这是 main.py:

import pygame
from firkant import Firkant
from sirkel import Sirkel
pygame.init()
PLAYER=0
screen = pygame.display.set_mode([600,600])

from pygame.locals import (
  K_UP,K_DOWN,K_LEFT,K_RIGHT,K_ESCAPE,KEYDOWN,QUIT,)

GREEN = (40,40,40)

pos1=60
pos2=235
pos3=410
posses = [pos1,pos2,pos3]

Firkant1 = Firkant(GREEN,130,130)
Firkant1.rect.x = pos1
Firkant1.rect.y = pos1
Firkant2 = Firkant(GREEN,130)
Firkant2.rect.x = pos2
Firkant2.rect.y = pos1
Firkant3 = Firkant(GREEN,130)
Firkant3.rect.x = pos3
Firkant3.rect.y = pos1
Firkant4 = Firkant(GREEN,130)
Firkant4.rect.x = pos1
Firkant4.rect.y = pos2
Firkant5 = Firkant(GREEN,130)
Firkant5.rect.x = pos2
Firkant5.rect.y = pos2
Firkant6 = Firkant(GREEN,130)
Firkant6.rect.x = pos3
Firkant6.rect.y = pos2
Firkant7 = Firkant(GREEN,130)
Firkant7.rect.x = pos1
Firkant7.rect.y = pos3
Firkant8 = Firkant(GREEN,130)
Firkant8.rect.x = pos2
Firkant8.rect.y = pos3
Firkant9 = Firkant(GREEN,130)
Firkant9.rect.x = pos3
Firkant9.rect.y = pos3
Sirkel1 = Sirkel((0,0),400,300)
all_sprites_list = pygame.sprite.Group()
all_sprites_list.add(Firkant1,Firkant2,Firkant3,Firkant4,Firkant5,Firkant6,Firkant7,Firkant8,Firkant9,Sirkel1)

for a in posses:
  x = a
  for b in posses:
    pass
running = True
while running:
  for event in pygame.event.get():
    if event.type == KEYDOWN:
      if event.key == K_ESCAPE:
        running = False
    screen.fill((100,100,100))
    all_sprites_list.update()
    all_sprites_list.draw(screen)

    pygame.display.flip()

pygame.quit()

这是square.py:

import pygame
WHITE = (255,255,255)
 
SS = 600
class Firkant(pygame.sprite.Sprite):
    
    def __init__(self,color,width,height):
        super().__init__()       
        self.image = pygame.Surface([width,height])
        self.image.fill(WHITE)
        self.image.set_colorkey(WHITE)
        pygame.draw.rect(self.image,(0,height))        
        self.rect = self.image.get_rect()

这是圆.py

import pygame
WHITE = (255,255)
class Sirkel(pygame.sprite.Sprite):
    def __init__(self,height):
        super().__init__()
        self.image = pygame.Surface([width,height])
        self.image.fill(WHITE)
        self.image.set_colorkey(WHITE)
        pygame.draw.circle(self.image,(width,height),200)
        self.rect = self.image.get_rect()

解决方法

pygame.draw.circle 的第三个参数是圆心。如果矩形是 (width,height) 大小,则中心点是 (width // 2,height // 2):

pygame.draw.circle(self.image,color,(width,height),200)

radius = min(width,height) // 2
pygame.draw.circle(self.image,(width // 2,height // 2),radius)

您也可以使用 pygame.Rect 对象的 center 属性:

self.rect = self.image.get_rect()
pygame.draw.circle(self.image,self.rect.center,min(self.rect.center))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。