*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.