using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; namespace zagadki_3._0 { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); // tworzymy obiekt klasy MathPuzzle mathPuzzle = new MathPuzzle(); // generujemy początkowe pytanie labelPytanie.Text = mathPuzzle.generateCalculation(); // bindujemy pickerZakres ItemsSource // lista przedstawia zakresy liczb w równaniach this.BindingContext = new[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000 }; } // pole z nową klasą MathPuzzle do której zostaly oddelegowane potrzebne funkcjonalności private MathPuzzle mathPuzzle; // metoda wybierająca zakres liczb za pomocą komponentu Picker void pickerZakres_SelectedIndexChanged(object sender, EventArgs e) { var picker = (Picker)sender; int selectedIndex = picker.SelectedIndex; if (selectedIndex != -1) { // wybieramy zakres liczb mathPuzzle.range = (int)picker.ItemsSource[selectedIndex]; // wybieramy pytanie z nowym zakresem labelPytanie.Text = mathPuzzle.generateCalculation(); // przekazujemy focus do pola Entry OnAppearing(); } } // metoda wybierająca operator za pomocą komponentu Picker void pickerOperator_SelectedIndexChanged(object sender, EventArgs e) { var picker = (Picker)sender; int selectedIndex = picker.SelectedIndex; if (selectedIndex != -1) { // wybieramy operatora mathPuzzle.setOperator((string)picker.ItemsSource[selectedIndex]); // wybieramy pytanie z nowym operatorem labelPytanie.Text = mathPuzzle.generateCalculation(); // przekazujemy focus do pola Entry OnAppearing(); } } // metoda obslugująca pole textowe po wpisaniu wyniku i naciśnięciu ok private void entryOdpowiedz_Completed(object sender, EventArgs e) { // jeśli uzytkownik odpowiedzial dobrze generujemy kolejne pytanie if (mathPuzzle.checkResult(entryOdpowiedz.Text)) { labelNaglowek.Text = "Dobrze"; labelNaglowek.TextColor = Color.Green; // kolejne pytanie labelPytanie.Text = mathPuzzle.generateCalculation(); entryOdpowiedz.Text = ""; } // jesli użytkownik odpowiedzial żle czekamy aż odpowie dobrze else { labelNaglowek.Text = "Źle"; labelNaglowek.TextColor = Color.Red; entryOdpowiedz.Text = ""; } // wywolanie focus na komponencie Entry (pokazuje sie klawiatura) OnAppearing(); } // focus na komponencie Entry (pokazuje sie klawiatura) // metoda wywolywana jest po uruchomieniu aplikacji protected override async void OnAppearing() { base.OnAppearing(); await Task.Delay(500); await Task.Run(() => { entryOdpowiedz.Focus(); }); } } }