Created
November 29, 2016 16:25
-
-
Save dtb49/103d1f00dcd246bed5cd25f31bdb8e4b to your computer and use it in GitHub Desktop.
Guessing Game
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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