pygame.gfxdraw.pixel(surface, x, y, color)
будет рисовать один пиксель на заданной поверхности. Также вам нужно будет добавить import pygame.gfxdraw
.
РЕДАКТИРОВАТЬ: Полный код:
import pygame.gfxdraw
import pygame
import random
width = 1680
height = 1050
screen = pygame.display.set_mode((width, height))
clock = pygame.time.Clock()
running = True
x = [i for i in range(width - 10)]
x_full = [i for i in range(width)]
y = 100
y_full = [i for i in range(height // 2)]
while running:
for i in x:
for j in y_full:
pygame.gfxdraw.pixel(screen, i, j, pygame.Color("red"))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(1)
Попробуйте проверить это таким образом, я установил размер окна, чтобы он соответствовал разрешению моего монитора, поэтому он идет полноэкранный. x_full
и y
должны дать вам горизонтальную линию. А если вычесть, например, 10, получится немного более короткая строка, и наоборот с y_full
и некоторым случайным x
. Также использование (width//2, height//2)
будет охватывать ровно четверть экрана. Я думаю, что это точно, и что pygame.gfxdraw.pixel(screen, i, j, pygame.Color("red"))
отображает только один пиксель, как и должно. В вашем коде вы используете random
для отображения пикселей, и он добавляет их 240 в секунду, поэтому вы очень быстро получаете кучу пикселей в случайных положениях, в результате чего пиксели, близкие друг к другу, выглядят как «более крупные». Думаю, вот что здесь происходило. Пожалуйста, поправьте меня, если я ошибаюсь. Также сделайте маленькое окно, например (100, 100)
, и нарисуйте один пиксель в (50, 50)
так, чтобы его было легче увидеть. Если вы используете windows, используйте лупу для проверки.
ВАЖНО: при тестировании этого с большим количеством пикселей делайте это ВНЕ l oop, потому что для их отображения потребуется много мощности процессора. Надеюсь, это ответит на ваш вопрос