import
android.app.Activity;
import
android.content.Intent;
import
android.os.Bundle;
import
android.view.Menu;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.ImageButton;
import
android.widget.TextView;
import
com.example.mytoolbox.utilities.NumberUtilities;
public
class
MathRallyActivity
extends
Activity
implements
OnClickListener {
public
enum
Operation {
SUM, DIVISION, MULTIPLICATION, SUBSTRACT
}
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_math_rally);
Button buttonOption1 = (Button) findViewById(R.id.buttonMath1);
Button buttonOption2 = (Button) findViewById(R.id.buttonMath2);
Button buttonOption3 = (Button) findViewById(R.id.buttonMath3);
ImageButton buttonHome = (ImageButton) findViewById(R.id.imageButtonHome);
buttonOption1.setOnClickListener(
this
);
buttonOption2.setOnClickListener(
this
);
buttonOption3.setOnClickListener(
this
);
buttonHome.setOnClickListener(
this
);
createOperation();
}
private
void
createOperation() {
Operation operation = generateRandOperation();
int
operand1 = NumberUtilities.generateRandNumber(
2
,
100
);
int
operand2 = NumberUtilities.generateRandNumber(
2
,
100
);
String operationText = String.valueOf(operand1) +
" "
+
getOperationString(operation) +
" "
+ String.valueOf(operand2) +
"?"
;
TextView textViewOperation = (TextView) findViewById(R.id.textViewOperation);
textViewOperation.setText(operationText);
float
rightValue = calculateRightValue(operation, operand1, operand2);
rightBox = NumberUtilities.generateRandNumber(
1
,
3
);
float
randWrongValue1 = NumberUtilities.generateRandNumber(
2
);
float
randWrongValue2 = NumberUtilities.generateRandNumber(
2
);
Button buttonOption1 = (Button) findViewById(R.id.buttonMath1);
Button buttonOption2 = (Button) findViewById(R.id.buttonMath2);
Button buttonOption3 = (Button) findViewById(R.id.buttonMath3);
switch
(rightBox) {
case
0
:
buttonOption1.setText(String.valueOf(rightValue));
buttonOption2.setText(String.valueOf(randWrongValue1));
buttonOption3.setText(String.valueOf(randWrongValue2));
break
;
case
1
:
buttonOption2.setText(String.valueOf(rightValue));
buttonOption1.setText(String.valueOf(randWrongValue1));
buttonOption3.setText(String.valueOf(randWrongValue2));
break
;
case
2
:
buttonOption3.setText(String.valueOf(rightValue));
buttonOption1.setText(String.valueOf(randWrongValue1));
buttonOption2.setText(String.valueOf(randWrongValue2));
break
;
}
}
private
float
calculateRightValue(Operation oper,
int
operand1,
int
operand2) {
float
calculation =
0
;
if
(oper == Operation.SUM) {
calculation = operand1 + operand2;
}
else
if
(oper == Operation.MULTIPLICATION) {
calculation = operand1 * operand2;
}
else
if
(oper == Operation.SUBSTRACT) {
calculation = operand1 - operand2;
}
else
if
(oper == Operation.DIVISION) {
calculation = operand1 / operand2;
}
return
calculation;
}
private
String getOperationString(Operation oper) {
String operationText =
""
;
if
(oper == Operation.SUM) {
operationText =
"+"
;
}
else
if
(oper == Operation.MULTIPLICATION) {
operationText =
"*"
;
}
else
if
(oper == Operation.SUBSTRACT) {
operationText =
"-"
;
}
else
if
(oper == Operation.DIVISION) {
operationText =
"/"
;
}
return
operationText;
}
private
Operation generateRandOperation() {
int
rand = NumberUtilities.generateRandNumber(
1
,
4
);
Operation operation =
null
;
switch
(rand) {
case
0
:
operation = Operation.SUM;
break
;
case
1
:
operation = Operation.DIVISION;
break
;
case
2
:
operation = Operation.MULTIPLICATION;
break
;
case
3
:
operation = Operation.SUBSTRACT;
break
;
}
return
operation;
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_math_rally, menu);
return
true
;
}
@Override
public
void
onClick(View view) {
boolean
correct =
false
;
boolean
play =
true
;
switch
(view.getId()) {
case
R.id.buttonMath1:
if
(rightBox ==
0
) {
correct =
true
;
}
break
;
case
R.id.buttonMath2:
if
(rightBox ==
1
) {
correct =
true
;
}
break
;
case
R.id.buttonMath3:
if
(rightBox ==
2
) {
correct =
true
;
}
break
;
case
R.id.imageButtonHome:
startActivity(
new
Intent(MathRallyActivity.
this
, ChooseActivity.
class
));
play =
false
;
break
;
}
if
(correct) {
points++;
updateScore();
}
if
(play) {
createOperation();
}
}
private
void
updateScore() {
EditText editText = (EditText) findViewById(R.id.editTextPoints);
editText.setText(String.valueOf(points));
}
private
int
rightBox;
private
int
points;
}