我的头不再工作了.我必须尽快完成这个如何使循环更短.
目前我有4个不同的for循环.我想把它们结合起来,只有一个.
Card[] cards = new Card[4*13];
void testCreateCards() {
int k = 0;
for (int suit = 0; suit <= 3; suit++) { // for suit
for (int value = 1; value <= 13; value++) { // from Ace to King
// build new card
cards[k++] = new Card(suit, value);
}
}
}
void testDrawClubs() {
int x = 0;
int y = 0;
for (int i = 0; i <= 12; i++) {
cards[i].displayCard(x, y);
x +=80;
}
}
void testDrawDiamonds() {
int x = 0;
int y = 80;
for (int i = 13; i <= 25; i++) {
cards[i].displayCard(x, y);
x +=80;
}
}
void testDrawHearts() {
int x = 0;
int y = 160;
for (int i = 26; i <= 38; i++) {
cards[i].displayCard(x, y);
x +=80;
}
}
void testDrawSpades() {
int x = 0;
int y = 240;
for (int i = 39; i <= 51; i++) {
cards[i].displayCard(x, y);
x +=80;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用模运算直接计算x和y,因为i % 13它为您提供了x坐标并i / 13为您提供了y坐标:
void testDrawCards() {
for (int i = 0; i < 52; i++) {
int x = i % 13;
int y = i / 13;
cards[i].displayCard(x * 80, y * 80);
}
}
Run Code Online (Sandbox Code Playgroud)