// badname.c // generates awful fantasy names based on a consistent // lexicon. // copyright 2014 alexis hale. released under GPLv2. #include #include #include #define to(ty, ctr, end) for(ty ctr = 0; ctrnoun->nat); prt(n++->act->nat); putchar(' '); } while (++ct < len); prt("\e[0m(\"\e[4m"); ct = 0; do { prt(names->noun->translation); prt(names++->act->translation); if (ct != len-1) putchar(' '); } while (++ct < len); prt("\e[0m\")"); } typedef struct entity_t { name_t* names; u8 namec; } entity_t; void make_entity(entity_t* e) { e -> namec=rand()%3 + 2; e -> names=malloc(sizeof(name_t)*e->namec); to (u8, i, e -> namec) { e -> names[i].noun = &nouns[rand() % sizeof(nouns) / sizeof(struct morpheme)]; e -> names[i].act = &acts[rand() % sizeof(acts) / sizeof(struct morpheme)]; } } int main() { srand(time(NULL)); const u8 entities = 20; entity_t* es = malloc(sizeof(entity_t)*entities); for (u8 e = 0; e