游戏规则:玩家投两次骰子,将点数相加,如果和为7或者11就赢了,为2,3,12就输了,为4568910,就再投一次,直到投到你自己第一次投到的点数(4568910)才算胜利,如果投到7,则游戏者输。
要求:用RollDice函数 模拟投的两次骰子,Game函数模拟进行一次游戏。主函数中要玩家选择继续游戏还是退出游戏,最好还要限速游戏获胜次数
typedef enum{WIN, LOSE, TIE} GameStatus;// WIN:赢,LOSE:输,TIE:平局
在实现时可声明骰子游戏类DiceGame,将上面讲的函数作为类的辅助函数,类中含方法Game(),用来运行游戏,下面为用伪代码描述的整个游戏的参考流程。
//最好带注释
谁能帮我用c++写一个小游戏,骰子的,高分悬赏谢谢啦!!!最好带注释
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 克克计较 2020-04-14 01:52关注
#include <iostream> #include <ctime> #include <cstdlib> using std::cout; using std::cin; using std::endl; typedef enum { WIN, LOSE, TIE }GameStatus; int RollDice() { int dice1, dice2; srand(time(0)); dice1 = 1 + rand() % 6; srand(time(0)); dice2 = 1 + rand() % 6; return dice1 + dice2; } class DiceGame { public: DiceGame() { m_lastSum = -1; } GameStatus Game() { GameStatus ret; int sum = RollDice(); if (m_lastSum != -1) cout << "上一次点数和为 " << m_lastSum << ", 此次的点数和为 " << sum << endl; else if (m_lastSum == -1) cout << "此次的点数和为 " << sum << endl; if (m_lastSum == -1) { if (sum == 7 || sum == 11) ret = WIN; else if (sum == 2 || sum == 3 || sum == 12) ret = LOSE; else { ret = TIE; m_lastSum = sum; } } else { if (sum == m_lastSum) ret = WIN; else ret = LOSE; m_lastSum = -1; } return ret; } private: int m_lastSum; }; int main(int argc, char* argv[]) { char input; const char* result[] = {"本次赢了", "本次输了", "本次平局"}; DiceGame instance; cout << "开始游戏:" << endl; while(1) { cout << result[instance.Game()] << endl; cout << "是否继续游戏?(输入q退出游戏,输入其他字符继续游戏):"; cin.get(input); if (input == 'q') { cout << "游戏结束!" << endl; break; } else if (input != '\n') // 防止用户不输入任何字符就直接输入回车键 { cin.clear(); cin.ignore(1024, '\n'); } } return 0; }
解决 2无用
悬赏问题
- ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
- ¥15 gdf格式的脑电数据如何处理matlab
- ¥20 重新写的代码替换了之后运行hbuliderx就这样了
- ¥100 监控抖音用户作品更新可以微信公众号提醒
- ¥15 UE5 如何可以不渲染HDRIBackdrop背景
- ¥70 2048小游戏毕设项目
- ¥20 mysql架构,按照姓名分表
- ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
- ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
- ¥15 linux驱动,linux应用,多线程