1-N. 구구단 게임 - 안드로이드 앱 개발로 배우는 자바 코딩 기초
안드로이드 앱 개발로 배우는 자바 코딩 기초
    • 01
      자바 기초 1
    • 1-A. 안드로이드 개발환경 구축
      1-B. 예제를 에뮬레이터로 실행
      1-C. HelloWorld 예제 – TextView 속성 변경
      1-D. 변수 사용방법
      1-E. 산술연산자 – 92% 가 못 푸는 문제
      1-F. Button 위젯 & 문자열 형변환
      1-G. EditText & 가감승제 연산 앱
      1-H. 체질량지수(BMI) 계산기 만들기
      1-I. if, else 조건문
      1-J. 숫자 3개 중에서 최대, 최소값 구하기
      1-K. 난수(Random) 생성 & boolean 변수
      1-L. 홀수 짝수 맞추기 게임
      1-M. Toast 메시지
      1-N. 구구단 게임
      1-O. switch case 조건문
      1-P. 숫자 업다운 게임
      1-Q. 가위바위보 게임 & 복합 연산자(&&)
      1-R. 스마트폰에 앱 설치하기
    • 02
      자바 기초 2
    • 2-A. 코드를 모아놓은 함수
      2-B. 1부터 100까지 더하기 - while 반복문
      2-C. for & do-while 반복문
      2-D. while 과 do-while 의 선택
      2-E. 구구단 표 만들기 & 다중 반복문
      2-F. continue, break
      2-G. 오리,돼지 숫자 구하기
      2-H. 탑 & 다이아몬드 출력 – 하드코딩
      2-I. 탑 & 다이아몬드 출력 – 반복문의 중요성
      2-J. 주민등록 검증기 - String 일부분 추출
      2-K. 무게 추 개수 계산 – 반복문 빠져나오기
      2-L. 1차원 배열
      2-M. 4지선다형 구구단 게임
      2-N. 2차원 배열
      2-O. 달팽이 배열
      2-P. 하노이 타워 - LinearLayout
    • 03
      안드로이드 기초 1
    • 3-A. TextView 위젯
      3-B. Button 위젯에 배경 이미지 지정
      3-C. 브로카 지수 계산기 – 산술 연산
      3-D. EditText 가이드 텍스트
      3-E. 이미지 뷰(ImageView) 위젯
      3-F. 섭씨 & 화씨 온도 변환기 – 산술 연산
      3-G. CheckBox 위젯
      3-H. 아들 낳을 때 까지 – do-while
      3-I. RadioButton 위젯
      3-J. RadioButton 위젯으로 메뉴 선택
      3-K. 마방진 만들기
      3-L. 프로그레스바(ProgressBar) 위젯
      3-M. 슬라이드바(SeekBar) 위젯
      3-N. ATM 기계 – 다중 반복문 빠져나오기
      3-O. RelativeLayout – 상대적 레이아웃
      3-P. OX 퀴즈 앱 – 1차원 배열
    • 04
      안드로이드 기초 2
    • 4-A. LinearLayout – 순차적 레이아웃
      4-B. gravity 속성으로 위젯의 위치 지정
      4-C. FrameLayout 으로 구현한 탭 화면
      4-D. LinearLayout & weight 속성으로 해상도 호환
      4-E. 로또 번호 생성기 – 1차원 배열 & 3중 반복문
      4-F. ListView 에 텍스트 항목 추가
      4-G. ListView 커스텀 아이템
      4-H. 주사위 앱 & ImageView
      4-I. 콤보박스와 유사한 Spinner 위젯
      4-J. RecyclerView 위젯으로 커스텀 리스트 만들기
      4-K. 매직 볼 – ImageView & 가속도 센서
      4-L. ScrollView 위젯으로 이미지 뷰어 만들기
      4-M. WebView 위젯으로 웹브라우저 만들기
      4-N. TableLayout & 계산기
    1-N. 구구단 게임
    01 자바 기초 1
    1-N. 구구단 게임

     

    이번 단원 핵심 포인트 ]

    문자열 형변환 #

    문자열을 정수로 변경 : <정수형 변수> = Integer.parseInt(<문자열>);

    Ex)int num = Integer.parseInt(“21”);         // num : 21

     

    # Toast 메시지 사용방법 #

    Toast 메시지 객체 생성 & 표시 : Toast.makeText(<Context 객체>, <메시지 문자열>, <시간 길이>).show()

    Ex) Toast.makeText(this, “This is a Toast message”, Toast.LENGTH_SHORT).show();

     

     

    1) 구구단 문제 만들기

    지난 시간에 이어서 구구단 게임을 만들어 보겠습니다동작 순서는 다음과 같습니다.

    앱이 실행되면 구구단 문제를 만들어서 TextView 에 표시하고,

    사용자가 정답을 EditText 에 입력하고,

    결과 Button 을 누르면 정답인지 오답인지를 토스트 메시지로 표시

     

    난수를 만드는 함수를 추가하겠습니다. makeQuiz() 함수 아래에 새로운 함수를 생성하고 아래와 같이 코드를 입력합니다먼저번 시간에 했던 난수 생성함수와 같습니다.

    [ Source code copy link : https://goo.gl/KgKZym => Code-6 ]

        public int getRandom (int max, int offset) {

            int nResult = (int)(Math.random() * max) + offset;

            return nResult;

        }

     

    앱이 실행되면 위 함수를 사용해서 구구단 문제를 TextView 에 출력하면 됩니다우선 아래와 같이 makeQuiz() 함수의 내용을 삭제합니다.

        public void makeQuiz() {

     

        }

     

    그런 다음 아래와 같이 새로운 코드를 입력합니다구구단 문제를 만들어서 TextView 에 표시하는 코드입니다.

    [ Source code copy link : https://goo.gl/KgKZym => Code-7 ]

    public void makeQuiz() {

            int left = getRandom (8, 2);

            int right = getRandom (8, 2);

            textView1.setText(left + " * " + right + " = ?");

            nResult = left * right;

        }

     

    아래는 2~9 사이의 난수 2개를 만들어서 int 형 변수에 저장하는 코드입니다난수를 생성할 때 범위가 8이고최소값이 2입니다이렇게 하면 최소값 2 부터 최대값 9 사이의 난수가 만들어 지는 것입니다.

            int left = getRandom (7, 2);

            int right = getRandom (7, 2);

     

    아래는 구구단 문제 문자열을 만들어서 TextView 에 표시하는 코드입니다. 2개 숫자 사이에 ‘*’ 기초를 추가했고오른쪽 끝에는 ‘= ?’ 를 덧붙였습니다예를 들어서 난수 2개가 5  8인 경우에 ‘5 * 8 = ?’ 이런 문자열이 만들어지는 것입니다.

            textView1.setText(left + " * " + right + " = ?");

     

    아래는 2개 숫자의 곱셈을 멤버변수에 저장하는 코드입니다사용자가 입력한 값이 정답인지를 확인하기 위해서 저장해 두는 것입니다.

            nResult = left * right;

     

    예제를 실행시켜 봅시다구구단 문제가 표시되었습니다.

    2) 구구단 정답 판단하기

    사용자가 EditText 에 숫자를 입력하고 Button 을 누르면 정답인지 아닌지를 판단하는 기능을 구현해 보겠습니다. getRandom() 함수 아래에 새로운 함수를 생성하고 아래와 같이 코드를 추가합니다. onBtnResult() 는 사용자가 Button 을 눌렀을 때 실행되는 이벤트 함수입니다.

    [ Source code copy link : https://goo.gl/KgKZym => Code-8 ]

    public void onBtnResult(View v) {

            String strAnswer = editText1.getText().toString();

            int answer = Integer.parseInt(strAnswer);

            if( answer == nResult )

                Toast.makeText(this, nResult + " – Correct answer!",

                Toast.LENGTH_LONG).show();

            else

                Toast.makeText(this, "Wrong answer - " + nResult,

                    Toast.LENGTH_LONG).show();

            makeQuiz();

        }

     

    아래는 EditText 에 입력된 문자열을 구해서 숫자로 변경하는 코드입니다.

            String strAnswer = editText1.getText().toString();

            int answer = Integer.parseInt(strAnswer);

     

    아래는 정답을 맞췄을 때 정답입니다’ 라는 문자열을 토스트 메시지로 출력하고틀렸을 때는 틀렸습니다’ 라는 문자열을 토스트 메시지로 출력하는 코드입니다.

            if( answer == nResult )

                Toast.makeText(this, nResult + " – Correct answer!",

                    Toast.LENGTH_LONG).show();

            else

                Toast.makeText(this, "Wrong answer - " + nResult,

                    Toast.LENGTH_LONG).show();

     

    아래 맨 마지막 줄은 새로운 구구단 문제를 TextView 에 표시하는 함수를 호출합니다한 문제를 풀면 계속해서 새로운 문제가 나오는 것입니다.

            makeQuiz();

     

    구구단 문제가 완성되었습니다예제를 실행해서 EditText 에 정답을 입력하고 Button 을 눌러봅시다토스트 메시지가 정답인지 오답인지를 알려줍니다그리고 새로운 문제가 나타납니다.

    구구단 게임 예제가 완성되었습니다이번 예제의 전체 코드는 아래와 같습니다수고하셨습니다.

    package com.example.gugugame;

    import android.support.v7.app.AppCompatActivity;

    import android.os.Bundle;

    import android.view.Gravity;

    import android.view.View;

    import android.widget.EditText;

    import android.widget.TextView;

    import android.widget.Toast;

     

    public class MainActivity extends AppCompatActivity {

        TextView textView1;

        EditText editText1;

        int nResult;

     

        @Override

        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            textView1 = (TextView)findViewById(R.id.textView1);

            editText1 = (EditText)findViewById(R.id.editText1);

            makeQuiz();

        }

     

        public void makeQuiz() {

            int left = getRandom (8, 2);

            int right = getRandom (8, 2);

            textView1.setText(left + " * " + right + " = ?");

            nResult = left * right;

        }

     

        public int getRandom (int max, int offset) {

            int nResult = (int)(Math.random() * max) + offset;

            return nResult;

        }

     

        public void onBtnResult(View v) {

            String strAnswer = editText1.getText().toString();

            int answer = Integer.parseInt(strAnswer);

            if( answer == nResult )

                Toast.makeText(this, nResult + " – Correct answer!", Toast.LENGTH_LONG).show();

            else

                Toast.makeText(this, "Wrong - " + nResult, Toast.LENGTH_LONG).show();

            makeQuiz();

        }

    }

     

     

    [연습문제산수팡 게임 만들기

    1. 새로운 소스 프로젝트를 생성하고 레이아웃 파일에 TextView  EditTex, 그리고 Button 위젯을 1개씩 생성하시오.

     

    2. 예제를 실행하면 숫자 계산 문제를 TextView 에 표시하시오.

      난수로 생성한 1~9 사이의 숫자 2개 사이에 곱하기(*) 기호 또는 더하기(+) 기호를 집어 넣어서 수식을 만드시오.

      ) 3 * 5 = ? 또는 9 + 7 = ?

     

    3. 사용자가 EditText 에 답을 입력하고 Button 을 클릭하면 정답을 맞췄는지 아닌지를 Toast 메시지로 표시하시오.

     

    4. 문제를 풀면 자동으로 새로운 문제를 TextView 에 표시하시오.

     

     

    [연습문제난수 생성 함수 수정

    아래는 난수를 생성하는 함수의 코드이다파라미터는 범위와 최소값이다.

    이 함수를 수정해서 파라미터를 최대값과 최소값으로 변경하시오.

     

        public int getRandom (int max, int offset) {

            int nResult = (int)(Math.random() * max) + offset;

            return nResult;

        }

    Q & A
    Q&A forum that anyone can ask and answer.
    Share your questions and answers with other students and grow together!

    Registered Questions(0)