/* 博弈掷骰子的模拟啊哈哈哈哈哈哈哈哈哈哈哈哈 掷双骰游戏: 玩家掷两个骰子。每个骰子有六面,分别含有1、2、3、4、5和6个点。 掷完骰子后,就计算两个朝上的点数之和。如果首次投掷的点数综合等于7或者11的话 玩家胜利;如果首次投掷的点数之和是2、3或12的话,那么玩家输; 如果首次投掷的点数之和是4、5、6、8、9或10,那么这个和就成为玩家的 “点数”,想要继续赢的话,玩家必须连续掷骰子知道这个点数同这个目标点数相同为止。 即得到了“点数”,但是如果在得到点数之前,掷到的是7,那么就会输掉这盘游戏 */ #include <iostream> using std::cin; using std::cout; using std::endl; #include <ctime> using std::time; #include <cstdlib> using std::rand; using std::srand; int rollDice();//掷骰子,计算骰子的和,并且输出结果 int main() { //,枚举类型,存储玩家当前所处的状态 enum Status{ CONTINUE , WON , LOST }; int myPoint;//玩家的“点数” Status gameStatus ;//创建一个游戏中的枚举对象 //为了获取随机数字时不用每次都输入种子,获取自己的时钟来得到种子值 srand(time(0)); int sumOfDice = rollDice();//第一次掷骰子得到的值 switch(sumOfDice) { case 7: case 11: gameStatus = WON; //玩家第一次掷骰子就获胜的情况 ,赋值语句!!! break; case 2: case 3: case 12: gameStatus = LOST; break; default: myPoint = sumOfDice; gameStatus = CONTINUE; cout << "Point is " << myPoint << endl; break; } //while循环继续进行掷骰子游戏,并且进一步判断玩家是输还是赢 while(gameStatus == CONTINUE) //如果gameStatus仍然是CONTINUE,则循环继续,,,, { sumOfDice = rollDice(); if(sumOfDice == myPoint) //玩家赢得时候 gameStatus = WON; if(sumOfDice == 7)//玩家输的时候 gameStatus = LOST; } if(gameStatus == WON) //不是赋值语句啊,少个等号你看看!!! cout << "Player wins " << endl; else cout << "Player loses" << endl; system("pause >> cout "); return 0; } int rollDice() { //掷骰子所得的两个点数 int die1 = 1 + rand()%6 ; int die2 = 1 + rand()%6 ; int sum = die1 + die2;//骰子点数和 cout << "Player rolled " << die1 << " + " << die2 << " = " << sum <<endl; return sum; }
//计算这个游戏获胜的概率?? #include <iostream> #include <ctime> #include <cstdlib> #define NUMBER 10000000 using namespace std; int rollDice();//掷骰子计算骰子的和 int main() { enum Status{ CONTINUE , WON , LOST };//玩家当前所处的状态 int myPoint ;//玩家的“点数”,用于保存第一次玩家得到的点数!!第一次啊第一次 int winFrequency = 0;//玩家赢的次数 int loseFrequency = 0;//玩家输的次数 Status gameStatus ; int sumOfDice;//玩家每次掷骰子得到的两面骰子总和 srand(time(0));//如果把这条语句写进for循环语句,则会出现永远为0的情况 //进行NUMBER次游戏,得到输赢次数,进而计算频率 for(int i=0;i<NUMBER;i++) { sumOfDice = rollDice(); switch(sumOfDice) { case 2: case 3: case 12: gameStatus = LOST; break; case 7: case 11: gameStatus = WON; break; default: gameStatus = CONTINUE; myPoint = sumOfDice; break; }//end switch //在第一次没赢没输的情况下游戏一直进行下去循环直到分出输赢 while(gameStatus == CONTINUE) { sumOfDice = rollDice(); if(sumOfDice == myPoint) gameStatus = WON; if(sumOfDice == 7) gameStatus = LOST; }//end while //计算输赢次数 if(gameStatus == WON) winFrequency++; else loseFrequency++; }//end for cout << "玩家在" << NUMBER << "次游戏中获胜的次数为:" << winFrequency << " , 输掉的次数为:" << loseFrequency << endl; cout << "这个游戏的获胜概率大约为:" << static_cast<double>(winFrequency)/NUMBER << endl; system("pause >> cout"); return 0; } int rollDice() { int face1 = 1 + rand()%6; int face2 = 1 + rand()%6; int sum = face1 + face2; return sum; }
相关推荐
C++大学基础教程_12767412.pdf
C++基础教程_完整版 - 副本.pdf
C++基础教程_完整版 C++基础教程_完整版 C++基础教程_完整版 C++基础教程_完整版 C++基础教程_完整版 C++基础教程_完整版
c++基础教程 c++内容ppt教程并附课程模板
C++Primer_chm_实例C++Primer_chm_实例C++Primer_chm_实例C++Primer_chm_C++Primer_chm_实例实例
C++_MFC_基础教程_(初学者) ppt
_Visual C++ 6.0 实例教程_Visual C++ 6.0 实例教程_Visual C++ 6.0 实例教程
C++大学基础教程(第五版)(C++ How to Program中文版).pdf
C++基础实例教程,从基本数据类型到文件操,每个知识点都附有一段代码,可以编译成功
Visual_C++_6[1].0_编程实例与技巧Visual_C++_6[1].0_编程实例与技巧Visual_C++_6[1].0_编程实例与技巧Visual_C++_6[1].0_编程实例与技巧
C++ SerialEnum 串口枚举实例
C++教程_谭浩强版 清华大学 C++教程_谭浩强 C++教程_谭浩强
C++入门基础_30分钟入门教程 C++入门基础_30分钟入门教程
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。
16个C++实例,可供初学者进行学习参考。
C++程序设计教程_第二版_钱能课后习题答案 第1章至第二章,本人学习时编写的,仅供大家参考,如有雷同,实属巧合。
程序设计基础8 结构体共用体和枚举类型(2015春).ppt
c++实例教程
openGL编程实例教程 介绍编程环境实例