如何解决OOP Pygame 圈
我正在创建一个游戏,我需要在角色周围创建一个戒指。我编写了用于创建墙的 OOP,如下所示,但我不知道如何修改此代码以便它可以在我的播放器周围创建一个环。
class Wall(pygame.sprite.Sprite):
def __init__(self,x,y,width,height,color):
super().__init__()
self.image = pygame.Surface([width,height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.y = y
self.rect.x = x
另外,我想传入的变量是颜色、半径、宽度/厚度和 x & y 坐标,例如
circle = Circle(colour,radius,y)
绘图精灵编辑:
spriteList.add(wallList)
spriteList.draw(screen)
非常感谢任何帮助, 干杯
解决方法
画一个圆
pygame.draw.circle(surface,color,center,radius)
如果你只是想画一个圆形精灵,你需要做的就是指定圆的半径和宽度(线宽):
class Circle(pygame.sprite.Sprite):
def __init__(self,circleColor,radius,width,x,y):
super().__init__()
self.image = pygame.Surface((radius * 2,radius * 2),pygame.SRCALPHA)
pygame.draw.circle(self.image,(radius,radius),width)
self.rect = self.image.get_rect(center = (x,y))
使用此解决方案,您需要在同一位置分别绘制 2 个对象,精灵和圆。
然而,如果你想创建一个围绕它的圆圈的单个精灵对象,你需要创建一个比精灵图像大的透明表面。 blit
表面上的精灵并在其周围画一个圆圈。下面的 image
是一个 pygame.Surface
对象:
import math
class MyPlayer(pygame.sprite.Sprite):
def __init__(self,y,image,width):
super().__init__()
diameter = math.hypot(*image.get_size())
radius = diameter // 2
self.image = pygame.Surface((diameter,diameter),pygame.SRCALPHA)
self.image.blit(image,image.get_rect(center = (radius,radius))
pygame.draw.circle(self.image,y))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。