제가 지금 똑같은 카드 맞추기 게임을 만들고 있습니다.

카드가 뒤집어진 상태에서 5초간 앞면을 보여준다음에 다시 닫아야 하는데..

제 코드는 그냥 뒤집어진 상태로 앞면을 보여주지 않습니다;

public Card(int _Color){
  
  //카드생성자 카드색상값을 받음
  m_state=CARD_CLOSE; //카드상태클로즈
  m_Color=_Color; //색상값을 색상변수에 넣는다
  
 } 

카드 클래스에서

카드 생성자값을 준것인데요 기본으로 뒷면을 보여주는 걸로 했습니다

 

public boolean onTouchEvent(MotionEvent event){
  
    if(m_state==STATE_READY){
  
       startGame(); //카드 뒷면을 5초간 앞면을 보여주고 다시 뒤집는다.
       m_state=STATE_GAME;  //카드게임을 시작
           
  }

 

위는 터치함수이고요,

m_state는 전체적인 게임상태를 말하는데 s

state_ready상태는 게임하기전을 말하는 것입니다.

그러니깐 화면을 터치하면

상태가 state_ready이니깐 카드 뒷면을 5초간 뒤집어 앞면을 보여주고 다시 카드 뒷면으로 뒤집고,

state_game되어 카드게임을 시작하는 것입니다.

 

 public void startGame(){
  
  //모든카드를 앞면상태 보여주기로 상태값을 준다
  m_Shuffle[0][0].m_state=Card.CARD_SHOW;
     m_Shuffle[0][1].m_state=Card.CARD_SHOW;
  m_Shuffle[1][0].m_state=Card.CARD_SHOW;
  m_Shuffle[1][1].m_state=Card.CARD_SHOW;
  m_Shuffle[2][0].m_state=Card.CARD_SHOW;
  m_Shuffle[2][1].m_state=Card.CARD_SHOW;
 

//5초간 앞면을 보여준 상태로 대기
  try{
   
   Thread.sleep(500);
  }
  catch(InterruptedException e){
   
   
  }
 

//5초후 카드 상태를 뒷면으로 보여준다
  m_Shuffle[0][0].m_state=Card.CARD_CLOSE;
  m_Shuffle[0][1].m_state=Card.CARD_CLOSE;
  m_Shuffle[1][0].m_state=Card.CARD_CLOSE;
  m_Shuffle[1][1].m_state=Card.CARD_CLOSE;
  m_Shuffle[2][0].m_state=Card.CARD_CLOSE;
  m_Shuffle[2][1].m_state=Card.CARD_CLOSE;
  
  postInvalidate();

        

카드는 총 6개입니다.

카드상태는 보여주기상태로 하여 앞면으로 보여주고

5초간 대기상태로 있다가

다시 카드를 뒤집어 버리는 것인데...

제가 thread를 잘 사용하는 법을 몰라서 그런건지

계속 뒤집은 상태만 됩니다. 어떻게 해야하는지 알 수 있을까요?;;

thread사용때는 한가지일만 해야하는건지 궁금합니다!