Domanda

Sono stato impegnato a lavorare su un programma in grado di risolvere enigmi di Minesweeper (per nessun altro motivo che penso sia divertente). Quando si tratta dell'interfaccia utente, tuttavia, non mi piace molto l'idea di creare un'istanza di oltre cento dello stesso controllo, uno per cella. Devo creare un controllo personalizzato che gestisca tutto il suo disegno e si inserisca da solo? Quale approccio suggerite voi ragazzi?

Sto usando WPF e sono abbastanza nuovo. Qualsiasi suggerimento sarebbe fantastico.

È stato utile?

Soluzione

Sì, un controllo personalizzato sarebbe una buona idea. Inoltre, M-V-VM è un must in una situazione come questa; ridurrà notevolmente la complessità della tua app.

Prendo un UniformGrid e uso i pulsanti come quadrati. Dovresti creare un pulsante personalizzato in tre stati se desideri aggiungere il "? & Quot; stato intermedio.

Il modello per il pulsante sarebbe simile

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;}
}

Gestisci il modello in codice anziché i controlli. Inserisci nove MineSquares in ObservableCollection sul tuo ViewModel associato a UniformGrid e avrai un gioco dragamine 3x3. Ogni pulsante gestisce la propria logica. Puoi agganciarti ai modelli tramite il modello di visualizzazione per scorrere su tutti i quadrati e determinare se è stato fatto clic su tutti.

Altri suggerimenti

Penso che dovresti creare un unico controllo disegnato dal proprietario. WPF è interessante, ma un'app WPF ha ancora le stesse limitazioni per quanto riguarda il numero totale di controlli in un modulo, quindi avere un controllo separato per ogni cella in Minesweeper sarebbe comunque problematico.

Minesweeper è abbastanza giocato, per quanto io lo adoro da solo. Forse potresti divertirti di più rendendo le celle esagonali invece che rettangolari e organizzando le miniere in modo che sillabino parole sporche o qualcosa del genere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top