- ベストアンサー
CPPファイルのチンチロリン
cppの簡単な作品作りで作りやすそうな物を考えて 博打のチンチロリンを作ってみようと思ったんですけど classの時点でどう分ければいいか混乱してきました・・^^; ションベンは無しで見もなしでCPUは1~2人の方向で考えてます 今も少しずつ案を練っていますが皆さんのアイデアを少しでも頂いて参考にできれば光栄です 是非意見のある方お願いいたしますm(_ _)m
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#include <iostream> #include <cmath> #include <vector> #include <string> using namespace std; struct Me{ enum Me_type{_me,_zoro,_123,_456,_menashi,_shon}; int me; Me_type me_type; void judge(int x,int y,int z){ if(x==y && y==z && z==x){me_type=_zoro;me=x;} else if(x==y){me_type=_me;me=z;} else if(y==z){me_type=_me;me=x;} else if(z==x){me_type=_me;me=y;} else if(x+y+z==6 && x*y*z==6){me_type=_123;me=0;} else if(x+y+z==15 && x*y*z==120){me_type=_456;me=0;} else{me_type=_menashi;me=0;} } static int shobu(Me me1, Me me2){return rand()%7-3;} // ここで目ごとの倍率を計算(未実装) }; struct Player{ Player(int motigane,string name):kane(motigane),namae(name){} int kane;string namae;int kakekin;bool oya; Me me; virtual void play(){ if(oya){cout<<namae<<"は親です"<<endl;} else{cout<<namae<<"は"<<kakekin<<"万円かけました"<<endl;} for(int i=0;i<3;++i){ furu(i); if(me.me_type!=Me::_menashi){cout << me.me_type<<endl;break;} } cout << "結果: " << me.me_type << "で" <<me.me << endl; } virtual int furu(int c){ cout<<namae<<"が" << (c+1) << "回目、振りました。目は: ";int m[3];for(int i=0;i<3;++i){m[i]=rand()%6+1;cout<<m[i];}cout<<endl; me.judge(m[0],m[1],m[2]); } }; struct PlayerHuman:Player{ PlayerHuman(int motigane,string name):Player(motigane,name){} int furu(int c){cout<<"振れ! (Enter)"<<endl;cin.get();Player::furu(c);} void play(){if(!oya){cout<<"いくら? ";cin>>kakekin;}Player::play();} };
その他の回答 (1)
- talepanda
- ベストアンサー率58% (45/77)
(続き) struct PlayerCom:Player{ PlayerCom(int motigane,string name):Player(motigane,name){} void play(){if(!oya){kakekin=rand()%100;}Player::play();} }; struct Ba{ int ninzu; int oya; vector<Player*> players; Ba(int n):ninzu(n){players.resize(ninzu);} void start(){ for(int i=0;i<ninzu;++i){players[i]->oya=(i==oya);} while(true){ for(int i=0;i<ninzu;++i){players[i]->play();} int oya_m=0; for(int i=0;i<ninzu;++i){ if(i==oya){continue;} int bairitsu=Me::shobu(players[oya]->me,players[i]->me); int m=bairitsu*players[i]->kakekin; players[i]->kane+=m;players[oya]->kane-=m; oya_m-=m; cout << players[i]->namae << "は" << m << "もうかったか損した。所持金は" << players[i]->kane << "万円" <<endl; } cout << players[oya]->namae << "は" << oya_m <<"もうかったか損した。所持金は" << players[oya]->kane << "万円" << endl; char a; cout<<"続ける[y/n]? "; cin >> a;if(a=='n')break; } } }; int main(){ srand(time(0)); Ba* ba=new Ba(3); ba->players[0]=new PlayerHuman(10000,"オレ様"); ba->players[1]=new PlayerCom(100,"かも"); ba->players[2]=new PlayerCom(100,"ねぎ"); ba->oya=0; ba->start(); } (笑)
お礼
ありがとうございます^^ とても参考になりました^^