簡體   English   中英

pygame rect 大小沒有改變

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM