1

頭が働かなくなりました。私はこれをできるだけ早く終わらせなければなりません。どうすればこの for ループを短くできますか?

現時点では、4 つの異なる for ループがあります。それらを組み合わせて、1つだけにしたい。

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;
  }
}
4

1 に答える 1

5

x 座標とy座標が得られるため、剰余算術を使用して x と y を直接計算できます。i % 13i / 13

void testDrawCards() {
    for (int i = 0; i < 52; i++) {
        int x = i % 13;
        int y = i / 13;
        cards[i].displayCard(x * 80, y * 80);
    }
 }
于 2012-12-22T12:08:25.680 に答える