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;

    }

질문하기
추가 자료
no files uploaded

추가 자료가 없습니다

여기서 새로운 학습 자료를 확인하세요!
선생님이 추가한 자료들을 바로 확인할 수 있어요.