65,202
社区成员




**************************类模块head.h*****************************
#include<iostream>
using namespace std;
enum c_h_s{cloth,hammer,scissors,game,help,instructions,quit};
class Game //构造类
{
public:
Game();
enum c_h_s select();
enum c_h_s mach();
void instruct();
int won(enum c_h_s,enum c_h_s);
void gamee(int,int,int);
void helpp();
void solution();
private:
int win;
int lose;
int tie;
enum c_h_s player;
enum c_h_s machine;
};
*****************成员函数定义模块define.cpp************************
#include<iostream>
using namespace std;
Game::Game() //初始化数据成员
{
win=0;
lose=0;
tie=0;
}
void Game::instruct()
{
cout<<endl;
cout<<" "<<"**** 石头 剪刀 布 **** "<<endl;
cout<<"在这个游戏中"<<endl;
cout<<"c 表示布"<<endl;
cout<<"h 表示石头"<<endl;
cout<<"s 表示剪刀."<<endl;
cout<<"游戏者和机器都只选择 c,h,s中的一个.如果二者的选择相同"<<endl;
cout<<"那么这一局就是平局.此外:"<<endl;
cout<<"\"布覆盖石头\"(布获胜)."<<endl;
cout<<"\"石头破坏剪刀\"(石头获胜)."<<endl;
cout<<"\"剪刀剪碎布\"(剪刀获胜)."<<endl;
cout<<endl;
cout<<"还有其它的选择是:"<<endl;
cout<<"g 表示游戏的结果(至今获胜的次数)"<<endl;
cout<<"p 可获得帮助"<<endl;
cout<<"i 可获得游戏方法的指导信息"<<endl;
cout<<"q 表示退出游戏."<<endl;
cout<<"这个游戏一直重复到游戏者选择 q 为止."<<endl;
cout<<"祝你好运!"<<endl; //游戏结束
}
enum c_h_s Game::select()
{
char c;
enum c_h_s p;
cout<<endl;
cout<<" 请选择 c,h,或s:";//提示用户输入字符
while((c=getchar())==' '||c=='\n'||c=='\t');
switch(c) {
case 'c':
p=cloth;
break;
case 'h': p=hammer;
break;
case 's': p=scissors;
break;
case 'g': p=game;
break;
case 'i': p=instructions;
break;
case 'q': p=quit;
break;
default: p=help;
break;
}
return(p);
}
enum c_h_s Game::mach()
{
static int i;
i=++i%3;
return((i==0)?cloth:((i==1)?hammer:scissors));
}
void Game::gamee(int win,int lose,int tie)
{
cout<<endl;
cout<<" 游戏结果如下:";
cout<<endl;
cout.width(7);
cout<<" 你获胜的次数是:"<<win<<endl;
cout.width(7);
cout<<" 我获胜的次数是:"<<lose<<endl;
cout.width(7);
cout<<" 平局的次数为: "<<tie<<endl;
cout.width(7);
cout<<" 游戏的总次数是:"<<win+lose+tie<<endl;
}
void Game::helpp()
{
cout<<endl;
cout<<" 你可以输入下列的字符:"<<endl;
cout<<" c 表示布"<<endl;
cout<<" h 表示石头"<<endl;
cout<<" s 表示剪刀"<<endl;
cout<<" g 查看游戏结果"<<endl;
cout<<" p 打印出这些信息"<<endl;
cout<<" i 重新打印出游戏指导信息"<<endl;
cout<<" q 退出游戏"<<endl;
}
int Game::won(enum c_h_s player,enum c_h_s machine)
{
int victory;
if(player==cloth)
victory=machine==hammer;
else if(player==hammer)
victory=machine==scissors;
else victory=machine==cloth;
return(victory);
}
void Game::solution()
{
instruct();
while((player=select())!=quit)
switch(player)
{
case cloth:
case hammer:
case scissors:
machine=mach();
if(player==machine)
{
++tie;
cout<<endl;
cout<<"平局";
}
else if(won(player,machine))
{
++win;
cout<<endl;
cout<<"你获胜";
}
else {
++lose;
cout<<endl;
cout<<"我获胜";
}
case game:
gamee(win,lose,tie);
break;
case instructions:
instruct();
break;
case help:
helpp();
break;
}
gamee(win,lose,tie);
cout<<endl;
cout<<endl;
cout<<"BYE!"<<endl;
}
********************主函数定义模块main.cpp**************************
#include<iostream>
using namespace std;
int main()
{
Game g;
g.solution();
return 0;
}