示例#1
0
int rollDiceCommand(char* rollString, int verbose) {
	// Initialize the roll parameters
	// [0] is number of dice
	// [1] is size of dice
	// [2] is die additive
	// [0]d[1] + [2]
	int params[3];
	// Initialize parameters to standard 1d6+0
	params[0] = 1;
	params[1] = 6;
	params[2] = 0;
	// Parse through the roll string, putting it in parameters
	if (parseRoll(rollString, params)) {
		rollDice(params[0], params[1], params[2], verbose);
	}
	// If parseRoll fails (returns 0),
	else {
		printf("Syntax error - please input rolls in forms of #d#+#, no spaces\n");
	}
	return -1;

}
示例#2
0
int main(int argc, char ** argv)
{
	if (argc < 2)
	{
		printf("No.\n");
		return 1;
	}

	struct Roll * rolls = (struct Roll *) malloc(sizeof(struct Roll) * (argc - 1));
	for (int i = 1; i < argc; i++)
	{
		rolls[i - 1] = parseRoll(argv[i]);
	}

	seedRandom();

	int sum = 0;
	for (int i = 1; i < argc; i++)
	{
		int subtotal = 0;
		struct Roll roll = rolls[i - 1];
		int * results = (int *) malloc(sizeof(int) * roll.count);
		for (int count = 0 ; count < roll.count; count++)
		{
			int result = rand() % roll.size + 1;
			if (result <= roll.reroll)
			{
				count--;
				printf("Got %d; rerolling.\n", result);
			}
			else
			{
				results[count] = result;
				// printf("Got %d; continuing.\n", result);
			}
		}

		qsort(results, roll.count, sizeof(int), sortDescCmp);

		int keep = 0;
		for ( ; keep < roll.keep; keep++)
		{
			printf("%dd%d (%d): %d\n", roll.count, roll.size, keep, results[keep]);
			subtotal += results[keep];
		}
		for ( ; keep < roll.count; keep++)
		{
			printf("%dd%d (%d): %d (discarded)\n", roll.count, roll.size, keep, results[keep]);
		}

		if (roll.modifier != 0)
		{
			if (roll.modifier > 0)
			{
				printf("Subtotal: %d + %d = %d\n", subtotal, roll.modifier, subtotal + roll.modifier);
			}
			else
			{
				printf("Subtotal: %d - %d = %d\n", subtotal, -roll.modifier, subtotal + roll.modifier);
			}
			subtotal += roll.modifier;
		}
		else
		{
			printf("Subtotal: %d\n", subtotal);
		}
		sum += subtotal;
	}

	printf("Total %d\n", sum);

	return 0;
}