如何解决pygame rect大小不变
import pygame
class main():
def __init__(self):
self.scrX = 1000
self.scrY = 1000
self.win = pygame.display.set_mode((self.scrX,self.scrY))
self.ln = 0
self.li = 0
self.lx = self.li + 400
self.ly = self.ln + 400
self.v = 1
self.map = [" aaaaaaa aaaaaaaaa"," aaaaaaa aa aaaa","a aaaaaa a aaaa","aa aaaaa aaaa","aaaaaaaaaaaaa aaaa","a aaaaaa aaaaaa","a a aaaa aaa a","a aa aaa aaa a","a aaaaaaaa aaa a","aaa aaaaaaaa aaaaa a","aaa aaaaa a","aaaaaaaaaaaaaaaaaaaa",]
def walls(self):
for y in range(0,192):
z = 350
if self.li == len(self.map[self.ln]):
self.ln += 1
self.li = 0
print("n/")
if ' ' in self.map[self.ln][self.li]:
lx = self.li + z
ly = self.ln + z
pygame.draw.rect(self.win,(255,255,255),(lx,ly,200,200))
print(".",self.ln,self.li)
self.li += 1
if 'a' in self.map[self.ln][self.li]:
lx = self.li + z
ly = self.ln + z
pygame.draw.rect(self.win,0),200))
print("..",self.li)
self.li += 1
def mainLoop(self):
while True:
pygame.time.delay(10)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
self.win.fill((0,0))
#pygame.draw.rect(self.win,(self.x,self.y,15,15))
main().walls()
pygame.display.flip()
main().mainLoop()
如果我通过编辑pygame.draw.rect(self.win,200))
来更改墙壁的大小,则在运行时它不会改变墙壁的大小,我尝试过为墙壁的x和y添加间距,但不会更改任何内容我也尝试更改窗口大小,但这也没有更改
任何帮助将不胜感激
解决方法
您必须按墙的大小缩放墙的位置。
定义墙段的大小。例如:
wall_size = 20
按线段的大小缩放墙的位置,并用线段的大小绘制一个矩形:
lx = self.li * wall_size + z
ly = self.ln * wall_size + z
pygame.draw.rect(self.win,(255,255,255),(lx,ly,wall_size,wall_size))
可以使用FPU简化代码。完整方法walls
:
class main():
# [...]
def walls(self):
z = 350
wall_size = 20
for y,line in enumerate(self.map):
for x,ch in enumerate(line):
lx = x * wall_size + z
ly = y * wall_size + z
rect = (lx,wall_size)
if ch == ' ':
pygame.draw.rect(self.win,rect)
if ch == 'a':
pygame.draw.rect(self.win,0),rect)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。