카드로 족보평가하기 소스에서요(첫번째꺼 말고 답글단거 맨 마지막꺼에요^^)
static String getRank(Player p)
{
int[] kind = new int[5];
int[] number = new int[14];
boolean flush = false;
boolean straight = false;
int stCnt = 0;
boolean triple = false;
boolean fourCard = false;
int pairs = 0;
for (int i = 0; i < p.card.length; i++)
{
kind[p.card[i].kind]++;
number[p.card[i].number]++;
}
//플러시인지 검사한다.
for (int i = 0; i < kind.length; i++)
{
if (kind[i] == 5)
flush = true;
}
여기서 kind랑 number를 한칸씩 더 잡은 이유를 모르겠네요.. 카드 종류가 4장이고,
숫자가 13까지 있으니 4, 13으로 배열을 잡아야 하는게 정상아닌가요??
제가 4, 13잡으니까 아웃오브 인덱스 오류가 뜨더군요^^;; 왜 그런지 이유를 가르쳐 주세요 ㅠㅠ
그리고
for (int i = 0; i < p.card.length; i++)
{
kind[p.card[i].kind]++;
number[p.card[i].number]++;
}
이 구문이 가장 이해가 안가요;; 다른덴 그냥 대충 감이라도 오는데 여기선 OTL
카드 종류가 케이스 형태로 숫자로 나눠지는데 그 케이스 숫자를 ++시킨다는 말인지 도통 모르겠어요
그리고 마지막으로 플러쉬를 검사하는 부분에서 if (kind[i] == 5) 카드가 5장있으니까
문맥상 같은 숫자가 5개 있으면 플러쉬라는건 알겠는데 i가 0부터 시작하니까 kind[0] 이게 첫번재
오는 카드의 종류를 뜻하는건데, 이 숫자가 5와 같다는 뜻인가요 ? 내가 적어놓고도
무슨 소린지 몰겠네요 ㅠㅠ
아무리 고민해도 모르겠어요 답변 좀 부탁드립니다..^^
첫댓글 그 이유는... 배열은 0부터 시작하잖아요? 숫자의 범위는 1~13이고요. 배열을 14로 하면 범위가 0~13이 됩니다. 대신 0은 사용하지 않습니다. 만일 배열의 크기를 13으로 하면 숫자의 값에서 1을 더하고 빼고 그런 작업을 별도로 해줘야하는데 오류가능성도 있고 차라리 배열의 크기를 1 늘려서이렇게 하는 것이 더 낫습니
그리고... 두번째 질문은 플래시동영상자료실가서 배열관련 동영상을 보시면 아주아주 자세히 나옵니다. 그거 이해하시면 해결됩니다. 이해가 안가시면 플래시동영상을 반복해서 보시기 바랍니다.
감사합니다^^;;