Python 如何在Pygame中创建边界

Python 如何在Pygame中创建边界,python,pygame,Python,Pygame,我试图使我的游戏的某个区域有一个边界,并使用一个大小来不断改变我的代码,使其适用于一个大小: 代码如下: # screen, xpos, ypos, height, width, border width, color def draw_borders(s, x, y, h, w, bw, c): draw(s, color, x, y, w, bw) draw(s, color, x, y, bw, h) draw(s, color, x, h+bw, w, bw)

我试图使我的游戏的某个区域有一个边界,并使用一个大小来不断改变我的代码,使其适用于一个大小:

代码如下:

# screen, xpos, ypos, height, width, border width, color
def draw_borders(s, x, y, h, w, bw, c):
    draw(s, color, x, y, w, bw)
    draw(s, color, x, y, bw, h)
    draw(s, color, x, h+bw, w, bw)
    draw(s, color, w, y+bw, bw, h)
# draw is just a function that calls pygame.draw.rect with all the values given


def draw(s, color, x, y, w, h):
    pygame.draw.rect(s, color, (x,y,w,h))
此操作使用的数据是:

# sw = screen width
# I have my default sw at 500x500 but it works for any window size
draw_borders(10, 10, sw-20 sh-20)
问题是框不对齐,因此当值不同时,构成边框的4个框不匹配以构成实际边框,因此我无法获得未定义为窗口大小的框

所以我想我的问题是:

1-有没有更简单的方法来制作边界


2-如果不是,我如何使边框对齐,无论传入的数据是什么?

如果要绘制边框,则可以通过设置
宽度
参数直接使用

def绘制边界(s、x、y、w、h、bw、c):
pygame.draw.rect(s,c,(x,y,w,h),bw)
或者绘制闭合多边形

def绘制边界(s、x、y、w、h、bw、c):
pygame.draw.line(s,c,True,[(x,y),(x+w,y),(x+w,y+h),(x,y+h)],bw)


如果要消除拐角处的缺陷,则必须将边界缝合为4个矩形:

def绘制边界(s、x、y、w、h、bw、c):
pygame.draw.rect(s,c,(x,y,w,bw))
pygame.draw.rect(s,c,(x,y+h-bw,w,bw))
pygame.draw.rect(s,c,(x,y,bw,h))
pygame.draw.rect(s,c,(x+w-bw,y,bw,h))
或通过4个单独的行:

def绘制边界(s、x、y、w、h、bw、c):
pygame.draw.line(s,c,(x-bw//2+1,y),(x+w+bw//2,y),bw)
pygame.draw.line(s,c,(x-bw//2+1,y+h),(x+w+bw//2,y+h),bw)
pygame.draw.line(s,c,(x,y-bw//2+1),(x,y+h+bw//2),bw)
pygame.draw.line(s,c,(x+w,y-bw//2+1),(x+w,y+h+bw//2),bw)

您所说的“不对齐”是什么意思?到底发生了什么,它与应该发生的有何不同?您需要做些什么来引起问题?(例如,在调整窗口大小后窗口才更新时,它看起来是否正确?)图片帮助。另外,请确保您使用
draw_borders
的示例与您的代码完全匹配。什么是
w
h
?它是宽度和高度还是坐标?你能展示
draw
的实现吗?你能展示
draw
功能吗。@QuiYU完成(我不知道标签是否工作了tho)@rabbi76 w和h确实是宽度和高度,我试着用函数上方的注释来展示它(同样不知道标签是否工作了),它工作得很好谢谢!最后,我选择了第二个选项,只是因为弯角!你也可以把两边画成一条粗线吗?@KarlKnechtel是的,但这没什么区别。我已经扩展了答案。