重温C++---骰子游戏---ShinePans
//this is a program witch played by two people //二人游戏,若第一个抛骰子,抛两次的和为7或11则第一人直接胜利,第二人直接失败 //若第一个人抛骰子,抛两次的和为2,3或12,则第一个人直接失败,第二人胜利 //若第一个人抛筛子,抛两次的和以上均不是,则由第二个人抛,直到有一方胜利 #include <iostream> #include <stdlib.h> #include <ctime> //获取系统时间的头文件 #include <windows.h> //Sleep 函数 #include <conio.h> //_kbhit 获取键盘敲击 using namespace std; int RollDice(); //函数原型 void SetSeed(); void PlayGame(); int RollDice() //抛骰子函数 { int die1 = 1 + rand() % 6; int die2 = 1 + rand() % 6; int sum = die1 + die2; cout << "Player rooled " << die1 << "+" << die2 << "=" << sum << endl; return sum; } void SetSeed() //设置种子函数 利用系统时间设置随机种子 { srand((unsigned)time(NULL)); //获得系统时间设置种子 } enum GameStatus{WIN,LOSE,PLAYING}; //枚举游戏状态; void PlayGame() { int sumA = 0, sumB = 0, game = 1; //game为一个旗标 ,当为1时持续投掷 GameStatus status = PLAYING; while (status == PLAYING) { SetSeed(); //设置种子 cout << "请AAAAAAAA投掷:\n(按任意键开始投掷,按任意键结束投掷)\n"; system("pause"); while (game) { sumA = RollDice(); Sleep(20); if (_kbhit()) { game = 0; } } game = 1; if (sumA == 7 || sumA == 11) { status = WIN; cout << "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA赢了" << endl; } else if (sumA == 2 || sumA == 3 || sumA == 12) { status = LOSE; cout << "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB赢了" << endl; } else { cout << "请BBBBBBBBBB投掷 :\n(按任意键开始投掷,按任意键结束投掷)\n"; system("pause"); while (game) { Sleep(20); sumB = RollDice(); if (_kbhit()) { game = 0; } } game = 1; if (sumB == 7 || sumB == 11) { status = WIN; cout << "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB赢了" << endl; } else if (sumB == 2 || sumB == 3 || sumB == 12) { status = WIN; cout << "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA赢了" << endl; } else ; //do nothing; 继续下一轮 } } } int main() { char x; PlayGame(); system("pause"); cout << "再来一盘吗? \n" << "(Y/N):\n" << endl; while (1) { if (_kbhit()) { x = _getch(); if ((x == 'y') || (x == 'Y')) { PlayGame(); } if ((x == 'n') || (x == 'N')) { system("pause"); return 0; } } } return 0; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。