/// <summary> /// restart aplikacji /// </summary> /// <param name="res">czy okno ma zostać zresetowane</param> private void restart(bool res = true) { firstNumber = true; text = ""; score = 0; lastAction = operacja.none; if (res) { refreshTextLabel(); } }
/// <summary> /// kliknięcie przycisku akcji typu + - itp /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void actionButton(object sender, RoutedEventArgs e) { string act = (sender as Button).Content.ToString(); //jeżeli to C if (act[0] == 'C') { restart(); return; } //żeby wynik nie można było dodawać,mnożyć etc. if (text.Length == 0 && lastAction != operacja.equal) { return; } if (firstNumber) { if (text.Length != 0) { score = double.Parse(text); } else { score = 0; } firstNumber = false; } else { var valid = sum(); if (!valid) { return; } } //ustawia ostatnią akcje lastAction = (operacja)act[0]; //czyści zmienną zawierającą liczby kalkulatora text = ""; //ustawia wynik jako widzialny textWin.Content = score.ToString(); }
/// <summary> /// odczytywanie ostatniej operacji /// wykonywanie jej /// czyszczenie operacji /// wywowyłane za każdym kliknięciem przycisku akcji /// </summary> /// <returns>zwraca czy operacja przebiegła pomyślnie</returns> private bool sum() { double value = double.Parse(textWin.Content.ToString()); switch (lastAction) { case operacja.addition: score += value; break; case operacja.subtraction: score += -value; break; case operacja.multiplication: score *= value; break; case operacja.division: //sprawdzanie czy nie jest dzielone przez 0 if (value == 0) { textWin.Content = "Nie można dzielić przez 0!"; restart(false); return(false); } score /= value; break; case operacja.exponentiation: score = calc.exponentiation(score, (int)value); break; } //ustawiamy lastAction na pustą akcje lastAction = operacja.none; return(true); }