c和c++的一些训练题(13)(掷双骰)

问题的提出:赌博游戏世界无所不在,其中“掷双骰”游戏家喻户晓其游戏规则如下:每次掷两个骰子,每个骰子的6面上分别标有1、2、3、4、5、6,两个骰子停止滚动后,计算其向上的点数之和。假如首次掷出后点数之和为7和11,那么玩家赢(庄家输)。假如首次掷出后点数之和为2、3或12,那么玩家输(庄家赢)。假如首次掷出后点数之和为4、5、6、8、9和10,那么这些数字会立即成为玩家的“目标点”(即下次如遇到此点数为赢)。要想赢,必须不断地掷两个骰子,直到点数与目标点数相等为止,但在这之前,假如不幸地掷出7点,那么玩家马上就输,试编程模拟此游戏。

分析:这题是一个简单的逻辑问题,需要了解c++中随机数是怎么生成的(见前一篇博客),然后理解整个游戏的游戏规则,就可以编写程序了。

代码:

// test15_.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	cout<<"*********************GAME START*******************"<<endl;
	srand((unsigned)time(NULL)); 
	int a,b,flag=0;
	int sum;
	int goal;
	a=rand()%6+1; 
	b=rand()%6+1;
	sum=a+b;
	cout<<a<<" + "<<b<<" = "<<sum<<endl;
	//The first round
	switch (sum)
	{
	case 2:
	case 3:
	case 12:
		flag=1;
		cout<<"The player won the game!"<<endl;
		break;
	case 7:
	case 11:
		flag=1;
		cout<<"The banker won the game!"<<endl;
		break;
	default:
		flag=0;
		goal=sum;
		cout<<"The target is "<<goal<<endl;
		break;
	}
	while (flag==0)
	{
		a=rand()%6+1; 
		b=rand()%6+1;
		sum=a+b;
		if (sum==7)
		{
			flag=1;
			cout<<a<<" + "<<b<<" = "<<sum<<endl;
			cout<<"The banker won the game!"<<endl;
		} 
		else if(sum==goal)
		{
			flag=1;
			cout<<a<<" + "<<b<<" = "<<sum<<endl;
			cout<<"The player won the game!"<<endl;
		}
		else
		{
			flag=0;
			cout<<a<<" + "<<b<<" = "<<sum<<endl;
			continue;
		}
	}

	cout<<"*********************GAME OVER********************"<<endl;
	system("pause");
	return 0;
}
结果:

阅读更多
个人分类: c和c++的学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭