에 나는 for 루프를 통해 이와 유사한 실행 타일 맵이 있습니다삭제 스프라이트는 파이 게임
def Draw_Level(x, y, column, obsticles, entities, image_cache):
#Grass#
if column == "G":
g = Grass(x, y, image_cache)
entities.add(g)
#Plain Grass#
elif column == "P":
p = Plain_Grass(x,y, image_cache)
entities.add(p)
#Grass with yellow flower#
elif column == "F":
f = Grass_Flower(x,y, image_cache)
entities.add(f)
#Grass To Sand (50/50 split block) Direct#
elif column == "Y":
q = Grass_To_SandD(x,y, image_cache)
entities.add(q)
#Example If a class
class Grass(Entity):
def __init__(self, x, y, image_cache):
Entity.__init__(self)
self.image = functions.get_image("data/images/Grass.png", image_cache)
self.image.convert()
self.rect = Rect(x, y, 32, 32)
는 말, 예를 들어, 내 마우스는이 중 하나는 x에 클릭 한 y는로 결정 하였다 가장 가까운 32 (블록의 폭과 높이). 스프라이트가 클릭 된 것을 어떻게 알 수 있습니까? 예를 들어 잔디 블록이 화면에 그려지는 좌표가있는 "잔디 블록"을 클릭 한 경우 어떻게 제거합니까?
Entites 모든 개체
나는 개체의 목록에서 호출 할 수있는 방법이 있나요
을 들고 목록을 =? 그것은 List를 통해 List를 호출하는 것을 혼란스럽게합니다. 그래서 나는 갇혀 있습니다 : S.
감사합니다. 나는 그것을 얻을 수 있었다. 또한 적중 테스트에 대한 정보를 제공해 주셔서 감사합니다. – ReallyGoodPie
당신을 진심으로 환영합니다. 이것은 x와 y 경계를 사전 계산하여 Entity에 저장함으로써 가속화 될 수 있음에 유의하십시오. 마찬가지로, 마우스 x, y가 (가상의) 바운딩 박스 (바운딩 박스)의 바깥에있는 경우, 그 중 하나라도 선택하지 않고 함께 쌓인 전체 그룹에 동일한 로직을 적용 할 수 있습니다. 이것은 "사소한 거부"(http://www.expertsmind.com/questions/trivial-rejectioncase-of-cohen-sutherland-line-clipping-30149795.aspx)라고하며 라인 클리핑에 사용됩니다 . – martineau