상세 컨텐츠

본문 제목

[안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방법 part2 - 기능 구현

안드로이드

by aries574 2022. 3. 29. 13:48

본문


이번 시간에는 저번 포스팅에 이어서 실제 기능을

구현해 보도록 하겠습니다.  이전 포스팅을 먼저 

보고 오시면 됩니다. 

2022.03.28 - [안드로이드] - [안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방법 part1 - 화면 구성

 

[안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방법 part1 - 화면 구성

 이번 시간에는 랜덤한 숫자를 생성하면, 사용자는 숫자를 입력해서 맞추는 게임을 만들어 보려고 합니다. 물론 무작정 맞추는 게 아니라 입력한 숫자가 랜덤한 숫자보다 큰지, 작은지 정도는

aries574.tistory.com


목차

1. 실행 화면

2.  메인 코드 구현 MainActivity.java


1. 실행 화면

 

2.  메인 코드 구현 MainActivity.java

- 설명 -

 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) 쉽게 만드는 방법

 

[안드로이드] 룰렛(Roulette) 쉽게 만드는 방법

이번 시간에는 룰렛을 만들어 보겠습니다. 만드는 방법은 어렵지 않습니다. 간단하게 설명하면 라이브러리를 갖다 쓰기 때문에 사용자는 각 칸의 색깔과 아이콘과 텍스트만 정해주면 됩니다. 

aries574.tistory.com

2022.03.26 - [안드로이드] - [안드로이드] 리싸이클 러뷰(RecyclerView) 홀 수행, 짝수행 별 색상 다르게 하는 방법

 

[안드로이드] 리싸이클러뷰(RecyclerView) 홀수행, 짝수행 별 색상 다르게 하는 방법

이번 시간에는 RecyclerView에 보이는 아이템들 홀수, 짝수 별로 색상을 다르게 주는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 아이템 화면 만들기 3. 어뎁터 만들기 4. 메인 화면 구성 activity_main.

aries574.tistory.com

2022.03.25 - [안드로이드] - [안드로이드] 리스트뷰 (ListView) 홀수행, 짝수행 별 색상 다르게 하는 방법

 

[안드로이드] 리스트뷰 (ListView) 홀수행, 짝수행 별 색상 다르게 하는 방법

이번 시간에는 리스트뷰에 보이는 아이템들 홀수, 짝수 별로 색상을 다르게 주는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구성 activity_main.xml 3. 메인 코드 구현 MainActivity.java 1. 실

aries574.tistory.com

반응형

관련글 더보기

댓글 영역