안드로이드 1to50 어플을 만들어보자 3편

진의님의 댓글을 참고하여 2차 수정된 내용입니다.


어느새 1to50 만들기 포스팅이 3편까지 진행이 되었네요.

[Android Study] - 안드로이드 1to50 어플을 만들어 보자 1편

[Android Study] - 안드로이드 1to50 어플을 만들어 보자 2편

이번 3편은 java코딩을 작성하는 포스팅으로 진행이 됩니다.


저는 코딩은 퍼즐조각을 맞추는것과 비슷하다고 생각을 합니다.

작동되는 하나하나가 퍼즐조각이고 그걸 하나로 맞춰주면 어플이 완성이 된다고 생각을 하거든요.


그러면 1to50의 퍼즐조각은 어떤것이 있는지 생각을 해봅시다.

1. 어플이 실행되면 바로 25개의 칸에 숫자가 보여져야 합니다.

2. 칸을 하나씩 클릭하면 위쪽에 클릭해야 하는 숫자를 출력해 줍니다.

3. 50까지 다 터치를 해야 합니다.

4. 50까지 다 터치를 하고나면 성공 화면이 보여져야 합니다.

5. 성공 화면에 확인을 누르면 1번이 다시 실행됩니다.

퍼즐조각은 5개네요. 


퍼즐조각을 하나씩 만들어봅시다.

1. 어플이 실행되면 바로 25개의 칸에 숫자가 보여져야 합니다.

int number_group1, number_group2;
private void game() {
now_number.setText(Integer.toString(match_number_int));
for(number_group1 = 1; number_group1 <= 2; number_group1++) {
for(number_group2 = 1; number_group2 <= 25; number_group2++) {
random();
}
}
for(int print_button_num = 0; print_button_num <= 24; print_button_num++) {
button_text[print_button_num].setText(Integer.toString(button_number_01[print_button_num]));
}
}

for문으로 25번씩 2번 출력을 하도록 작성해줍니다.

now_number.setText(Integer.toString(Match_number_int));는 현재 입력해야 하는 숫자를

어플을 실행하면 바로 출력을 해주기 위해서 작성해 두었습니다.

random();이 숫자를 뽑아줍니다. 

자세한 코드는 아래쪽에 작성하도록 하겠습니다.

number_group의 for문이 종료가 되면 25개의 버튼에 1~25의 숫자가 출력이 되도록 for문을 작성하였습니다.

int match_number_int = 1;
int random_button_number_int;
int[] button_number_01 = new int[25];
int[] button_number_02 = new int[25];
private void random() {
Random random = new Random();
random_button_number_int = random.nextInt(25);
if(number_group1 == 1 && button_number_01[(random_button_number_int)] == 0) {
button_number_01[(random_button_number_int)] = number_group2;
}else if(number_group1 == 1 && number_group2 <= 25){
random();
}
if(number_group1 == 2 && button_number_02[(random_button_number_int)] == 0) {
button_number_02[(random_button_number_int)] = (number_group2+25);
}else if(number_group1 == 2 && number_group2 <= 25){
random();
}
}

숫자를 뽑아주는 random()의 코드입니다.

int match_number_int = 1;이 현재 클릭해야 하는 숫자 int값입니다.

자세한 코드는 아래쪽에 설명이 되겠지만 1로 설정을 해주셔야 실행하면 출력이 1로 바로 나옵니다.

random_button_number_int에 랜덤으로 뽑힌 숫자를 저장합니다.

button_number_01이랑 button_number_02는 버튼 25개에 숫자가 2개가(1~15, 26~50)

저장이 되어야 하기에 01과 02로 나누어주었습니다.

예를들어 랜덤으로 4라는 숫자가 뽑히면 button_number_01[4]라는 int값에

현재 for문에서 진행중인 number_group2의 숫자가 저장이 됩니다.

만약에 button_number_01[4]의 int값에 이미 숫자가 저장이 되어있다면

random() 다시 호출해서 저장이 안되어 있는 button_number_01를 찾아서 저장이 될 때까지 실행이 됩니다.

아래쪽 if문에 +25가 되어있는 이유는 25 이후의 숫자인 26~50의 숫자로 만들기 위해서 +25를 해두고 있습니다.


여기까지의 코드를 작성하시면 1번 퍼즐조각이 만들어집니다.

스마트폰에 실행을 시켜보면 아래 이미지와 같이 보여집니다.

아직 버튼을 클릭했을때의 동작은 만들지 않았기 때문에 1부터 25까지 숫자가 출력되는게 전부입니다.


2. 칸을 하나씩 클릭하면 위쪽에 현재 클릭해야 하는 숫자를 출력해 줍니다.

match_number_int += 1;
now_number.setText(Integer.toString(match_number_int));

위에 코드는 0부터 24까지의 버튼에 모두 작성이 되어야 합니다.

match_number_int에 숫자를 1씩 올라가게 저장하고

저장된 값을 출력해주고 있습니다.


3. 50까지 다 터치를 해야 합니다.

버튼을 터치했을때 number_group2의 숫자가 출력이 되어야 게임이 진행이 가능하겠죠.

int number = 0;
if(match_number_int == button_number_01[number]) {
button_text[number].setText(Integer.toString(button_number_02[number]));
}
if(match_number_int == button_number_02[number]) {
button_text[number].setVisibility(View.GONE);
}

위에 코드를 0부터 24까지의 버튼에 모두 작성이 되어야 합니다.

그런데 int number = 0;은 버튼에 맞는 숫자로 변경을 해주세요. 6번 버튼에는 6으로 입력을 해주셔야 합니다.

현재 클릭해야 하는 숫자와 버튼에 저장되어 있는 1그룹의 숫자가 맞으면 2그룹의 숫자가 출력이 되도록 작성하였습니다.

그리고 현재 클릭해야 하는 숫자와 2그룹의 숫자가 맞으면 버튼에 텍스트뷰가 숨겨지게 작성하였습니다.


4. 50까지 다 터치를 하고나면 성공 화면이 보여져야 합니다.

if(match_number_int == 50) {
include[1].setVisibility(View.VISIBLE);
include[0].setVisibility(View.GONE);
}

위에 코드도 0부터 24까지의 버튼에 모두 작성이 되어야 합니다.

버튼을 클릭했을때 50의 숫자라면 성공화면이 보여지고 게임화면이 숨겨지도록 하고 있습니다.

5. 성공 화면에 확인을 누르면 1번이 다시 실행됩니다.

match_number_int = 1;
for(int reset_button_number = 0; reset_button_number <= 24; reset_button_number++) {
button_number_01[reset_button_number] = 0;
button_number_02[reset_button_number] = 0;
button_text[reset_button_number].setVisibility(View.VISIBLE);
}
include[0].setVisibility(View.VISIBLE);
include[1].setVisibility(View.GONE);
game();

확인 버튼에 작성되어야 하는 코드입니다.

확인을 누르면 int값을 초기화 해줘야 게임을 처음부터 시작이 가능하겠죠.

그룹01이랑 02에 저장된 숫자를 0으로 초기화를 해주고 각 버튼에 숨김처리된 텍스트뷰를 다시 보여지게 만들어 줘야 합니다.

확인을 눌렀으니 성공화면을 숨겨지게 하고 게임화면을 보여지게 해줘야겠죠.

또 각 버튼에 숫자를 다시 출력해 주도록 game();도 작성되어 있습니다.


이렇게 5개의 퍼즐조각이 모두 작성이 되었습니다.

for (int i = 0; i < 25; i++) {
final int j = i;
button[j].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(match_number_int == 50) {
include[1].setVisibility(View.VISIBLE);
include[0].setVisibility(View.GONE);
}
int number = j;
if(match_number_int == button_number_01[number]) {
match_number_int += 1;
button_text[number].setText(Integer.toString(button_number_02[number]));
}
if(match_number_int == button_number_02[number]) {
match_number_int += 1;
button_text[number].setVisibility(View.GONE);
}
now_number.setText(Integer.toString(match_number_int));
}
});
}


이로써 모든 코드 작성이 완료가 되었습니다.

퍼즐조각 5개가 하나로 합쳐지면 어플이 완성이 됩니다.

완성된 코드는 아래 java파일을 다운 받으셔서 확인해주세요.

MainActivity.java



처음 xml파일에 코딩을 할때에 색상적용도 같이 했기 때문에 따로 디자인 포스팅은 작성하지 않습니다.

모든 코딩이 완료되었을때 사용자 입맛에 맞게 색상이나 글씨크기 등등 변경해주세요.

이해하기 쉽게 설명을 하겠다고 생각하고 작성을 했는데 생각처럼 쉽게 설명이 되지 않은것 같네요.

지금까지 안드로이드 1to50 어플을 만들어 모자 포스팅을 읽어주셔서 감사합니다.

반응형

이 글을 공유하기

댓글(9)

Designed by JB FACTORY