#include <iostream> #include <cstdlib> #include <ctime> using namespace std; enum ZhuangTai {WIN, LOSE, CON, UNKNOW}; struct Manager { int num; int ya; ZhuangTai zt; Manager() { num = 0; ya = 0; zt = UNKNOW; } }; void Welcome(); int SuiJi(); Manager PanDuan(Manager, int); Manager Over(Manager); bool again(); int main() { int dianSu= 0; Manager money; Welcome(); cout <<"客官您这次带了多少钱来玩?" << endl; cin >> money.num; while(cin.fail()) { cin.sync(); cin.clear(); cout <<"您开玩笑呢? 请输入一个数字。(PS)本店不接受超过20亿的玩家,赌太大犯法的~" << endl; cin>> money.num; } do { cout << "你一共有" << money.num <<"块钱, 这局您赌注是多少呢?"<< endl; cin >> money.ya; while(cin.fail() || (money.ya > money.num)) { cin.sync(); cin.clear(); if(money.ya > money.num) { cout << "你没有这么多钱!重新下注吧!:" << endl; } else { cout <<"您开玩笑呢? 请输入一个数字。(PS)本店不接受超过20亿的玩家,赌太大犯法的~:" << endl; } cin>> money.ya; } cout << "你的赌注是" << money.ya << "块!" << endl; dianSu = SuiJi(); money = PanDuan(money, dianSu); } while(money.num > 0 && again()); if(money.num <= 0) cout << "哈哈, 你输光了, 没钱一边呆着去~!!" << endl; return 0; } void Welcome() { cout << " ╭════════════════╮/n ║ 欢迎来到赌博游戏 ║ /n ╭════════┤ ├═════════╮/n"; cout <<" ║ ║ 祝您赢钱多多 ║ ║/n ║ ║ 输也输的爽快 ║ ║/n ║ ╰════════════════╯ ║"<< endl; cout <<"游戏规则: 你有两个骰子,如果第一次就丢到7点,你赢"<< endl; cout << " 如果第一次就丢到2,3,12点,你输"<< endl; cout << " 如果丢到其他点数,则这个点数为你的目标数, 你要继续丢,/n 直到丢到这个目标数才算赢,但是不幸丢到7,你就输。"<< endl; cout << "════════════════════════════════════════"<< endl; } int SuiJi() { int x = 0, y = 0; cin.sync(); cout << "════════════════════════════════════════"<< endl; cout << "输入任意键开始丢骰子!" << endl; cin.get(); srand(time( 0)); x = 1+ rand()%6; cout << "你的第一个点数为:" << x ; y = 1 + rand()%6; cout <<"/t你的第二个点数为:" << y << endl; x+= y; cout << "这次你一共是" << x << "点" << endl; return x ; } Manager PanDuan(Manager money, int ds) { if(money.zt != CON) { switch(ds) { case 7: money.zt = WIN; return money= Over(money); break; case 2: case 3: case 12: money.zt = LOSE; return money= Over(money); break; default: money.zt = CON; return money = PanDuan(money, ds); break; } } else { cout << "你的目标数是-----------------------------------------"<< ds << "请继续丢骰子;"<<endl; int sj = SuiJi(); if(sj == 7) { money.zt = LOSE; return money= Over(money); } else if(sj == ds) { money.zt =WIN; return money= Over(money); } else { money.zt = CON; return money = PanDuan(money, ds); } } } Manager Over(Manager m) { if(m.zt == WIN) { cout << "恭喜你赢了! 这一局你赢得了" << m.ya << "块!" << endl; m.num += m.ya; cout << "你现在一共有" << m.num << "块!" << endl; m.zt = UNKNOW; return m; } else if(m.zt == LOSE) { cout << "不好意思输你输了! 这一局你输掉了" << m.ya << "块!" << endl; m.num -= m.ya; cout << "你现在一共有" << m.num << "块!" << endl; m.zt = UNKNOW; return m; } else { return m; } } bool again() { char ch; cout << "你要不要再玩一局?(y/n):"; cin >> ch; if(ch == 'y' || ch == 'Y') { cout << "好, 再接再厉!" << endl; return true; } else if(ch == 'n' || ch == 'N') { cout << "那算了, 欢迎下次再来~" << endl; return false; } else { cout <<"输入错误!" << endl; return false; } }