teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

訂正

2018/04/28 08:29

投稿

asm
asm

スコア15149

answer CHANGED
@@ -2,8 +2,9 @@
2
2
  ```c
3
3
  #include <stdio.h>
4
4
  #include <stdbool.h>
5
+ #include <stdint.h>
6
+ #include <stdlib.h>
5
7
  #include <time.h>
6
- #include <stdlib.h>
7
8
 
8
9
  void swap(int8_t *b1, int8_t *b2){
9
10
  if(b1 == b2) return;
@@ -20,13 +21,12 @@
20
21
  swap(buf+size, buf+pos);
21
22
  }
22
23
  }
23
-
24
- // 各種設定
24
+ // C言語にもconstexprください
25
25
  #define TRUMP_SUIT 4
26
26
  #define TRUMP_JOKER_ENABLE 0
27
27
  #define TRUMP_JOKER_AMOUNT 1
28
28
  #define TRUMP_MAX_RANK 13
29
- #define TRUMP_SUIT_offset 6
29
+ #define TRUMP_SUIT_OFFSET 6
30
30
  #define TRUMP_RANK_MASK 63
31
31
  const int TRUMPS = TRUMP_SUIT * TRUMP_MAX_RANK + TRUMP_JOKER_ENABLE * TRUMP_JOKER_AMOUNT;
32
32
  typedef uint8_t CARD;
@@ -48,15 +48,15 @@
48
48
  int i = 0;
49
49
  for(int j = 0; j < TRUMP_SUIT; j++)
50
50
  for(int k = 1; k <= TRUMP_MAX_RANK; k++)
51
- deck[i++] = (j << TRUMP_SUIT_offset) | k;
51
+ deck[i++] = (j << TRUMP_SUIT_OFFSET) | k;
52
52
  // ジョーカーの挿入
53
53
  for(int j = 0; j < TRUMP_JOKER_AMOUNT; j++)
54
- deck[i++] = (j << TRUMP_SUIT_offset);
54
+ deck[i++] = (j << TRUMP_SUIT_OFFSET);
55
55
  return true;
56
56
  }
57
57
  void display_cards(CARD* cards, size_t size){
58
58
  for(int i = 0; i < size; i++){
59
- int suit = cards[i] >> TRUMP_SUIT_offset;
59
+ int suit = cards[i] >> TRUMP_SUIT_OFFSET;
60
60
  int rank = cards[i] & TRUMP_RANK_MASK;
61
61
  if(rank == 0){
62
62
  printf(" %s", RANK_DISPLAY[rank]);
@@ -66,15 +66,12 @@
66
66
  }
67
67
  puts("");
68
68
  }
69
-
70
69
  int main(){
71
70
  srand(time(NULL));
72
-
73
71
  CARD deck[TRUMPS];
74
72
  deck_build(deck, TRUMPS);
75
73
  shuffle(deck, TRUMPS);
76
- // シャッフルした山札の表示
77
- // display_cards(deck, TRUMPS);
74
+ display_cards(deck, TRUMPS);
78
75
 
79
76
  CARD* player_hand[PLAYERS];
80
77
  int player_hand_size[PLAYERS]={0};

1

修正

2018/04/28 08:29

投稿

asm
asm

スコア15149

answer CHANGED
@@ -26,7 +26,7 @@
26
26
  #define TRUMP_JOKER_ENABLE 0
27
27
  #define TRUMP_JOKER_AMOUNT 1
28
28
  #define TRUMP_MAX_RANK 13
29
- #define TRUMP_SUIT_current 6
29
+ #define TRUMP_SUIT_offset 6
30
30
  #define TRUMP_RANK_MASK 63
31
31
  const int TRUMPS = TRUMP_SUIT * TRUMP_MAX_RANK + TRUMP_JOKER_ENABLE * TRUMP_JOKER_AMOUNT;
32
32
  typedef uint8_t CARD;
@@ -48,15 +48,15 @@
48
48
  int i = 0;
49
49
  for(int j = 0; j < TRUMP_SUIT; j++)
50
50
  for(int k = 1; k <= TRUMP_MAX_RANK; k++)
51
- deck[i++] = (j << TRUMP_SUIT_current) | k;
51
+ deck[i++] = (j << TRUMP_SUIT_offset) | k;
52
52
  // ジョーカーの挿入
53
53
  for(int j = 0; j < TRUMP_JOKER_AMOUNT; j++)
54
- deck[i++] = (j << TRUMP_SUIT_current);
54
+ deck[i++] = (j << TRUMP_SUIT_offset);
55
55
  return true;
56
56
  }
57
57
  void display_cards(CARD* cards, size_t size){
58
58
  for(int i = 0; i < size; i++){
59
- int suit = cards[i] >> TRUMP_SUIT_current;
59
+ int suit = cards[i] >> TRUMP_SUIT_offset;
60
60
  int rank = cards[i] & TRUMP_RANK_MASK;
61
61
  if(rank == 0){
62
62
  printf(" %s", RANK_DISPLAY[rank]);