[英]pygame rect size not changing
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, (255,0,0), (lx, ly, 200, 200))
print("..", self.ln, 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,0))
#pygame.draw.rect(self.win, (255,255,255), (self.x, self.y, 15, 15))
main().walls()
pygame.display.flip()
main().mainLoop()
如果我通過編輯pygame.draw.rect(self.win, (255,255,255), (lx, ly, 200, 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))
可以通過使用enumerate
來簡化代碼。 完整的方法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, ly, wall_size, wall_size)
if ch == ' ':
pygame.draw.rect(self.win, (255,255,255), rect)
if ch == 'a':
pygame.draw.rect(self.win, (255,0,0), rect)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.