【C语言】06_掷骰子

#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;
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值