질문과 답변

Extra Form

 
 제가 모든 이벤트를 조사하는 메소드를 만들었는데 제대로 작동을 안하더라구요

한번 봐주시고 제대로 작동할 수 있도록 손 봐 주시면 감사하겠습니다.

def check_all_event
for event in $game_map.events.values

for x in 0...@map.width
  for y in 0 ... @map.height
    if x==event.x and y==event.y
        return event.id

next
    end

  end
end

end


의도한 바는 맵의 0부터 넓이와 높이를 x,y 변수에 반복문으로 대입한뒤 이벤트의 x,y 좌표와 비교해서


같으면 이벤트 아이디를 리턴하는 방식으로 했습니다. 그런데 문제는 모든이벤트를 조사해야한다는 목적과 다르게


리턴값이 1개만 나오는것 같아서 질문 드립니다.


답변자 분께서 이 메소드의 방식이 잘못됬다면 아예 새롭게 고쳐 주셔도 됩니다 ㅠ


그럼 답변 기다리겠습니다.

Comment '2'
  • profile
    습작 2012.08.19 14:41

    0.


      하나의 id 밖에 취득하지 못한 까닭은 for를 사용한 반복처리 중 return시켜 해당 함수를 호출한 곳으로 되돌려 보내버렸기 때문입니다. 반복처리 이전에 빈 배열을 하나 생성하고 반복처리시 해당 배열에 추가하는 처리를 해주는 것이 좋습니다. 작성된 코드중  next 구문은 불필요해 보이네요.

     

      해당 맵의 모든 이벤트 id를 배열로 취득하려고 한다면 아래와 같은 방법으로도 처리할 수 있습니다. 어차피 해당 맵의 모든 이벤트에 대한 내용인데 일일이 좌표대조할 필요가 없기도 하지요.


      1. Game_Map 클래스 내부에서 해당 배열의 취득이 필요한 경우.


      @map.events.keys


     2. Game_Map 클래스 외부에서 해당 배열의 취득이 필요한 경우.


      class Game_Map
        attr_reader :map 
      end

      $game_map.map.events.keys


  • ?
    말짱꽝이지롱 2012.08.19 23:30
    감사합니다. 도움이되었네요~

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12442
Board Pagination Prev 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 Next
/ 83