Skip to content

Instantly share code, notes, and snippets.

@dtb49
Created November 29, 2016 16:25
Show Gist options
  • Save dtb49/103d1f00dcd246bed5cd25f31bdb8e4b to your computer and use it in GitHub Desktop.
Save dtb49/103d1f00dcd246bed5cd25f31bdb8e4b to your computer and use it in GitHub Desktop.
Guessing Game
package com.guessinggamedtb;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
//import java.math.*;
public class myMainScreen extends Activity implements OnClickListener{
private EditText num; //our number text field
private Button btn; //guess button
private Button playagain;
private TextView output; //the output
private TextView prompt;
private int theNumber; //the random number
private int guessesLeft; //# of tries remaining
private int range = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num = (EditText)findViewById(R.id.editText1);
btn = (Button)findViewById(R.id.button1);
playagain = (Button)findViewById(R.id.button2);
output = (TextView)findViewById(R.id.textView2);
prompt = (TextView)findViewById(R.id.textView1);
theNumber = (int)(Math.random()* range) + 1;
guessesLeft = 7;
num.requestFocus();
btn.setOnClickListener(this);
playagain.setOnClickListener(this);
//hide playagain
playagain.setVisibility(View.INVISIBLE);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.game_menu, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.item1:
guessesLeft = range;
return true;
case R.id.item2:
guessesLeft = (int) Math.log(range);
return true;
case R.id.item3:
//10
changeRange(10);
return true;
case R.id.item4:
//100
changeRange(100);
return true;
case R.id.item5:
//1000
changeRange(1000);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void changeRange(int rng)
{
range = rng;
guessesLeft = (int) ((int) Math.log(rng) / Math.log(2)) + 2;
theNumber = (int)(Math.random()* rng) + 1;
String txt = "Guess a number between 1 and " + rng + ": ";
prompt.setText(txt);
String msg = "You've got " + guessesLeft + " tries to guess the number.";
output.setText(msg);
}
public void checkGuess()
{
//get number input
String myNum = num.getText().toString();
int guess = Integer.parseInt(myNum);
//Decrement guessesLeft
guessesLeft--;
num.selectAll();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
//if too high: toast too high and output
if(guess > theNumber)
{
String msg = myNum + " was too high. " + guessesLeft + " guesses left.";
Toast toast = Toast.makeText(this, "Too high", Toast.LENGTH_SHORT);
toast.show();
output.setText(msg);
}
// too low: toast too low and output
else if(guess < theNumber)
{
String msg = myNum + " was too low. " + guessesLeft + " guesses left.";
Toast toast = Toast.makeText(this, "Too low", Toast.LENGTH_SHORT);
toast.show();
output.setText(msg);
}
//compare to theNumber
else if(guess == theNumber)
{
playagain.setVisibility(View.VISIBLE);
btn.setEnabled(false);
String msg = myNum + " was right! " + "You had " + guessesLeft + " guesses left.";
Toast toast = Toast.makeText(this, "You win!", Toast.LENGTH_SHORT);
toast.show();
output.setText(msg);
//show playagain btn
}
//if you ran out of guesses
//show playagain btn
if(guessesLeft == 0)
{
playagain.setVisibility(View.VISIBLE);
btn.setEnabled(false);
String msg = "You've got " + guessesLeft + " guesses left. The correct number was " + theNumber + ". You lose!";
Toast toast = Toast.makeText(this, "You lose!", Toast.LENGTH_SHORT);
toast.show();
output.setText(msg);
}
}
public void newGame()
{
//hide playagain
playagain.setVisibility(View.INVISIBLE);
btn.setEnabled(true);
theNumber = (int)(Math.random()* range) + 1;
guessesLeft = 7;
String msg = "You've got " + guessesLeft + " tries to guess the number.";
Toast toast = Toast.makeText(this, "New Game!", Toast.LENGTH_SHORT);
toast.show();
output.setText(msg);
}
//handle editor actions ( the guess keyboard button click)
@Override
public void onClick(View v) {
if(v == btn)
{
checkGuess();
}
if(v == playagain)
{
newGame();
}
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
checkGuess();
return true;
default:
return super.onKeyUp(keyCode, event);
}
}
}
package com.guessinggamedtb;
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
//how long the splash screen will be displayed
Thread logoTimer = new Thread() {
public void run(){
try{
int logoTimer = 0;
while(logoTimer < 5000){
sleep(100);
logoTimer = logoTimer +100;
};
startActivity(new Intent("com.tutorial.CLEARSCREEN"));
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
finish();
}
}
};
logoTimer.start();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment