2009-09-18 2 views
1

나는 지뢰 찾기 퍼즐을 해결할 수있는 프로그램 작업에 바빴다. UI로 내려 갔을 때, 셀 당 하나씩 같은 컨트롤을 백 개 이상 인스턴스화하는 아이디어를 크게 싫어합니다. 모든 드로잉 및 입력 자체를 처리하는 사용자 지정 컨트롤을 만들어야합니까? 어떤 접근 방식을 제안합니까?지뢰 찾기 UI 컨트롤 만들기?

저는 WPF를 사용하고 있습니다. 저는 꽤 새로 왔습니다. 어떤 포인터가 굉장합니다.

답변

2

예 맞춤 컨트롤은 좋은 생각입니다. 또한 M-V-VM은 이와 같은 상황에서 반드시 필요합니다. 앱의 복잡성을 크게 줄일 수 있습니다.

저는 UniformGrid를 사용하고 Buttons를 사각형으로 사용했습니다. "?"기호를 추가하려면 tri-state 사용자 정의 버튼을 만들어야합니다. 중간 상태. 당신은 코드에서 모델이 아닌 컨트롤을 처리

public class MineSquare : INotifyPropertyChanged 
{ 
    // exploded, number, or nothing 
    pubic ImageSource ButtonImage {get;private set;} 
    // true, then goes to false when clicked 
    public bool CanClick {get; private set;} 
    // bound to the Command of the button 
    public ICommand Click {get; private set;} 
} 

처럼

은 버튼의 모델이 보일 것이다. 9 개의 MineSquares를 UniformGrid에 바인딩 된 ViewModel의 ObservableCollection에 드롭하면 3x3 지뢰 찾기 게임을 사용할 수 있습니다. 각 버튼은 자체 논리를 처리합니다. 뷰 모델을 통해 모델에 연결하여 모든 사각형을 반복하고 모든 사람이 클릭했는지 확인할 수 있습니다.

+0

지뢰 찾기 -보기 -보기 지뢰 찾기? – MusiGenesis

+0

이봐, 적어도 나는 "필수적이다"는 "피트를 위해서"지뢰 찾기에 심각한 과잉이라고 말할 수는 없다. : P – MusiGenesis

+0

ㅎ ... MVC는 모든 UI 상황에서 반드시 필요하다고 생각합니다. 냉각 된, 그 사라 ... – Will

0

나는 소유자가 그린 단일 컨트롤을 만들어야한다고 생각합니다. WPF는 멋지지만 WPF 앱은 양식의 총 컨트롤 수에 대해 여전히 동일한 제한이 있으므로 Minesweeper의 각 셀에 대해 별도의 컨트롤을 사용하는 것은 여전히 ​​문제가됩니다.

지뢰밭은 꽤 좋아하지만, 내가 좋아하는만큼. 어쩌면 직사각형 대신 셀을 6 각형으로 만들고 광산을 배열하여 더러운 단어 나 다른 것을 철자하게 만들 수 있습니다.

+0

나는 새로운 것을 배우기 위해 이렇게하고 있습니다. 이전에는 무차별 대입을 사용하지 않고 스도쿠 퍼즐을 풀기위한 프로그램을 작성했습니다. 여기서 목표는 컨트롤 생성을 배우고 무차별 대입을 사용하지 않고 지뢰 찾기를 해결하는 데 필요한 경험적 방법을 쓰는 재미를 얻는 것입니다. – Amy