2014-11-12 3 views
0

Как я могу получить один пиксельный цвет RGB в своей 2D-игре? Мне нужно сравнить его с красным цветом (255,0,0), поэтому мне это нужно (R, G, B). Я попытался использовать метод get_at() следующим образом:Получите 1 пиксель RGB-цвета в pygame

if background.get_at(x,y) == (255,0,0): 
    print("same") 
else: 
    print("not same") 

Но это не сработало.

+0

Вы можете получить лучший ответ на [gamedev.stackoverflow.com] (http://gamedev.stackoverflow.com) для вашего вопроса. – ashes999

+0

Что не сработало? Получили ли вы ошибку, если да, дайте нам трассировку стека. Разве это не сравнивалось с равными? Затем попробуйте 'print (background.get_at (x, y))'. Нам нужна дополнительная информация, чтобы помочь вам. – msw

ответ

0

код:

import pygame 
pygame.init() 
background = pygame.display.set_mode([640,480]) 
background_colour = (3, 3, 251) 
background.fill(background_colour) 
pygame.display.flip() 

print(background.get_at(2,2)) 
if background.get_at(background(2,2)) == background_colour: 
    print("Same") 
else: 
    print("Not same:") 

Ошибка:

Traceback (most recent call last): 
File "C:/Users/Kaspar/Desktop/proov13.py", line 8, in <module> 
print(background.get_at(2,2)) 
TypeError: function takes exactly 1 argument (2 given) 
+0

Почему это опубликовано как ответ? Его следует добавить к вашему вопросу. – elParaguayo

0

Глядя на Pygame документы: http://www.pygame.org/docs/ref/surface.html#pygame.Surface.get_at Вам нужно сделать:

background.get_at((2,2)) 

Это проходит единственный аргумент функции , в этом случае аргументом является кортеж (2,2)

Кроме того, если вам нужен цвет в форме (255,0,0), тогда вам нужно позвонить tuple(background.get_at((2,2))) (при условии, что вы используете версию pygame> 1.9.0).

Смежные вопросы