Проблема с функцией def.

zensolix

Новичок
Пользователь
Фев 17, 2021
6
0
1
Ниже представлен работающий код, но хотелось бы его сократить с помощью функции def. У самого возникают трудности с реализацией. Если кто знает как это сделать, помогите пожалуйста, буду благодарен

Python:
import pygame

pygame.init()

display_w = 800 
display_h = 600

display = pygame.display.set_mode((display_w, display_h)) 

pers_width = 60
pers_height = 100

pers_x = display_w // 4
pers_y = display_h - 100 - pers_height

pers_x_1 = display_w // 4
pers_y_1 = display_h - 600 + pers_height

pers_x_2 = display_w // 2
pers_y_2 = display_h - 100 - pers_height

pers_x_3 = display_w // 2
pers_y_3 = display_h - 600 + pers_height

def rungame():
    game = True
    while game: 
        for event in pygame.event.get():
            if event.type == pygame.QUIT: 
                pygame.quit() 
                quit()
display.fill((255, 255, 255)) 
pygame.draw.rect(display, (0,186,0), (pers_x, pers_y, pers_width, pers_height)) 
pygame.draw.rect(display, (168,0,56), (pers_x_1, pers_y_1, pers_width, pers_height)) 
pygame.draw.rect(display, (58,156,78), (pers_x_2, pers_y_2, pers_width, pers_height)) 
pygame.draw.rect(display, (11,0,9), (pers_x_3, pers_y_3, pers_width, pers_height)) 
pygame.display.update() 
rungame()
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
не представляю как сокращать, когда не сказано, что затеивалось изначально??
запустил, вижу 4 прямоугольника разного цвета, и?
 

zensolix

Новичок
Пользователь
Фев 17, 2021
6
0
1
не представляю как сокращать, когда не сказано, что затеивалось изначально??
запустил, вижу 4 прямоугольника разного цвета, и?
Код:
pers_x = display_w // 4
pers_y = display_h - 100 - pers_height

pers_x_1 = display_w // 4
pers_y_1 = display_h - 600 + pers_height

pers_x_2 = display_w // 2
pers_y_2 = display_h - 100 - pers_height

pers_x_3 = display_w // 2
pers_y_3 = display_h - 600 + pers_height
Надо сократить вот этот момент
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
ну только
Код:
pers_x = display_w // 4
pers_y = display_h - 100 - pers_height
# заменить на
pers_x, pers_y = display_w // 4, display_h - 100 - pers_height
на любителя.......
 

zensolix

Новичок
Пользователь
Фев 17, 2021
6
0
1
Код:
def rectangle(height, division):
    for i in range(1):
        pers_x = display_w // division[0]
        pers_y = display_h - height[0] - pers_height
        pers_x = display_w // division[1]
        pers_y = display_h - height[1] + pers_height
rectangle([100, 600], [4, 2])
Сделал вот так, но прямоугольник один и отображается лишь в ЛВ углу
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Ниже представлен работающий код, но хотелось бы его сократить с помощью функции def
Вот пример:
Python:
import pygame

pygame.init()

display_w = 800
display_h = 600

display = pygame.display.set_mode((display_w, display_h))


def rectangle(height, division, pers_width, pers_height):
    pers_x = display_w // division
    pers_y = display_h - height + pers_height
    return (pers_x, pers_y, pers_width, abs(pers_height))


def rungame():
    game = True
    while game:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()


display.fill((255, 255, 255))
pygame.draw.rect(display, (0, 186, 0), rectangle(100, 4, 60, -100))
pygame.draw.rect(display, (168, 0, 56), rectangle(600, 4, 60, 100))
pygame.draw.rect(display, (58, 156, 78), rectangle(100, 2, 60, -100))
pygame.draw.rect(display, (11, 0, 9), rectangle(600, 2, 60, 100))
pygame.display.update()
rungame()
 

Форум IT Специалистов