Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define diceA {'Q','U','M','H','N','I'}
#define diceB {'O','O','B','B','J','A'}
#define diceC {'C','M','U','O','T','I'}
#define diceD {'T','Y','E','L','R','T'}
#define diceE {'E','E','G','N','A','A'}
#define diceF {'O','T','W','O','T','A'}
#define diceG {'E','E','N','H','W','G'}
#define diceH {'H','A','P','S','O','C'}
#define diceI {'I','T','S','T','Y','D'}
#define diceJ {'T','O','E','S','S','I'}
#define diceK {'E','R','L','I','D','X'}
#define diceL {'N','L','N','H','Z','R'}
#define diceM {'N','E','E','I','U','S'}
#define diceN {'P','S','A','F','K','F'}
#define diceO {'R','E','T','W','V','H'}
#define diceP {'E','Y','L','D','V','R'}
char allDice[16][6] = {diceA,diceB,diceC,diceD,diceE,diceF,diceG,diceH,diceI,diceJ,diceK,diceL,diceM,diceN,diceO,diceP};
int main (int argc, const char * argv[]) {
char lettersUp[16] = {0};
for (int i = 0; i < 16; i++) {
lettersUp[i] = allDice[i][(rand() % 6)]; //NEED A BETTER RANDOM GENERATOR???
}
char board[4][4] = {0};
int used[16] = {0};
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
retry:;
int pointer = (rand() % 16); //NEED A BETTER RANDOM GENERATOR???
if (used[pointer] != 1) {
board[i][j] = lettersUp[pointer];
used[pointer] = 1;
}
else {
goto retry;
}
}
}
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 3; ++j)
{
printf("%s", board[i][j]);
}
putchar('\n');
}
}