*import *android.app.Activity;
*import *android.os.Bundle;
*import *android.view.Menu;
*import *android.view.MenuItem;
*import *java.util.Random;
*import *android.view.View;
*import *android.widget.Button;
*import *android.widget.ImageView;
*import *android.widget.TextView;
*import *java.text.DateFormat;
*import *java.text.SimpleDateFormat;
*import *java.util.ArrayList;
*import *java.util.Collections;
*import *java.util.Date;
*import *java.util.List;
*import *android.content.SharedPreferences;


*public class *PlayGame *extends *Activity *implements *View.OnClickListener 
{


    *private *SharedPreferences *gamePrefs*;
    *public static final *String *GAME_PREFS *= *"ArithmeticFile"*;
    *private void *setHighScore(){
        *int *exScore = getScore();
        *if*(exScore>0){
            SharedPreferences.Editor scoreEdit = *gamePrefs*.edit();
            DateFormat dateForm = *new *SimpleDateFormat(*"dd MMM yyyy"*);
            String dateOutput = dateForm.format(*new *Date());
            String scores = *gamePrefs*.getString(*"highScores"*, *""*);
            *if *(scores.length()>0){
                List<Score> scoreStrings = *new *ArrayList<Score>();
                String[] exScores = scores.split(*"**\\**|"*);
                *for *(String eSc : exScores){
                    String[] parts = eSc.split(*" - "*);
                    scoreStrings.add(*new *Score(parts[0], Integer.
*parseInt*(parts[1])));
                }
                Score newScore = *new *Score(dateOutput, exScore);
                scoreStrings.add(newScore);
                Collections.*sort*(scoreStrings);

                StringBuilder scoreBuild = *new *StringBuilder(*""*);
                *for *(*int *s=0; s<scoreStrings.size(); s++){
                    *if *(s>10) *break*;
                    *if *(s>0) scoreBuild.append(*"|"*);
                    scoreBuild.append(scoreStrings.get(s).getScoreText());
                }
                scoreEdit.putString(*"highScores"*, scoreBuild.toString());
                scoreEdit.apply();

            }
            *else *{
                setHighScore();
                scoreEdit.putString(*"highScores"*, *""*+dateOutput+*" - "*
+exScore);
                scoreEdit.apply();

            }
        }
    }


    *private int **level *= 0, *answer *= 0, *operator *= 0, *operand1 *= 0, 
*operand2 *= 0;
    *private final int **ADD_OPERATOR *= 0, *SUBTRACT_OPERATOR *= 1, 
*MULTIPLY_OPERATOR 
*= 2, *DIVIDE_OPERATOR *= 3;
    *private *String[] *operators *= {*"+"*, *"-"*, *"x"*, *"/"*};
    *private int*[][] *levelMin *= {
            {1, 11, 21},
            {1, 5, 10},
            {2, 5, 10},
            {2, 3, 5}};
    *private int*[][] *levelMax *= {
            {10, 25, 50},
            {10, 20, 30},
            {5, 10, 15},
            {10, 50, 100}};
    *private *Random *random*;
    *private *TextView *answerTxt*;
    *private *TextView *scoreTxt*;
    *private *ImageView *response*;

    *private  void *chooseQuestion(){
        *answerTxt*.setText(*"= ?"*);
        *operand1 *= getOperand();
        *operand2 *= getOperand();
        *operator *= *random*.nextInt(*operators*.*length*);
        *if *(*operator *== *SUBTRACT_OPERATOR*){
            *while *(*operand2*>*operand1*){
                *operand1 *= getOperand();
                *operand2 *= getOperand();
            }
        }
        *else if *(*operator*==*DIVIDE_OPERATOR*){
            *while *((((*double*)*operand1*/(*double*)*operand2*)%1 > 0) || 
(*operand1*==*operand2*))
            {
                *operand1 *= getOperand();
                *operand2 *= getOperand();
            }
        }
    }

    *private int *getOperand() {
        *return **random*.nextInt(*levelMax*[*operator*][*level*] - 
*levelMin*[*operator*][*level*] + 1)
                + *levelMin*[*operator*][*level*];


    }

    @Override
    *protected void *onCreate(Bundle savedInstanceState) {
        *super*.onCreate(savedInstanceState);
        setContentView(R.layout.*activity_play_game*);
        *gamePrefs *= getSharedPreferences(*GAME_PREFS*, 0);

        *if *(savedInstanceState != *null*) {
            *level *= savedInstanceState.getInt(*"level"*);
            *int *exScore = savedInstanceState.getInt(*"score"*);
            *scoreTxt*.setText(*"Score: " *+ exScore);
        } *else *{
            Bundle extras = getIntent().getExtras();
            *if *(extras != *null*) {
                *int *passedLevel = extras.getInt(*"level"*, -1);
                *if *(passedLevel >= 0) *level *= passedLevel;
            }

            TextView question = (TextView) findViewById(R.id.*question*);
            *answerTxt *= (TextView) findViewById(R.id.*answer*);
            *response *= (ImageView) findViewById(R.id.*response*);
            *scoreTxt *= (TextView) findViewById(R.id.*score*);
            *response*.setVisibility(View.*INVISIBLE*);
            Button btn1 = (Button) findViewById(R.id.*btn1*);
            Button btn2 = (Button) findViewById(R.id.*btn2*);
            Button btn3 = (Button) findViewById(R.id.*btn3*);
            Button btn4 = (Button) findViewById(R.id.*btn4*);
            Button btn5 = (Button) findViewById(R.id.*btn5*);
            Button btn6 = (Button) findViewById(R.id.*btn6*);
            Button btn7 = (Button) findViewById(R.id.*btn7*);
            Button btn8 = (Button) findViewById(R.id.*btn8*);
            Button btn9 = (Button) findViewById(R.id.*btn9*);
            Button btn0 = (Button) findViewById(R.id.*btn0*);
            Button enterBtn = (Button) findViewById(R.id.*enter*);
            Button clearBtn = (Button) findViewById(R.id.*clear*);

            btn1.setOnClickListener(*this*);
            btn2.setOnClickListener(*this*);
            btn3.setOnClickListener(*this*);
            btn4.setOnClickListener(*this*);
            btn5.setOnClickListener(*this*);
            btn6.setOnClickListener(*this*);
            btn7.setOnClickListener(*this*);
            btn8.setOnClickListener(*this*);
            btn9.setOnClickListener(*this*);
            btn0.setOnClickListener(*this*);
            enterBtn.setOnClickListener(*this*);
            clearBtn.setOnClickListener(*this*);

            *if *(*operator *== *ADD_OPERATOR*) {
                *answer *= *operand1 *+ *operand2*;

            } *else if *(*operator *== *SUBTRACT_OPERATOR*) {
                *answer *= *operand1 *- *operand2*;

            } *else if *(*operator *== *MULTIPLY_OPERATOR*) {
                *answer *= *operand1 ** *operand2*;

            } *else if *(*operator *== *DIVIDE_OPERATOR*) {
                *answer *= *operand1 */ *operand2*;

            } *else *{
            }


            *random *= *new *Random();
            chooseQuestion();

            question.setText(*operand1 *+ *" " *+ *operators*[*operator*] + *" 
" *+ *operand2*);

        }
    }

    @Override
    *public boolean *onCreateOptionsMenu(Menu menu) {
        
*// Inflate the menu; this adds items to the action bar if it is present. 
        *getMenuInflater().inflate(R.menu.*menu_play_game*, menu);
        *return true*;
    }

    @Override
    *public boolean *onOptionsItemSelected(MenuItem item) {
        


*// Handle action bar item clicks here. The action bar will         // 
automatically handle clicks on the Home/Up button, so long         // as 
you specify a parent activity in AndroidManifest.xml.         **int *id = 
item.getItemId();

        
*//noinspection SimplifiableIfStatement         **if *(id == R.id.
*action_settings*) {
            *return true*;
        }

        *return super*.onOptionsItemSelected(item);
    }
    @Override
    *public void *onSaveInstanceState (Bundle savedInstanceState){
        *int *exScore = getScore();
        savedInstanceState.putInt(*"score"*, exScore);
        savedInstanceState.putInt(*"level"*, *level*);
        *super*.onSaveInstanceState(savedInstanceState);
    }

    @Override
    *public void *onClick(View v) {
        *if *(v.getId() == R.id.*enter*) {
            String answerContent = *answerTxt*.getText().toString();
            *if *(!answerContent.endsWith(*"?"*)) {
                *int *enteredAnswer = Integer.*parseInt*
(answerContent.substring(2));
                *int *exScore = getScore();
                *if *(enteredAnswer == *answer*) {
                    *scoreTxt*.setText(*"Score: " *+ (exScore + 1));
                    *response*.setImageResource(R.drawable.*tick*);
                    *response*.setVisibility(View.*VISIBLE*);
                } *else *{
                    *scoreTxt*.setText(*"Score: 0"*);
                    *response*.setImageResource(R.drawable.*cross*);
                    *response*.setVisibility(View.*VISIBLE*);

                }

            } *else if *(v.getId() == R.id.*clear*) {
                *answerTxt*.setText(*"= ?"*);
            } *else *{
                setHighScore();
                *response*.setVisibility(View.*INVISIBLE*);
                *int *enteredNum = Integer.*parseInt*
(v.getTag().toString());
                *if *(*answerTxt*.getText().toString().endsWith(*"?"*))
                    *answerTxt*.setText(*"= " *+ enteredNum);
                
*else                     **answerTxt*.append(*"" *+ enteredNum);
                chooseQuestion();
            }
        }
    }
    *protected void *onDestroy() {
        setHighScore();
        *super*.onDestroy();

    }

    *private int *getScore(){
        String scoreStr = *scoreTxt*.getText().toString();
        *return *Integer.*parseInt*(scoreStr.substring(scoreStr.lastIndexOf(*" 
"*)+1));
    }



}

 

-- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/android-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/android-developers/7290e86c-634f-468e-94b4-b04ae78ccc04%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to