상세 컨텐츠

본문 제목

[안드로이드] 야구게임 만드는 방법 part1 - 화면구성 및 랜덤숫자 생성

안드로이드

by aries574 2022. 3. 30. 17:56

본문


이번 시간에는 야구게임을 만들어 보겠습니다. 

게임의 규칙을 설명하겠습니다.

1. 게임을 시작하면 랜덤한 숫자 3개를 생성합니다.

2. 사용자는 랜덤으로 생성된 숫자 3개를 맞춰야 합니다. 

3. 숫자의 위치를 맞춘다면 스트라이크

4, 위치는 틀렸지만 숫자라도 맞춘다면 볼

5. 기회는 10번으로 정하고, 그 횟수 안에 맞춰야 합니다. 

이제 시작해보겠습니다. 


목차

1. 실행 화면

2. 메인 화면 구성 activity_main.xml

3. 메인 코드 구현 MainActivity.java


1. 실행 화면

2. 메인 화면 구성 activity_main.xml

 - 설명 -

 1. life_count_text: 기회횟수 보여주는 텍스트뷰

 2. response_text: 정답확인 보여주는 텍스트뷰

 3. result_text: 제출한 답 목록 보여주는 텍스트뷰

 4. request_text: 입력한 숫자 보여주는 텍스트뷰

 5. start_btn: 게임 시작하는 기능

 6. answer_btn: 입력한 숫자 제출하는 기능

 7. reset_btn: 게임 초기화하는 기능

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/dialog_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/gray"
        android:orientation="horizontal">

        <!-- 기회 횟수-->
        <TextView
            android:id="@+id/life_count_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="기회: 3번"
            android:textSize="25sp"
            android:textColor="@android:color/white"
            android:textStyle="bold"
            android:layout_gravity="center_vertical"/>

        <!-- 정답 맞는지 보여주는 텍스트뷰-->
        <TextView
            android:id="@+id/response_text"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_margin="10dp"
            android:layout_weight="2"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:textSize="25sp"
            android:textStyle="bold"/>
    </LinearLayout>

    <!-- 답 제출목록 보여주는 텍스트뷰-->
    <TextView
        android:id="@+id/result_text"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:layout_below="@id/dialog_layout"
        android:textSize="20sp"
        android:textStyle="bold" />

    <!-- 답 제출-->
    <EditText
        android:id="@+id/request_text"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_below="@id/result_text"
        android:layout_margin="10dp"
        android:gravity="center"
        android:hint="숫자를 입력해주세요."
        android:inputType="number"
        android:maxLength="3"
        android:textSize="25sp"
        android:textStyle="bold" />

    <!-- 버튼 레이아웃-->
    <LinearLayout
        android:id="@+id/btn_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/request_text"
        android:orientation="horizontal">

        <!-- 게임 시작-->
        <Button
            android:id="@+id/start_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_margin="5dp"
            android:background="@android:color/holo_green_light"
            android:text="시작"
            android:textSize="25sp"/>

        <!-- 정답 제출-->
        <Button
            android:id="@+id/answer_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_margin="5dp"
            android:background="@android:color/holo_green_light"
            android:text="정답"
            android:textSize="25sp"/>

        <Button
            android:id="@+id/reset_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_margin="5dp"
            android:background="@android:color/holo_green_light"
            android:text="초기화"
            android:textSize="25sp"/>
    </LinearLayout>

</RelativeLayout>

 

 

3. 메인 코드 구현 MainActivity.java

 - 설명 - 

 1.  randomNumber: 랜덤한 숫자를 생성하는 메서드

 2. HashSet을 쓰는 이유는 랜덤 숫자의 중복을 막기

위해서입니다. 

public class MainActivity extends AppCompatActivity{

    EditText requestText;
    TextView responseText, resultText, lifeCountText;

    Button startBtn, answerBtn, resetBtn;

    //랜덤한 숫자 들어갈 배열
    int[] com  = new int[3];
    
    //사용자가 입력한 숫자 들어갈 배열
    int[] user = new int[3];
    
    int strike = 0; //스트라이크 갯수
    int ball = 0; // 볼 갯수

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //입력된 숫자가 보여지는 텍스트뷰
        requestText = findViewById(R.id.request_text);

        //정답이 맞는지 보여주는 텍스트뷰
        responseText = findViewById(R.id.response_text);

        //라이프 카운트
        lifeCountText = findViewById(R.id.life_count_text);

        //결과 모음
        resultText = findViewById(R.id.result_text);

        //정답버튼
        answerBtn = findViewById(R.id.answer_btn);

        //시작버튼
        startBtn = findViewById(R.id.start_btn);
        
        //초기화 버튼
        resetBtn = findViewById(R.id.reset_btn);

        startBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                randomNumber();

                responseText.setText("랜덤한수:" + com[0]+", " + com[1] + ", " +  com[2]);
            }
        });


    }//onCreate();


    /**
     * 랜덤숫자 생성
     */
    public void randomNumber(){

        int count = 0;

        Random random = new Random();

        HashSet set = new HashSet();

        //랜덤 숫자 3개 생성
        while(set.size() < 3){

            int randomNumber = random.nextInt(9)+1;// 1 ~ 9

            set.add(randomNumber);
        }

        //배열에 숫자 담기
        for( Object number : set){

            Integer tempNum = (Integer) number;

            com[count] = tempNum;
            count++;
        }
    }
}//MainActivity

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

 

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

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

aries574.tistory.com

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

 

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

이번 시간에는 저번 포스팅에 이어서 실제 기능을 구현해 보도록 하겠습니다. 이전 포스팅을 먼저 보고 오시면 됩니다. 2022.03.28 - [안드로이드] - [안드로이드] 숫자 맞추기 게임 Up&Down 만드는 방

aries574.tistory.com

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

 

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

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

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역