编写程序模拟掷骰子的游戏(两个骰子)。每局游戏的规则如下: 第一次掷的时候,如 果点数之和为 7 或 11 则获胜;如果点数之和为2、3或12则落败;其他情况下的点数之和称为“目标”,游戏继续。在后续的投掷中,如果玩家再次掷出“目标”点数则获胜,掷出7则落败,其他情况都忽略,游戏继续进行。 每局游戏结束时,程序询问用户是否再玩一次,如果用 户输入的回答不是 y 或 Y ,程序会显示胜败的次数然后终止。用C语言实现
时间: 2024-03-22 18:37:44 浏览: 177
以下是用 C 语言编写的模拟掷骰子游戏的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int win = 0, lose = 0; // 初始化胜败次数
char answer; // 储存用户的输入
srand(time(NULL)); // 设置随机数种子
do {
int point = 0, sum = 0;
printf("Press enter to roll the dice...");
getchar(); // 等待用户按下回车
sum = rand() % 6 + 1 + rand() % 6 + 1; // 掷两个骰子
printf("You rolled %d\n", sum);
if (sum == 7 || sum == 11) { // 第一轮胜利
printf("You win!\n");
win++;
} else if (sum == 2 || sum == 3 || sum == 12) { // 第一轮失败
printf("You lose!\n");
lose++;
} else { // 第一轮目标
point = sum;
printf("Your point is %d\n", point);
do {
printf("Press enter to roll the dice...");
getchar();
sum = rand() % 6 + 1 + rand() % 6 + 1;
printf("You rolled %d\n", sum);
if (sum == point) { // 目标达成
printf("You win!\n");
win++;
break;
} else if (sum == 7) { // 失败
printf("You lose!\n");
lose++;
break;
}
} while (1); // 持续掷骰子直到胜利或失败
}
printf("Do you want to play again? (y/n) ");
scanf(" %c", &answer);
} while (answer == 'y' || answer == 'Y');
printf("You won %d times and lost %d times.\n", win, lose);
return 0;
}
```
程序会先生成随机数种子,然后进入 do-while 循环,每次循环代表一局游戏。在每局游戏中,程序会等待用户按下回车后随机生成两个骰子的点数,并计算它们的和。如果和为 7 或 11,则玩家胜利,程序会输出相应的信息并将胜利次数加 1;如果和为 2、3 或 12,则玩家失败,程序也会相应输出信息并将失败次数加 1。如果和为其他值,则程序会将这个值作为本轮的目标,输出相应信息并进入第二轮掷骰子的环节。在第二轮中,玩家需要不断掷骰子直到达成目标或者掷出 7,程序会相应输出胜负信息并计算胜败次数。每轮结束后,程序会询问用户是否继续游戏。如果用户回答 y 或 Y ,则程序会重新进入下一轮游戏;否则程序会输出胜败次数并结束运行。
阅读全文