问题描述
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)