Pygame Рисование нескольких прямоугольников - PullRequest
0 голосов
/ 07 декабря 2018

Я изучаю Python.Идея приложения состоит в том, что есть 8 прямоугольников, которые при нажатии выключают или представляют двоичный файл.Каждый прямоугольник представляет бит, и будет отображаться десятичный эквивалент.

Мне трудно перевести это в хорошо написанное приложение без жесткого кодирования всего.Я жестко закодировал 8 ритов, используя .fill, но я бы предпочел использовать функцию, которая делает это автоматически.Я не хочу полный код, я бы предпочел, чтобы кто-то указывал мне правильное направление в отношении структуры кода, которому я должен следовать.Должен ли я использовать класс для инициирования нового прямоугольника, а затем использовать метод рендеринга с циклом for для запуска массива прямоугольников, если да, то как бы я отобразил прямоугольники в строке?

Чтобы нарисоватьПрямоугольники, которые я придерживаюсь в display.fill ()

Я подумал о том, чтобы жестко связать свойства каждого прямоугольника в кортеж кортежей, а затем отобразить каждый из них с помощью цикла for, это хороший подход?

1 Ответ

0 голосов
/ 07 декабря 2018

Вот шаблон, который вы можете использовать:

import pygame
import sys

def terminate():
    pygame.quit()
    sys.exit()

pygame.init()

black = (0,0,0)
white = (0,0,0)

clock = pygame.time.Clock()
fps=30

screen_height = 520
screen_width = 650
screen = pygame.display.set_mode((screen_width,screen_height)

class Rect(pygame.sprite.Sprite):
    def __init__(self,x,y,width,height,color,value):
        super().__init__()
        self.image = pygame.Surface([width, height])
        self.image.fill(color)
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.value = value
    def change_value(self,color,value):
        self.image.fill(color)
        self.value=value

rects = pygame.sprite.Group()

rect = Rect(50,50,100,100,black)
rects.add(rect)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            terminate()

    screen.fill(white)
    rect.draw(screen)

    pygame.display.flip()

    clock.tick(fps)

Использование группы позволит вам нарисовать все прямоугольники одновременно.Вы можете изменить прямоугольники, используя функцию change_value.

...