#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#include<time.h>
int roll_dice(void) {
int d1 = rand() % 6 + 1;
int d2 = rand() % 6 + 1;
printf("You rolled: %d\n", d1 + d2);
return d1 + d2;
}
bool play_game(void) {
//如果srand和rand同放在一个循环或函数里,时间上基本没变,所取的种子是相同的,结果会一样
srand(time(NULL));
int point = roll_dice();
if (point == 7 || point == 11) {
printf("You win!\n");
return true;
} else if (point == 2 || point == 3 || point == 12) {
printf("You lose!\n");
return false;
}
printf("Your point: %d\n", point);
while (1) {
int tally = roll_dice();
if (tally == point) {
printf("You win!\n\n");
return true;
} else if (tally == 7) {
printf("You lose!\n\n");
return false;
}
}
}
int main(void) {
int wins = 0, losses = 0;
char again;
do {
play_game() ? wins++ : losses++;
printf("Play again? (y/n) ");
again = getchar();
while (getchar() != '\n'); //吞一下上面输入留下的回车或多余字符
putchar('\n');
} while (again == 'y' || again == 'Y');
printf("\nWins: %d, Losses: %d\n", wins, losses);
return 0;
}
【C语言】06_掷骰子
于 2024-05-10 21:19:36 首次发布