Obliczenia brydżowe (Android)
Jacek Kowalski
2015-01-18 ae5f073996625779d191002c94d6e2e608afe35a
app/src/main/java/net/jacekk/bridge/android/MainActivity.java
@@ -10,9 +10,11 @@
import android.widget.TextView;
import android.widget.ToggleButton;
import net.jacekk.bridge.R;
import net.jacekk.bridge.BridgeCompute;
import net.jacekk.bridge.BridgeInput;
import net.jacekk.bridge.BridgeInputException;
import net.jacekk.bridge.BridgeResult;
import net.jacekk.bridge.R;
public class MainActivity extends Activity {
    private SeekBar BidSlider;
@@ -34,7 +36,7 @@
    private EditText PCInput;
    private EditText TricksInput;
    private TextView resultText;
    private TextView ResultsText;
    public BridgeCompute bridgeCompute;
@@ -49,15 +51,14 @@
        InitializeApp();
    }
    @Override
    public void onBackPressed() {
        // Reset
    private void resetInputs() {
        BidSlider.setProgress(0);
        MinorSuitsToggle.setChecked(true);
        ContractToggle.setChecked(true);
        NNToggle.setChecked(true);
        PCInput.setText("");
        TricksInput.setText("");
        ResultsText.setText(getString(R.string.enter_data));
    }
    private void InitializeApp() {
@@ -82,7 +83,7 @@
        PCInput = (EditText) findViewById(R.id.PCInput);
        TricksInput = (EditText) findViewById(R.id.TricksInput);
        resultText = (TextView) findViewById(R.id.ResultsText);
        ResultsText = (TextView) findViewById(R.id.ResultsText);
        CompoundButton.OnCheckedChangeListener changeListener;
@@ -203,6 +204,27 @@
    }
    public void updateResults() {
        BridgeInput input = getBridgeInput();
        BridgeResult result;
        try {
            result = bridgeCompute.getResultForInput(input);
        } catch (BridgeInputException e) {
            int errorStringId = BridgeInputExceptionMapper.map(e);
            ResultsText.setText(getString(errorStringId));
            return;
        }
        ResultsText.setText(
                (result.winners == BridgeResult.Side.We ? getString(R.string.result_for_us)
                        : getString(R.string.result_for_them)) +
                        "\n" + getString(R.string.result_pts_wo_pc) + " " + result.pointsBefore +
                        "\n" + getString(R.string.result_pts) + " " + result.points +
                        "\n" + getString(R.string.result_imps) + " " + result.IMPs +
                        "\n" + getString(R.string.result_percent) + " " + result.percent);
    }
    private BridgeInput getBridgeInput() {
        int bid = BidSlider.getProgress();
        int color = 0;
@@ -237,47 +259,14 @@
        } catch (NumberFormatException ignored) {
        }
        if (bid < 0 || bid > 7) {
            resultText.setText(getString(R.string.invalid_bid));
            return;
        }
        if (color != 0 && color != 1 && color != 2) {
            resultText.setText(getString(R.string.invalid_color));
            return;
        }
        if (dbl < 0 || dbl > 2) {
            resultText.setText(getString(R.string.invalid_dbl));
            return;
        }
        if (vulnerability < 0 || vulnerability > 3) {
            resultText.setText(getString(R.string.invalid_baba));
            return;
        }
        if (PC < 0 || PC > 40) {
            resultText.setText(getString(R.string.invalid_pc));
            return;
        }
        if (tricks < 0 || tricks > 13) {
            resultText.setText(getString(R.string.invalid_tricks));
            return;
        }
        if (bid == 0 && PC < 20) {
            resultText.setText(getString(R.string.invalid_pass));
            return;
        }
        BridgeResult result = bridgeCompute.compute(bid, color, dbl, vulnerability, PC, tricks);
        resultText.setText(
                (result.pointsFor == BridgeResult.PointsFor.Us ? getString(R.string.result_for_us) : getString(R.string.result_for_them)) +
                        "\n" + getString(R.string.result_pts_wo_pc) + " " + result.pointsBefore +
                        "\n" + getString(R.string.result_pts) + " " + result.points +
                        "\n" + getString(R.string.result_imps) + " " + result.IMPs +
                        "\n" + getString(R.string.result_percent) + " " + result.percent);
        BridgeInput input = new BridgeInput();
        input.bid = bid;
        input.suit = BridgeInput.Suit.values()[color];
        input.contract = BridgeInput.Contract.values()[dbl];
        input.weVulnerable = vulnerability / 2 >= 1;
        input.theyVulnerable = vulnerability % 2 >= 1;
        input.PC = PC;
        input.tricks = tricks;
        return input;
    }
}