Deal cards for FreeCell: Difference between revisions
Content added Content deleted
No edit summary |
(→{{header|C}}: colors; just one array) |
||
Line 32: | Line 32: | ||
#include <stdlib.h> |
#include <stdlib.h> |
||
#include <locale.h> |
#include <locale.h> |
||
wchar_t s_suits[] = L"♣♦♥♠", s_nums[] = L"A23456789TJQK"; |
wchar_t s_suits[] = L"♣♦♥♠", s_nums[] = L"A23456789TJQK"; |
||
#define RMAX32 ((1U << 31) - 1) |
#define RMAX32 ((1U << 31) - 1) |
||
#define RMAX ((1U << 15) - 1) |
#define RMAX ((1U << 15) - 1) |
||
static int seed = 1; |
static int seed = 1; |
||
int rnd(void) { return (seed = (seed * 214013 + 2531011) & RMAX32) >> 16; } |
int rnd(void) { return (seed = (seed * 214013 + 2531011) & RMAX32) >> 16; } |
||
void srnd(int x) { seed = x; } |
void srnd(int x) { seed = x; } |
||
⚫ | |||
int card[52]; |
|||
⚫ | |||
{ |
{ |
||
int i; |
int i; |
||
for (i = 0; i < 52; |
for (i = 0; i < 52; c++) { |
||
printf("% |
printf(" \033[%dm%lc\033[m%lc", 32 - (1 + *c) % 4 / 2, |
||
s_suits[ |
s_suits[*c % 4], s_nums[*c / 4]); |
||
if (!(++i % 8) || i == 52) putchar('\n'); |
|||
} |
|||
putchar('\n'); |
|||
} |
} |
||
void deal(int s) |
void deal(int s, int *t) |
||
{ |
{ |
||
int i, j |
int i, j; |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
for ( |
for (i = 0; i < 51; i++) { |
||
j = 51 - rnd() % (52 - i); |
|||
s = t[i], t[i] = t[j], t[j] = s; |
|||
t[i] = t[n]; |
|||
} |
} |
||
⚫ | |||
⚫ | |||
} |
} |
||
int main(int c, char **v) |
int main(int c, char **v) |
||
{ |
{ |
||
int s; |
int s, card[52]; |
||
⚫ | |||
setlocale(LC_ALL, ""); |
setlocale(LC_ALL, ""); |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
return 0; |
return 0; |
||
}</lang> |
}</lang> |