이번 시간에는 저번 포스팅에 이어서 실제 기능을
구현해 보도록 하겠습니다. 이전 포스팅을 먼저
보고 오시면 됩니다.
2022.03.28 - [안드로이드] - [안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방법 part1 - 화면 구성
- 설명 -
1. random.nextInt(100)+1을 통해서 1~100까지의 랜덤한
숫자를 만들어 변수(randomNumber)에 넣습니다.
2. 사용자는 랜덤한 숫자를 맞추기 위해서 숫자를 입력합니다.
3. 입력한 값이 랜덤 숫자보다 크다면 max변수에 값을 넣습니다.
4. 입력한 값이 랜덤숫자보다 작다면 min변수에 값을 넣습니다.
5. 입력한 값이 랜덤 숫자와 같다면 게임은 완료됩니다.
6. checkLength(): 입력한 숫자의 개수를 체크합니다.
7. display(): 입력한 숫자를 화면에 보여줍니다.
8. reset(): 최솟값, 최댓값, 도전 횟수, 응답 텍스트뷰를 초기화합니다.
9. viewMode(): 게임 시작과 끝났을 때 화면 구성을 변경해줍니다.
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
GridLayout gridLayout;
TextView requestText, responseText;
Button startBtn, answerBtn;
Button[] buttons = new Button[10];
String answer = ""; //입력 숫자
int randomNumber; //랜덤 숫자
int min = 1;
int max = 100;
//도전 횟수 카운트
int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//버튼 레이아웃
gridLayout = findViewById(R.id.grid_layout);
//입력된 숫자가 보여지는 텍스트뷰
requestText = findViewById(R.id.request_text);
//정답이 맞는지 보여주는 텍스트뷰
responseText = findViewById(R.id.response_text);
//정답버튼
answerBtn = findViewById(R.id.answer_btn);
//시작버튼
startBtn = findViewById(R.id.start_btn);
//버튼 초기화
for(int i = 0; i < buttons.length; i++){
String buttonID = "btn" + i;
int resourceID = getResources().getIdentifier(buttonID, "id", getPackageName());
buttons[i] = findViewById(resourceID);
buttons[i].setOnClickListener(this);
}
//버튼 숨김
viewMode("end");
//시작버튼
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewMode("start");
//랜덤숫자 생성
Random random = new Random();
randomNumber = random.nextInt(100)+1; //1 ~ 100
Toast.makeText(MainActivity.this, "숫자가 생성되었습니다.",
Toast.LENGTH_SHORT).show();
}
});
//정답버튼
answerBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
count++; //도전횟수 카운트
//입력숫자
int inputNumber = Integer.parseInt(requestText.getText().toString());
//입력값이 랜덤수보다 크면
if(inputNumber > randomNumber){
//입력값을 최대값에 넣는다.
max = inputNumber;
responseText.setText(count + " 번째 " + min + " ~ " + max);
}
//입력값이 랜덤수보다 작으면
else if(inputNumber < randomNumber){
//입력값을 최초값에 넣는다.
min = inputNumber;
responseText.setText(count + " 번째 " + min + " ~ " + max);
}
//입력값이랑 랜덤수가 같다면 ( 정답 )
else if(inputNumber == randomNumber){
Toast.makeText(MainActivity.this, "정답입니다.", Toast.LENGTH_SHORT).show();
//버튼 숨김
viewMode("end");
//초기화
reset();
}
//입력창 초기화
requestText.setText("");
//정답변수
answer = "";
}
});
}//onCreate();
//버튼 클릭 이벤트
@Override
public void onClick(View view) {
int id = view.getId();
//숫자 길이 체크
if(checkLength(answer)){
if(id == R.id.btn0){
answer = answer + "0";
display();
}else if(id == R.id.btn1){
answer = answer + "1";
display();
}else if(id == R.id.btn2){
answer = answer + "2";
display();
}else if(id == R.id.btn3){
answer = answer + "3";
display();
}else if(id == R.id.btn4){
answer = answer + "4";
display();
}else if(id == R.id.btn5){
answer = answer + "5";
display();
}else if(id == R.id.btn6){
answer = answer + "6";
display();
}else if(id == R.id.btn7){
answer = answer + "7";
display();
}else if(id == R.id.btn8){
answer = answer + "8";
display();
}else if(id == R.id.btn9){
answer = answer + "9";
display();
}
}
}
//게임타입
public void viewMode(String type){
//게임시작
if(type.equals("start")){
gridLayout.setVisibility(View.VISIBLE); //번호 활성화
startBtn.setEnabled(false); //시작버튼 비활성화
answerBtn.setEnabled(true); //정답버튼 활성화
}
//게임완료
else{
gridLayout.setVisibility(View.INVISIBLE); //번호 비활성화
startBtn.setEnabled(true); //시작버튼 활성화
answerBtn.setEnabled(false); //정답버튼 비활성화
}
}
//초기화
public void reset(){
min = 1;
max = 100;
count = 0;
responseText.setText("");
}
//입력숫자 보여주기
public void display(){
requestText.setText(answer);
}
//숫자 길이 체크
public boolean checkLength(String number){
boolean result = true;
//숫자는 10의 자리까지만
if(number.length() == 2) {
Toast.makeText(this, "입력 불가", Toast.LENGTH_SHORT).show();
result = false;
}else{
result = true;
}
return result;
}
}//MainActivity
2022.03.27 - [안드로이드] - [안드로이드] 룰렛(Roulette) 쉽게 만드는 방법
2022.03.26 - [안드로이드] - [안드로이드] 리싸이클 러뷰(RecyclerView) 홀 수행, 짝수행 별 색상 다르게 하는 방법
2022.03.25 - [안드로이드] - [안드로이드] 리스트뷰 (ListView) 홀수행, 짝수행 별 색상 다르게 하는 방법
[안드로이드] 야구게임 만드는 방법 part2 - 기능구현 (0) | 2022.03.31 |
---|---|
[안드로이드] 야구게임 만드는 방법 part1 - 화면구성 및 랜덤숫자 생성 (0) | 2022.03.30 |
[안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방법 part1 - 화면 구성 (0) | 2022.03.28 |
[안드로이드] 룰렛(Roulette) 쉽게 만드는 방법 (0) | 2022.03.27 |
[안드로이드] 리싸이클러뷰(RecyclerView) 홀수행, 짝수행 별 색상 다르게 하는 방법 (0) | 2022.03.26 |
댓글 영역