• ベストアンサー

CPPファイルのチンチロリン

cppの簡単な作品作りで作りやすそうな物を考えて 博打のチンチロリンを作ってみようと思ったんですけど classの時点でどう分ければいいか混乱してきました・・^^; ションベンは無しで見もなしでCPUは1~2人の方向で考えてます 今も少しずつ案を練っていますが皆さんのアイデアを少しでも頂いて参考にできれば光栄です 是非意見のある方お願いいたしますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • talepanda
  • ベストアンサー率58% (45/77)
回答No.1

#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)
回答No.2

(続き) 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(); } (笑)

twenty
質問者

お礼

ありがとうございます^^ とても参考になりました^^

関連するQ&A

専門家に質問してみよう