> I made a command isay which is a special say for gods+ and i wanna
make it
> so levels under god see it as like a scrambled message like
> hello as fklsd
I use the following function, which I wrote as part of my language
implementation. Feel free to use it, if it does what you want. It
tends to make much longer words, which I don't care for but have not
gotten around to adjusting. You need to define some constants as well.
I actually use 102 vowel sounds and 32 consonants, but I trimmed it to
keep this post shorter.
/* Some constants used by make_gibberish(..) */
const char *vow_sounds[] = {"ab", "ack", "ay", "eff", "ib", "ob", "uff",
"ug", "uj", "yb", "yck", "yd", "yz" };
const int num_vow_sounds = 13;
const char *vowels[] = { "a", "e", "i", "o", "u", "y" };
const char *cons_sounds[] = {"b", "br", "c", "ch", "n", "p", "ps" };
const int num_cons_sounds = 7;
/*
* Translates the text of argument into gibberish and places the
* result in buf. Buf is assumed to have size bytes of storage space.
* Gibberish is random, so the same phrase will not produce the
* same result each time. The number of words spoken is preserved
* in the gibberish, but the number of letters/syllables will vary.
*/
char *make_gibberish( char *buf, int size, char *argument )
{
char temp_arg[MAX_STRING_LENGTH];
char *tok;
int i, len;
strcpy(temp_arg, argument);
*buf = '\0';
tok = strtok(temp_arg, " ");
while(tok) {
len = strlen(tok);
switch(len) {
case 1:
case 2:
case 3:
len = number(1, 2);
break;
case 4:
case 5:
len = number(2, 3);
break;
case 6:
case 7:
case 8:
len = number(2, 4);
break;
default:
len = number(3, 5);
break;
}
if (strlen(buf) > size - 5)
break; /* Abort if we're running out of room */
for (i = number(0,1), len += i; i < len; i++ ) {
if (i % 2) {
strcat(buf, vow_sounds[number(1,num_vow_sounds) - 1]);
strcat(buf, vowels[number(0, 5)]);
} else {
strcat(buf, cons_sounds[number(1, num_cons_sounds) - 1]);
}
}
if ( (tok = strtok(NULL, " ")) )
strcat(buf, " ");
}
return buf;
}
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
| Newbie List: http://groups.yahoo.com/group/circle-newbies/ |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT