제가 지금 똑같은 카드 맞추기 게임을 만들고 있습니다.
카드가 뒤집어진 상태에서 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사용때는 한가지일만 해야하는건지 궁금합니다!




음...게임의 스토리는 잘 모르겠지만요...기본적인 UI스레드에서 실행되는 내용인듯 싶습니다.
기본적으로 그냥 보여주는 화면은 그대로 해놓구... 그 그림을 덮을 이미지만 하나 준비하시면 될것 같은데요..
그래서 5초가 흐른뒤 그 각가그이 그림위에 invisible 해놓은것을 혹은 gone -> visible 시키시면 화면이 가려지구..
그게 그리드뷰든 뭔뷰가 됐든... 해당 포지션을 클릭할 경우 그 포지션에 해당하는 그림을 gone 처리 혹은 invisible 시켜주시면
덮은 이미지가 사라지게 되므로 뒤에 그림이 보이지 않을까요? 로직적으로 동일한 그림일경우 뭐 처리하시는건 게임개발이니
전 잘 모르겠구요.. 뭐 그림 처리문제만 봐서는 그리 어렵지 않을것 같습니다.