public void openCard(){
i = r.nextInt(51);
String shape = null;
String num = null;
if(card[i]!=0){
switch(i/13){
case 0:
shape = "spade";
break;
case 1:
shape = "heart";
break;
case 2:
shape = "clover";
break;
case 3:
shape = "diamond";
break;
}
switch(i+1){
case 1:
num = "A";
break;
case 2:
num = "2";
break;
case 3:
num = "3";
break;
case 4:
num = "4";
break;
case 5:
num = "5";
break;
case 6:
num = "6";
break;
case 7:
num = "7";
break;
case 8:
num = "8";
break;
case 9:
num = "9";
break;
case 10:
num = "10";
break;
case 11:
num = "J";
break;
case 12:
num = "Q";
break;
case 13:
num = "K";
break;
}
}
else if(i==0)
System.out.println(shape +" "+ num);
sum();
card[i] = 0;
}
필드에 있는 배열 card는
int card[] = {1,2,3,4,5,6,7,8,9,10,10,10,10,1,2,3,4,5,6,7,8,9,10,10,10,10,1,2,3,4,5,6,7,8,9,10,10,10,10,1,2,3,4,5,6,7,8,9,10,10,10,10};
이거구요
i를 0~51까지의 52개의 수중에 랜덤하게 하나를 뽑아서
랜덤한패를 하나뽑는 메소드를 만들었는데 두장을 뽑는다고하면 처음한장을 뽑고
뽑은 card[i] 를 0으로 바꿔서 이미 뽑혔다고 표시를해서
else if(i==0)
두번째 카드부터는 card[i]의 값이 0이면 다시뽑게 하려고 하는데 저기 빨간부분에 뭘 넣어야 다시 위로올라가서 난수설정을 다시하고
카드를 뽑을까요?
--------------------------------------------------------------------
제가쓴말인데 제가 못알아보겠네요
52장 트럼프카드에서 두장을 뽑는데 처음뽑고나서 두번째 뽑을때 첫번째에 이미 뽑힌숫자가 또뽑히는걸 방지하려고 하는건데
첫번째 숫자를뽑고 그숫자에 해당하는 배열값을 0으로 바꿔서
두번째 뽑을았을때 배열값이 0이라면 이미뽑힌 카드라서
다시 두번째 카드를 뽑게 만드는 방법을 모르겠어요
뽑으면 -1로 만들고 다음번에 다시 뽑을 때 -1이면 새로 뽑는걸로
뽑으면 0으로 만들고 다음번에 다시 뽑을때 0이면 새로 뽑는걸로 이미했는데
위에 글에서 빨간부분에 뭘넣어야 새로 뽑는게 되는지를 모르는거에요
빨간색부분에 뭘넣으면 다시 메소드가 실행될까요??
else if(i==0) -> else{while(card[i]!=0)i=r.nextint(51);}
운없으면 while에서 갇히겠지만 언젠가는 나오겠지 뭐
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.