抢答比赛游戏

抢答比赛游戏

编写程序实现一个抢答控制器游戏。该应用场景适合于解决对等多角色的优先问题的抢占模型。具体实现为,当开始抢答时选手A, B, C几乎同时按下时,系统给出按键最快的玩家编号。
设计任务要求一- :

  1. 任意时候按下键盘上的’S’,则开始进入抢答, 输出提示抢答开始。5秒的抢
    答时间过后则抢答无效,并且输出提示抢答时间到。
  2. 开始后三个选手 角色可能会几乎同时按下键盘上的’A"B"C’,用来模拟抢答
    角色按键。一旦有角色先按下抢答按键,则抢答结束,并输出提示抢到答
    题权的角色。
  3. 需要选择一个能实时检测键盘按键动作事件的Windows系统函数。
    设计任务要求二:
  4. 输出抢答调试功能。提示每个角色的抢答按键时间,要求精确到10ms
主函数
int main()
{
	char begin;           //抢答开始信号 
	printf("请输入S,发出抢答信号:\n");
	scanf("%c",&begin);  //输入大写S表示开始抢答
	getchar();
	if(begin=='S')
	{
		funtion();	
	}
	return 0;
} 
选择胜出选手
void change_funtion(double duration1,double duration2,double duration3)
{
	double min;
	min = duration1;
	if(duration1<duration2&&duration1<duration3)
	{
		printf( "选手A胜出\n");
		printf("抢答所用时间为:%0.2lfS\n",duration1);
	}
	if(duration2<duration1&&duration2<duration3)
	{
		printf( "选手B胜出\n");
		printf("抢答所用时间为:%0.2lfS\n",duration2);
	}
	if(duration3<duration1&&duration3<duration2)
	{
		printf( "选手C胜出\n");
		printf("抢答所用时间为:%0.2lfS\n",duration3);
	}
}
主要功能实现函数
void funtion()
{
	char player1,player2,player3;                  //参赛选手 
	char m;
	char win;
	int i; 
	double duration1 = 0.0,duration2 = 0.0,duration3 = 0.0,duration_endl = 0.0;  // 抢答所用时间
	clock_t start,finish1,finish2,finish3,endl;
	start = clock();        //发出抢答信号 
	if(duration_endl<5.0)
	{
		for(i=0;i<3&&duration_endl<5.0;i++)
		{
			scanf("%c",&m);
			endl = clock();
			duration_endl += (double)(endl-start)/(clock_t)(1000);
	//		getchar();
			switch(m)
			{
				case 'A': player1 = getchar();finish1 = clock();
						  duration1 = (double)(finish1-start)/(clock_t)(1000);break;
				case 'B': player2 = getchar();finish2 = clock();
				  		  duration2 = (double)(finish2-start)/(clock_t)(1000);break;
				case 'C': player3 = getchar();finish3 = clock();
						  duration3 = (double)(finish3-start)/(clock_t)(1000);break; 
				default: printf("输入选手错误\n");break;
			}	
		}
		if(duration1>5.0||duration1==0.0)
		{
			duration1 = 999.0;
			printf("选手A超出抢答时间,抢答无效\n");
		}
		else
			printf("选手A所用抢答时间为:%0.2lfS\n",duration1);
		if(duration2>5.0||duration2==0.0)
		{
			duration2 = 999.0;
			printf("选手B超出抢答时间,抢答无效\n");
		}
		else
			printf("选手B所用抢答时间为:%0.2lfS\n",duration2);
		if(duration3>5.0||duration3==0.0)
		{
			duration3 = 999.0;
			printf("选手C超出抢答时间,抢答无效\n");
		}
		else
			printf("选手C所用抢答时间为:%0.2lfS\n",duration3);
		if((duration1>5.0||duration1==0.0)&&(duration2>5.0||duration2==0.0)&&(duration3>5.0||duration3==0.0))
			printf("超出抢答时间,全部抢答失败。\n");
		else
			change_funtion(duration1,duration2,duration3);
	}
	else 
		printf("超出抢答时间,全部抢答失败。\n");

输入说明: 发出抢答信号S后,按回车键+选手名称逐个输入参赛选手

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值