Posts Tagged ‘menu’

Android Sudoku Solver

Napsal jsem jednoduchou aplikaci pro OS Android, která umí vyřešit zadané sudoku. Tento sudoku řešič jsem psal z nudy a dlouhého čekání na můj Samsung Galaxy S, který je stále na reklamaci. V tomto příspěvku nebudu rozvádět celý zdrojový kód, jen rozvedu pár drobností. Zdrojový kód a samotnou aplikaci (pokud si ji chcete vyzkoušet na svém Android zařízení) si můžete stáhnout na konci tohoto příspěvku.

Ukázka programu

Použitý algoritmus

Algoritmus pro řešení sudoku zde nebudu vůbec rozebírat. Lze použít jakýkoliv jiný algoritmus pro řešení sudoku. Já použil tento, protože jsem jeho zdrojový kód měl na svém disku. Tento algoritmus jsme napsali s mými spolužáky (Martinem Paroubkem a Lukášem Matějů) jako semestrální práci na předmět Teorie grafů a her. Algoritmus původně hledal všechna možná řešení, ale pro tuto aplikaci jsem ho upravil tak, aby vracel pouze první korektní nalezené řešení. Použitý algoritmus využívá metody hladového barvení, přičemž pořadí vrcholů v cyklu volí podle stupně nasycení. Při implementaci algoritmu jsem nejspíše přišel na chybnost algoritmu, která zpomaluje výpočet, ale zatím jsem se chybu nepokoušel nalézt.

Mřížka sudoku

Na mřížku sudoku jsem si napsal vlastní widget. Tento widget vykresluje kromě mřížky také vyplněná čísla a obstarává reakci na dotek displeje. Po vyvolání události onTouchEvent této komponenty se otevře dialog, který umožní výběr čísla na danou pozici.

Dialogy a čekání na návratovou hodnotu

Že zavoláme u dialogu metodu show(), počkáme až skončí a načteme poté data z dialogu? Ale kdepak. Každý si u vývoje GUI v operačním systému Android uvědomit, že se vše děje asynchronně. Na zmíněný problém nám ale postačí OnDismissListener(). Jak jej použít je znázorněnu na následujícím útržku kódu.

numberSelectDialog.setOnDismissListener(new OnDismissListener() {
   public void onDismiss(DialogInterface dialInterface) {
      //reaguj na to, ze byl dialog zavren
   }
});

Tato událost je vyvolána v případě, že je dialog ukončen metodou dismiss(). V případě, že je dialog ukončován metodou cancel(), můžeme použít OnCancelListener.

Menu

Jak vytvořit menu v Android aplikaci je snadné. Jako demonstrace skvěle poslouží Creating Menus.

Soubory ke stažení

Zdrojové kódy programu Sudoku Solver – SudokuSolverSource.zip
Instalační soubor Sudoku Solver – SudokuSolverApk.zip


Hledat


Menu

Archiv

Odkazy