-石头—剪刀—布游戏
1
石头剪刀布游戏
1.课
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
简介
在游戏中,孩子们用手
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示石头、剪刀或布中的一个,出拳头表示石头,伸出两根手指表示剪刀,伸手表示布,孩子们面对面地从1数到3时做出他们的选择,如果所作的选择是一样的,则表示平局,否则就按如下规则决定胜负:
(1) 石头砸坏剪刀;
(2) 剪刀剪碎布;
(3) 布覆盖石头。
编程实现计算机与人进行游戏。
2.
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
过程
(一)系统功能分析:
游戏中可能出现的选择情况都可以估计到,因此,定义一个枚举类型把游戏中可能出现的选择项都列出来,包括cloth(布),hammer(锤子),scissors(剪刀),game(游戏结果),help(帮助),instructions(游戏方法指导),quit(退出游戏)。
例enum c_h_s{cloth,hammer,scissors,game
,help,instructions,quit};
定义一个类Game,把需要让外界调用的成员函数指定为公用的,所以,类中的
公用部分应包含玩家选择命令(select( ))、机器选择(mach( ))、提示游戏
规则(instruct( ))、判断输赢(Win_lose( ))、游戏结果(gameshow( ))、
帮助(gamehelp( ))等成员函数,另外有一个用来赋初值构造函数;而为了保
证类的封装性和信息的隐蔽,应把数据成员指定为私有的如图1所示。
2
(二)系统流程分析:
图1、定义类Game的函数调用,函数流程图如下所示:
Game( ) Game类
select( ) int win;
mach( ) int lose;
int tie; gameshow( )
enum c_h_s player; gamehelp( )
enum c_h_s machine;
Win_lose( )
solution( )
instruct( )
图2、实现机器对锤子、剪刀或布选择的算法流程图,如下所示:
3
初始化随机种子
定义变量i并随机初始化
i=i%3
当i=0时,返回cloth
当i=1时,返回hammer
当i=2时,返回scissors
图3、游戏选择函数,算法流程图:
定义变量c获取用户输入选择
定义枚举变量p用以返回玩家选择
switch(c)
返返返返返返返回回回回回回回“““““““布石剪游游退游” 头刀戏戏出戏
” ” 结介” 帮
果绍助
” ” ”
return p
图4、输出游戏结果流程图如下所示:
4
输出玩家获胜次数
输出电脑获胜次数
输出平局次数
输出游戏次数
图5、主函数实现流程图如下所示:
创建Game类对象g
调用对象g的成员函数soltuion( )
、统计游戏从开始运行到现在运行的结果流程图如下所示: 图6
5
instruct( )
N
(player=select( ))!=quit
Bye
Y
switch(player)
cloth hammer scissors game instructions hel
p
machine = mach(); 输出游戏输出游戏输出帮
统计结果 规则 助文件
Y N
player==machi
ne Y N 累计平局次数 win_lose( )
输出“平局” 累计电脑获胜次数 累计玩家获胜次数
输出电脑获胜 输出玩家获胜
输出游戏统计结果
(三)具体设计分析如下:
1.1 Game类实现
1.1.1 数据成员说明:
6
int win; // 赢的次数
int lose; //输的次数
int tie; //平局次数
enum c_h_s player; //玩家的选择
enum c_h_s machine; //机器的选择
1.1.2 成员函数说明与实现
1.1.2.1 构造函数Game( )
函数:Game( )功能:对赢、输、平局的数据成员初始化为0。 1.1.2.2 成员函数select( )
函数:enum c_h_s select();//玩家选择一个命令
功能:获取玩家选择一个命令(即在石头、剪刀、布、游戏结果、游戏
帮助、游戏介绍、退出中做出选择),并将选择的结果返回。 1.1.2.3 成员函数mach( )
函数:enum c_h_s mach( )
功能:实现机器对锤子、剪刀或布选择。
1.1.2.4 成员函数gameshow(int win,int lose,int tie )
函数: void gameshow(int,int,int)
功能:输出游戏结果,包含有赢、输、平局以及游戏总次数的情况。 1.1.2.5 成员函数gamehelp( )
函数:void gamehelp( )
功能:输出各字符所表示的意义,以帮助玩家进行选择。 提示信息如下:
c 表示布
h 表示锤子
s 表示剪刀
g 查看游戏结果
p 可获得游戏帮助
I 游戏指导信息
q 退出游戏
算法:直接用cout语句 输出。
1.1.2.6 成员函数win_lose(enum c_h_s player,enum c_h_s machine )
函数:int win_lose(enum c_h_s,enum c_h_s)
功能:读取玩家和电脑的选择,根据游戏规则判断玩家赢、输或平局,
7
返回判断结果。
1.1.2.7 成员函数instruct( ) 函数: void instruct( )
功能:对游戏规则进行说明。
游戏规则:
**** 剪刀 锤子 布 ****
在这个游戏中
表示布 c
h 表示锤子
表示剪刀. s
游戏者和机器都只选择 c,h,s中的一个.如果二者的选择相同,那么
这一局就是平局.此外:
"布包锤子"(布获胜).
"锤子打烂剪刀"(锤子获胜).
"剪刀剪布"(剪刀获胜).
还有其它的选择是:
g 表示游戏的结果(至今获胜的次数)
p 可获得帮助
i 可获得游戏方法的指导信息
q 表示退出游戏
这个游戏一直重复到游戏者选择 q 为止.
祝你好运!
算法:可用cout语句输出上述内容。 1.1.2.8 成员函数solution( )
函数:void solution( )
功能:统计游戏从开始运行到现在运行的结果,并输出每局的游戏结果。
1.2 主函数实现
功能:创建游戏类对象g,调用对象g的成员函数solution( ),开始游戏。
3.具体设计
8
/* 对游戏Game类的成员结构声明.h
#ifndef GAME int win_lose(enum c_h_s,enum c_h_s);
#define GAME void instruct( ); enum void solution( ); c_h_s{cloth,hammer,scissors,game,help,instr protected: uctions,quit}; int win; class Game int lose; { int tie; public: enum c_h_s player;
Game(); enum c_h_s machine;
enum c_h_s select(); };
enum c_h_s mach(); #endif
void gameshow(int,int,int);
void gamehelp( );
/* Game类游戏的操作的函数定义.cpp
#include
#include }
#include return p;
#include"head.h" }
Game::Game()
{ enum c_h_s Game::mach()
win=0; {
lose=0; srand((unsigned)time(NULL));
tie=0; int i=rand(); } i=i%3;
enum c_h_s Game::select() if(i==0)
{ return cloth;
char c; if(i==1)
c_h_s p; return hammer;
cout<<" "<>c;
switch(c) void Game::gameshow(int win, int lose, int
{ tie)
case's':p=scissors;break; {
case'h':p=hammer;break; cout< g.solution(); #include"head.h" return 0;
int main() }
{
4.测试
11
1、游戏规则及说明截图:
图1、游戏规则及说明
2、游戏运行及统计结果截图
图 2、游戏运行及统计结果
3、游戏帮助截图:
12
图3、游戏帮助
5.
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
本设计在编程过程中使用到:?在头文件head.h中使用到条件预处理命令;?创建类对函数的整体定义,以及类的封装性;?用到了“srand((unsigned)time(NULL))”表示随机函数。
本设计完成了设计所要求的实现了计算机与人进行游戏的编程,通过对程序的测试,显示结果正确,符合设计要求。
设计体会
参考文献
[1]钱能.C++程序设计教程.北京:清华大学出版社,2004,8
[2]谭浩强.C语言教程.北京:清华大学出版社,2002,4
13