2010-04-07 5 views
1

그래서 저는 일하고 두어 시간 동안 노력했습니다. BubbleBreaker 유형의 게임을 만들고 있습니다. for 루프 나 while을 사용하여 할 수 있지만 Linq를 사용하는 연습을하려고합니다. 여기 pesudo 코드에서 수행하려고하는 것이 있습니다.Linq에서이 작업이 가능할 지 알 수 있습니까?

각 거품에는 열 및 행 속성이 있습니다. 버블이 Column 속성에서 하나를 빼고 같은 색 버블을 찾으면 그것을 선택하고 -1을 빼고 거기에 두 개의 버블이 동일한 색 버블이 있는지 확인해야합니다. 그런 다음 -2를 빼는 등의 조치가 취해집니다. 그래서 내가 뭘하려고 다음

var test= _theBubbles.TakeWhile((i, s) => i.BubbleColor== bubble.BubbleColor)//Then somehow tell it to do bubble.Column-s 

와 빼기의 bubble.Column에서 같은

+2

당신이 필요 '_theBubbles' 콜렉션이 좋은 대답을 얻기 위해 무엇을 포함하는지 정의하십시오. 단일 열입니까? 거품의 전체 그리드? – LBushkin

답변

1

이의이 _theBubbles가 목록으로 가정 아이디어는 거품이 밤은 때까지 열을 찾고 유지하는 것입니다 그래서입니다 게임 보드에있는 모든 거품의 이 경우, 같은 색깔 주어진 하나의 아래에있는 모든 거품을 찾으려면 다음 쿼리를 사용할 수있는 특정 시작 거품을 givena (내가 가장 아래 행은 행 제로라고 가정) :

var bubble = ... // some known bubble 
var sameColorBubblesBelowTheBubble = 
    _theBubbles.Where(b => b.Column == bubble.Column && 
         b.Row < bubble.Row) 
       .OrderByDescending(b => b.Row) 
       .TakeWhile((b,i) => b.BubbleColor == bubble.BubbleColor); 
+0

그래, 고마워, 그게 내가 원하는 걸 해. 나는 행의 거품이 그들의 옆에 거품을 가지고있을 수 있기 때문에 내가 이것을 생각하지 않았지만 그 거품은 더 많은 거품을 가질 수 있었다고 생각한다. –

관련 문제