For practicing purposes I made this program with humble intentions to be a Math game. It creates basic operations like sums, subtractions, multiplications and divisions, in a randomly fashion, along with the right answer and two incorrect answers. Each valid answers adds a point to the user.
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;
}
