상세 컨텐츠

본문 제목

[안드로이드] 같은 그림 찾기 게임 만드는 방법 part2 - 이미지 섞기& 보여주기

안드로이드

by aries574 2022. 4. 3. 12:33

본문


이번 시간에는 저번 포스팅에 이어서 하겠습니다.

화면을 구성했으니, 8개의 이미지 버튼에 이미지를

보여주도록 하겠습니다.

이미지는 나중에 똑같은 이미지를 맞춰야 하기 때문에

섞어서 보여줘야 합니다. 그럼 시작하겠습니다. 

이전 포스팅은 아래 링크로 들어가시면 됩니다.

2022.04.02 - [안드로이드] - [안드로이드] 같은 그림 찾기 게임 만드는 방법 part1 - 화면 구성

 

[안드로이드] 같은 그림 찾기 게임 만드는 방법 part1 - 화면구성

앞으로 같은 그림 찾기 게임을 만들어 보겠습니다. 이번 시간에는 화면 구성을 해보겠습니다. 이 게임은 8장의 카드가 있고, 2장의 카드를 뒤집어서 같은 그림이면 성공, 틀리면 맞을 때까지 하

aries574.tistory.com


목차

1. 실행 화면

2. 카드 클래스 만들기

3. 메인 코드 구현 MainActivity.java


1. 실행 화면

2. 카드 클래스 만들기

 - 설명 -

 imageId: 이미지 아이디(R.drawable.dog)

 isFaceUp: 카드 앞면(false) 카드 뒷면(true)

 isMatched: 매치(true) 노 매치(false)

public class MemoryCard {

    private int imageId;
    private boolean isFaceUp;
    private boolean isMatched;

    public MemoryCard(int imageId, boolean isFaceUp, boolean isMatched) {
        this.imageId = imageId;
        this.isFaceUp = isFaceUp;
        this.isMatched = isMatched;
    }

    public int getImageId() {
        return imageId;
    }

    public void setImageId(int imageId) {
        this.imageId = imageId;
    }

    public boolean isFaceUp() {
        return isFaceUp;
    }

    public void setFaceUp(boolean faceUp) {
        isFaceUp = faceUp;
    }

    public boolean isMatched() {
        return isMatched;
    }

    public void setMatched(boolean matched) {
        isMatched = matched;
    }
}

2021.12.31 - [안드로이드] - [안드로이드 스튜디오] 자바 클래스 생성하는 방법

 

[안드로이드 스튜디오] 자바 클래스 생성하는 방법

이번 시간에는 안드로이드 스튜디오(AndroidStudio)에서 자바 클래스 생성하는 방법을 알아보겠습니다. 기본으로 안드로이드 스튜디오 프로젝트를 생성하면 아래 화면처럼 MainActivity가 기본으로 생

aries574.tistory.com

 

 

3. 메인 코드 구현 MainActivity.java

 - 설명 - 

  1. 이미지 리스트에 이미지를 담습니다. 

  2. 이미지를 섞습니다. 

  3. card 리스트에 카드정보를 담습니다.

  4. 각 버튼에 클릭이벤트를 적용합니다. 

  5. 각 버튼에 card리스트의 이미지를 넣습니다. 

  6. 리셋버튼으로 새로운 정보로 초기화합니다.

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    //버튼 배열
    private ImageButton[] buttons =  new ImageButton[8];

    //이미지 리스트
    private ArrayList<Integer> imageList;

    //카드 리스트
    private ArrayList<MemoryCard> cards;

    //결과 텍스트
    private TextView resultText;

    //초기화 버튼
    private TextView resetBtn;

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

        resultText = findViewById(R.id.result_text);

        init();

        Button resetBtn = findViewById(R.id.reset_btn);
        resetBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                init();
            }
        });


    }//onClick

    //초기화
    public void init(){

        //리스트에 데이터 등록
        imageList = new ArrayList<>();
        imageList.add(R.drawable.dog);
        imageList.add(R.drawable.pig);
        imageList.add(R.drawable.rabbit);
        imageList.add(R.drawable.cat);
        imageList.add(R.drawable.dog);
        imageList.add(R.drawable.pig);
        imageList.add(R.drawable.rabbit);
        imageList.add(R.drawable.cat);

        //순서 섞기
        Collections.shuffle(imageList);

        //카드 리스트 초기화
        cards = new ArrayList<>();

        //버튼 초기화
        for(int i = 0; i < buttons.length; i++){

            String buttonID = "imageBtn" + i;
            int resourceID = getResources().getIdentifier(buttonID, "id", getPackageName());
            buttons[i] = findViewById(resourceID);

            //각 버튼에 클릭이벤트 적용
            buttons[i].setOnClickListener(this);

            //카드 리스트에 담기
            cards.add(new MemoryCard(imageList.get(i), false, false));

            buttons[i].setImageResource(cards.get(i).getImageId());
        }
    }

    @Override
    public void onClick(View view) {

        int id = view.getId();

        int position = 0;

        if(id == R.id.imageBtn0){
            position = 0;

        }else if(id == R.id.imageBtn1){
            position = 1;
        }else if(id == R.id.imageBtn2){
            position = 2;
        }else if(id == R.id.imageBtn3){
            position = 3;
        }else if(id == R.id.imageBtn4){
            position = 4;
        }else if(id == R.id.imageBtn5){
            position = 5;
        }else if(id == R.id.imageBtn6){
            position = 6;
        }else if(id == R.id.imageBtn7){
            position = 7;
        }
    }
}//MainActivity

이미지 res -> drawable

cat.png
0.00MB
dog.png
0.00MB
pig.png
0.00MB
rabbit.png
0.00MB

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.30 - [안드로이드] - [안드로이드] 야구게임 만드는 방법 part1 - 화면 구성 및 랜덤 숫자 생성

 

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

이번 시간에는 야구게임을 만들어 보겠습니다. 게임의 규칙을 설명하겠습니다. 1. 게임을 시작하면 랜덤한 숫자 3개를 생성합니다. 2. 사용자는 랜덤으로 생성된 숫자 3개를 맞춰야 합니다. 3. 숫

aries574.tistory.com

2022.03.31 - [안드로이드] - [안드로이드] 야구게임 만드는 방법 part2 - 기능 구현

 

[안드로이드] 야구게임 만드는 방법 part2 - 기능구현

이번에는 저번에 이어서 야구게임 기능 구현을 만들어보겠습니다. 이전 포스팅은 아래에 있습니다. 2022.03.30 - [안드로이드] - [안드로이드] 야구게임 만드는 방법 part1 - 화면 구성 및 랜덤 숫자

aries574.tistory.com

반응형

관련글 더보기

댓글 영역