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 roundswitch (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++的一些训练题(13)(掷双骰)

相关文章:

你感兴趣的文章:

标签云: