본인은이 부분에 도움이 필요합니다. 이 부분에서는 2 개의 난수를 생성하고 그 난수를 사용하여 2 개의 레이블 상자 각각에 카드를 동시에 표시합니다. 문제는 난수가 제대로 생성되지 않아서 카드가 제대로 표시되지 않는다는 것입니다 (반복, 때로는 표시 없음 등)2 개의 난수 생성기 (카드 처리)
내 코드의 기본 내용 : 변수가 h 인 것으로 가정 해 봅시다. 코드의 다른 부분은 1에서 53 사이의 숫자입니다 (각 숫자는 카드와 관련됩니다). 생성 된 난수 (반복 없음)가 변수 h와 일치하면 타이머가 중지됩니다.
기본적으로 카드 덱을 가지고 2 인에게 카드를 고르게 분배하는 것과 비슷하지만 무작위로 찍은 카드 (번호)와 관련된 숫자가 일치하면 거래가 중지됩니다. 어떤 도움을 주시면 감사하겠습니다
Random rng = new Random();
List<Integer> generated = new ArrayList<Integer>();
List<Integer> generated2 = new ArrayList<Integer>();
int l3count;
int l4count;
int Ulim = 53;
int Llim = 1;
int next;
int check;
int h;
int next2;
int Ulim2 = 53;
int Llim2 = 1;
final int p = h;
int delay2 = 1000;
final Timer timer2 = new Timer();
timer2.schedule(new TimerTask(){
public void run(){
for (int i = 1; i < 53; i++)
{
while(true)
{
next = rng.nextInt(Ulim) + Llim;
if (!(generated.contains(next)||generated.contains(next2)))
{
generated.add(next);
break;
}
next2 = rng.nextInt(Ulim2) + Llim2;
if (!(generated.contains(next)||generated.contains(next2)))
{
generated.add(next2);
break;
}
}
String a = Integer.toString(next);
String c = "C:\\Users\\mycompname\\Desktop\\deck\\"+a+".png";
String d = Integer.toString(next2);
String e = "C:\\Users\\mycompname\\Desktop\\deck\\"+d+".png";
for(int j = 1;j<=53;j++)
{
if(j%2==0)
{l3.setIcon(new ImageIcon(c));
}
else
{l4.setIcon(new ImageIcon(e));
}
}
if(next==p||next2==p)
check=10;
break;
}
if(check==10)
timer2.cancel();
timer2.purge();
}
},delay2, 1000);
:
전역 변수 (L3, L4는 레이블 이름입니다). 시간 내 주셔서 감사합니다.
FFS는 코드를 올바르게 형식화합니다. 당신이 도움을 원한다면, 우리가 읽을 수있게함으로써 당신을 도울 수 있도록 도와 주시고, 당신의 청중을 존경하십시오. – Bohemian