C 剪刀石头布游戏课程设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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();
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)); }
10
void Game::gamee(int win,int lose,int tie)
private: int win; int lose; int tie; enum c_h_s player; enum c_h_s machine;
};
8
*****************成员函数定义模块 define.cpp************************ #include<iostream> using namespace std;
++tie; cout<<endl; cout<<"平局"; } else if(won(player,machine)) { ++win; cout<<endl; cout<<"你获胜"; } else { ++lose; cout<<endl; cout<<"我获胜"; } case game: gamee(win,lose,tie);
华科学院信息管理与信息系统专业
《程序设计综合课程设计》报告
(2011/2012 学年 第一学期)
学生姓名: 学生班级: 学生学号: 指导教师:
王奥辉 信息管理 102202H
201022040217 薛颂东
2011 年 12 月 30 日
1
锤
子 剪 刀 布 游 戏
2
目录
一、设计课题……………………………………………………… 4 二、设计要求……………………………………………………… 4 三、设计过程……………………………………………………… 4 四、流程图………………………………………………………… 5 五、功能模块……………………………………………………… 6 六、本次设计的评价与收获……………………………………… 6 附录一 …………………………………………………………… 7 附录二 …………………………………………………………… 8
三、设计过程
本次设计主要参考了网上搜索的资料,但搜索的资料并不符合课程设计要 求,所以就要求我们运用我们所学知识按照课程设计要求改进,生成 C++面向对 象的程序文件。
首先,我根据网上的资料,把程序的流程图画出来。把程序分成若干的功能 块。每个功能块能实现不通的功能,各功能块之间能够相互的调用。功能块之间 的合理组合实现了整个游戏的功能。然后再定义各个功能块的作用,再根据作用 用 C++语言实现其功能。并编译与链接各功能块,各功能块编译与链接正确后再 把它们链接成一个工程。
6
(附录一)参考文献
1 谭浩强著. C 程序设计(第三版).北京:清华大学出版社,2005 2 谭浩强著. C 程序设计题解与上机指导(第三版)北京:清华大学出版社,2005 3 谭浩强著. C++面向对象程序设计.北京:清华大学出版社,2009
7
(附录二)程序源代码:
**************************类模块 head.h***************************** #include<iostream> using namespace std; enum c_h_s{cloth,hammer,scissors,game,help,instructions,quit}; class Game //构造类 {
cout.width(7);
cout<<"
游戏的总次数是:"<<win+lose+tie<<endl;
}
void Game::helpp()
{
cout<<endl;
cout<<"
你可以输入下列的字符:"<<endl;
cout<<"
c 表示布"<<endl;
cout<<"
h 表示锤子"<<endl;
cout<<"
12
break; case instructions:
instruct(); break; case help: helpp(); break; } gamee(win,lose,tie); cout<<endl; cout<<endl; cout<<"BYE!"<<endl; }
********************主函数定义模块 main.cpp**************************
{
cout<<endl;
cout<<"
游戏结果如下:";
cout<<endl;
cout.width(7);
cout<<"
你获胜的次数是:"<<win<<endl;
cout.width(7);
cout<<"
我获胜的次数是:"<<lose<<endl;
cout.width(7);
cout<<"
平局的次数为: "<<tie<<endl;
int victory; if(player==cloth)
victory=machine==hammer; else if(player==hammer)
11
victory=machine==scissors; else victory=machine==cloth; return(victory); }
3
一、设计课题
锤子剪刀布(游戏)
二、设计要求
1、开发平台: VC++ 6.0 2、对设计内容的要求 ① 源文件要采用多文件的工程结构;在源程序中必须使用类,输入输出要符合 C++语言的特性; ② 功能必须完善,程序代码要有相应的注释。 3、对设计说明书的要求 ① 设计过程、流程图及源代码。 ② 对本次设计的评价、此次设计的收获与建议。 4、源文件要采用多文件的工程结构;在源程序中必须使用类,输入输出要符合 C++语言的新特性。
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) {
void Gamபைடு நூலகம்::solution() {
instruct(); while((player=select())!=quit)
switch(player) {
case cloth: case hammer: case scissors:
machine=mach(); if(player==machine) {
六、本次设计的评价与收获
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培 养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计 过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合 作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职 业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深 体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈 开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础. 通过这次模具设计,本人在多方面都有所提高。通过这次模具设计,综合运用本 专业所学课程的理论和生产实际知识进行一次冷冲压模具设计工作的实际训练 从而培养和提高学生独立工作能力,巩固与扩充了冷冲压模具设计等课程所学的 内容,掌握冷冲压模具设计的方法和步骤,掌握冷冲压模具设计的基本的模具技 能懂得了怎样分析零件的工艺性,怎样确定工艺方案,了解了模具的基本结构, 提高了计算能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了全 面的复习,独立思考的能力也有了提高。
#include<iostream> using namespace std;
int main() {
Game g; g.solution(); return 0; }
13
运行结果: 1、未输入任何命令
2、输入命令 c
3、输入命令 s
14
4、输入命令 q,结束游戏。
15
16
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; //游戏结束
本次设计中构造了一个 Game 类,将实现游戏的一些过程函数封装成类的函 数,将在游戏里面需要的变量变成 C++程序里面的数据成员。然后分块将各个功 能实现。
4
5
五、功能模块
输入模块: 由键盘输入代表相应功能的字母,回车; 运算模块: 由编写的程序根据所输入的字母进行运算; 输出模块: 将运行结果输出到对话框中。
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;
9
}
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) {
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)); }
10
void Game::gamee(int win,int lose,int tie)
private: int win; int lose; int tie; enum c_h_s player; enum c_h_s machine;
};
8
*****************成员函数定义模块 define.cpp************************ #include<iostream> using namespace std;
++tie; cout<<endl; cout<<"平局"; } else if(won(player,machine)) { ++win; cout<<endl; cout<<"你获胜"; } else { ++lose; cout<<endl; cout<<"我获胜"; } case game: gamee(win,lose,tie);
华科学院信息管理与信息系统专业
《程序设计综合课程设计》报告
(2011/2012 学年 第一学期)
学生姓名: 学生班级: 学生学号: 指导教师:
王奥辉 信息管理 102202H
201022040217 薛颂东
2011 年 12 月 30 日
1
锤
子 剪 刀 布 游 戏
2
目录
一、设计课题……………………………………………………… 4 二、设计要求……………………………………………………… 4 三、设计过程……………………………………………………… 4 四、流程图………………………………………………………… 5 五、功能模块……………………………………………………… 6 六、本次设计的评价与收获……………………………………… 6 附录一 …………………………………………………………… 7 附录二 …………………………………………………………… 8
三、设计过程
本次设计主要参考了网上搜索的资料,但搜索的资料并不符合课程设计要 求,所以就要求我们运用我们所学知识按照课程设计要求改进,生成 C++面向对 象的程序文件。
首先,我根据网上的资料,把程序的流程图画出来。把程序分成若干的功能 块。每个功能块能实现不通的功能,各功能块之间能够相互的调用。功能块之间 的合理组合实现了整个游戏的功能。然后再定义各个功能块的作用,再根据作用 用 C++语言实现其功能。并编译与链接各功能块,各功能块编译与链接正确后再 把它们链接成一个工程。
6
(附录一)参考文献
1 谭浩强著. C 程序设计(第三版).北京:清华大学出版社,2005 2 谭浩强著. C 程序设计题解与上机指导(第三版)北京:清华大学出版社,2005 3 谭浩强著. C++面向对象程序设计.北京:清华大学出版社,2009
7
(附录二)程序源代码:
**************************类模块 head.h***************************** #include<iostream> using namespace std; enum c_h_s{cloth,hammer,scissors,game,help,instructions,quit}; class Game //构造类 {
cout.width(7);
cout<<"
游戏的总次数是:"<<win+lose+tie<<endl;
}
void Game::helpp()
{
cout<<endl;
cout<<"
你可以输入下列的字符:"<<endl;
cout<<"
c 表示布"<<endl;
cout<<"
h 表示锤子"<<endl;
cout<<"
12
break; case instructions:
instruct(); break; case help: helpp(); break; } gamee(win,lose,tie); cout<<endl; cout<<endl; cout<<"BYE!"<<endl; }
********************主函数定义模块 main.cpp**************************
{
cout<<endl;
cout<<"
游戏结果如下:";
cout<<endl;
cout.width(7);
cout<<"
你获胜的次数是:"<<win<<endl;
cout.width(7);
cout<<"
我获胜的次数是:"<<lose<<endl;
cout.width(7);
cout<<"
平局的次数为: "<<tie<<endl;
int victory; if(player==cloth)
victory=machine==hammer; else if(player==hammer)
11
victory=machine==scissors; else victory=machine==cloth; return(victory); }
3
一、设计课题
锤子剪刀布(游戏)
二、设计要求
1、开发平台: VC++ 6.0 2、对设计内容的要求 ① 源文件要采用多文件的工程结构;在源程序中必须使用类,输入输出要符合 C++语言的特性; ② 功能必须完善,程序代码要有相应的注释。 3、对设计说明书的要求 ① 设计过程、流程图及源代码。 ② 对本次设计的评价、此次设计的收获与建议。 4、源文件要采用多文件的工程结构;在源程序中必须使用类,输入输出要符合 C++语言的新特性。
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) {
void Gamபைடு நூலகம்::solution() {
instruct(); while((player=select())!=quit)
switch(player) {
case cloth: case hammer: case scissors:
machine=mach(); if(player==machine) {
六、本次设计的评价与收获
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培 养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计 过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合 作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职 业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深 体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈 开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础. 通过这次模具设计,本人在多方面都有所提高。通过这次模具设计,综合运用本 专业所学课程的理论和生产实际知识进行一次冷冲压模具设计工作的实际训练 从而培养和提高学生独立工作能力,巩固与扩充了冷冲压模具设计等课程所学的 内容,掌握冷冲压模具设计的方法和步骤,掌握冷冲压模具设计的基本的模具技 能懂得了怎样分析零件的工艺性,怎样确定工艺方案,了解了模具的基本结构, 提高了计算能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了全 面的复习,独立思考的能力也有了提高。
#include<iostream> using namespace std;
int main() {
Game g; g.solution(); return 0; }
13
运行结果: 1、未输入任何命令
2、输入命令 c
3、输入命令 s
14
4、输入命令 q,结束游戏。
15
16
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; //游戏结束
本次设计中构造了一个 Game 类,将实现游戏的一些过程函数封装成类的函 数,将在游戏里面需要的变量变成 C++程序里面的数据成员。然后分块将各个功 能实现。
4
5
五、功能模块
输入模块: 由键盘输入代表相应功能的字母,回车; 运算模块: 由编写的程序根据所输入的字母进行运算; 输出模块: 将运行结果输出到对话框中。
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;
9
}
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) {