Surface.fill () не работает в моей программе pygame, хотя она (0, 0, 255) и функция .fill () находятся внутри основного цикла - PullRequest
1 голос
/ 27 апреля 2020

Вот мой код:

import pygame
pygame.init()

win_x = 1000
win_y = 400
win = pygame.display.set_mode((win_x, win_y))

pygame.display.set_caption("i think its caled binary sort")

BLUE = (0, 0, 255)

array = [3, 9, 7, 5, 8, 3, 1]
picarray = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]

four = pygame.image.load("four.png")

run = True
while run:
    win.fill(BLUE)

    win.blit(four, (0, 0))

    for i in range(0, len(array) -1):
        for a in range(0, len(array)-1 -i):
            if array[a] > array[a+1]:
                print(array)
                array[a], array[a+1] = array[a+1], array[a]
    print(array)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

pygame.quit()

Я сказал, что цвет СИНИЙ (0, 0, 255) и в моем основном l oop он говорит win.fill (СИНИЙ), но для по какой-то причине я получаю черный экран при запуске программы.

1 Ответ

1 голос
/ 27 апреля 2020

Я считаю, что вам нужно позвонить pygame.display.flip() в пределах вашего run l oop, рядом с нижней частью:

while run:
    win.fill(BLUE)

    win.blit(four, (0, 0))

    // sort
    ...
    print(array)

    // look for quit
    ...

    pygame.display.flip()

Это также улучшит качество вашего кода, чтобы переместить сортировку и //look for quit код в отдельные функции.

Ваш алгоритм сортировки называется «пузырьковая сортировка», потому что наибольшее значение «пузырится» наверху, затем следует наивысшее значение и т. д. Вы можете сделать его немного более эффективным, также поместив самое низкое значение в нижнее, самое высокое, затем самое низкое, затем самое высокое оставшееся, затем самое низкое оставшееся и так далее ... хотя этот код значительно сложнее. Здесь у вас, вероятно, самый простой алгоритм сортировки кода.

И учитывая, сколько элементов вы сортируете, эффективность на самом деле не имеет большого значения.

О, и called пишется с двумя буквами. ;)

РЕДАКТИРОВАТЬ:

Еще одна вещь ... Pygame требует, чтобы ваш render шрифт, и Blit, который отображал текст в определенной позиции, чтобы нарисовать его. Если вы не написали какой-либо код в другом месте для обработки всего этого, вы будете print выводить свой массив в стандартный вывод, а не окно пигмеев.

Здесь есть учебник по визуализации текста: https://nerdparadise.com/programming/pygame/part5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...