Как придать каждому кругу случайный цвет в pygame?

#python #pygame #draw

#python #pygame #рисовать

Вопрос:

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

 import pygame as pg
import random as rd

pg.init()
screen = pg.display.set_mode((800, 600))

p_1_x = 200
p_1_y = 200
p_1_change_x = 0

def p_1(x, y):
    player_1 = pg.draw.circle(screen, (2, 2, 0), (x, y), 15)


locations = []
small_color = []

for i in range(50):
    red = rd.randint(0, 220)
    blue = rd.randint(0, 220)
    green = rd.randint(0, 220)
    x = rd.randint(100, 700)
    y = rd.randint(100, 500)
    locations.append((x, y))
    small_color.append((red, blue, green))


while True:
    screen.fill((255, 255, 255))
    for event in pg.event.get():
        if event.type == pg.QUIT:
            pg.quit()
        if event.type == pg.KEYDOWN:
            if event.key == pg.K_RIGHT:
                p_1_change_x = 1
            if event.key == pg.K_LEFT:
                p_1_change_x = -1

        if event.type == pg.KEYUP:
            if event.key == pg.K_RIGHT or pg.K_LEFT:
                p_1_change_x = 0

    p_1_x  = p_1_change_x

    p_1(p_1_x, p_1_y)
    for locate in locations:
        pg.draw.circle(screen, (small_color[i]), locate, 5)

    pg.display.update()
  

Комментарии:

1. Рядом с каждым ответом есть галочка ✔, вы можете принять ответ и одобрить его, если он подходит для вас, ✅ поставив галочку, заранее спасибо

Ответ №1:

В основном цикле вы используете i который никогда не меняется. Используйте enumerate для возврата индекса при циклическом просмотре коллекции местоположений.

Попробуйте этот код:

 for i,locate in enumerate(locations):
    pg.draw.circle(screen, (small_color[i]), locate, 5)
  

Ответ №2:

убедитесь, что вы импортируете random библиотеку в первой строке:

 import random as rd
  

Вот простая функция, которая генерирует случайный цвет:

 def random_color():
    r = rd.randint(0, 255)
    g = rd.randint(0, 255)
    b = rd.randint(0, 255)
    return (r, g, b)
  

таким образом, вы можете вызвать его, когда вам когда-либо понадобится:

     color = random_color()
    draw.circle(screen, color, (x, y), SIZE)   
  

Репозиторий Github

Я создаю репозиторий в GitHub и внес некоторые изменения, точки разноцветные, новая точка приобретает случайный цвет, а шар становится больше всякий раз, когда съедает точку.

введите описание изображения здесь

https://github.com/peymanmajidi/Ball-And-Dots-Game__Pygame